Flow

@glitchr/flowjs · read at bc6ed6a

API reference

Read from the sources by JSDoc (jsdoc -X src/js): every function, method and property a module puts on its global, in the order of the source, each linked to its line. Uncommented functions show their signature alone; the options are described in the manual.

Core

  • Flow

    Flow, the core every module stands on: units, scrollers and their listeners, one animation frame for every measurement, the programmatic scroll, the address's hash, the page's (re)loads.

    32 methods

Navigation

  • Transparent

    Transparent, the navigation without page loads: links and forms fetched in the background and swapped in place, the history kept, the head and scripts in step, a progress bar that never blinks, neste…

    41 options · 75 methods · 4 events · 2 properties

  • FlowFrame

    FlowFrame, a website in the website: a frame of the page whose links and forms load their page into the frame alone, with its own history and address.

    5 options · 20 methods · 2 events · 1 property

Scrolling

  • Sticky

    Sticky, the effects of the scroll on a page: a header that steps aside and comes back, an address that follows the section read, magnets, widgets, scroll-percent triggers, swipes, autoscroll.

    42 options · 46 methods · 2 events

  • StickyStops

    StickyStops, places a scroll comes to rest on: the scroll settled to the nearest stop once it rests, momentum included, and the keys going from one stop to the next.

    18 options · 45 methods · 2 events · 2 properties

  • StickyScenes

    StickyScenes, scenes the scroll plays: a section whose stage stays pinned while the page scrolls through it, its progress in CSS and in events - or read sideways, by a horizontal scroll of its track.

    10 options · 18 methods · 2 events · 1 property

Lists

  • StickySortable

    StickySortable, sortable lists and trees: drag-and-drop with pointer events (mouse, pen, touch), the arrows on a handle for the keyboard, items moved between the levels of a tree.

    32 options · 42 methods · 1 event · 3 properties

Ajaxer

  • Ajaxer

    Ajaxer, named AJAX channels: a name with its address, method, throttle, debounce, loader and retries, sent with one call.

    7 options · 31 methods · 1 property

Cookie

  • Cookie

    Cookie, the cookies and the visitor's consent: categories, what each stores, features started at a grant and stopped at a withdrawal, the banner and its detailed section, in the site's own words.

    30 options · 50 methods · 4 events · 2 properties

Core

Flow

Flow.jquery() function

core.js:40

Flow.now() function

core.js:50

Flow.parseDuration(str) function

core.js:53

"250ms", "1s", "0.3", or several ("1s, 250ms"): the longest, in seconds.

Flow.debounce(func, wait, immediate) function

core.js:61

Flow.remToPixel(rem) function

core.js:77

Flow.emToPixel(em, el) function

core.js:78

Flow.percentToPixel(p, el) function

core.js:80

"15%" of the element's width (the window's without one). Up to 1.5 the number was not divided by 100: 15 times the width.

Flow.toMilliseconds(value) function

core.js:86

A duration in ms: "1s", "250ms", or a plain number of ms ("400", 400). NaN for what is unreadable.

Flow.parseToPixel(str, el) function

core.js:96

"90", "90px", "2rem", "1.5em", "15%", or several ("2rem, 90px"): the largest, in px. undefined for undefined.

Flow.toPixels(value, el, fallback) function

core.js:108

One value to px ("90", "90px", "2rem", "1.5em"); anything unreadable is the fallback.

Flow.scrollPadding(el) function

core.js:119

The scroll-padding of an element (the <html> element by default), in px: {top, left, right, bottom}.

Flow.isScrollableNode(node) function

core.js:144

Whether ONE node scrolls (content larger than its box, and overflow that scrolls (scroll or auto) - or the <html> element, which always may). The cheap layout comparison first: getComputedStyle, the expensive half, is only reached for the few elements that could qualify.

Flow.closestScrollable(el) function

core.js:156

The element itself if it scrolls, else the closest ancestor that does; the <html> element if it scrolls; undefined otherwise - and for an element that is no longer in the page (a node the navigation has just swapped out).

Flow.normalize(scroller) function

core.js:168

The window for the document, <html> or <body> (or nothing); the element otherwise.

Flow.element(scroller) function

core.js:175

The element to read scrollTop from and to scroll: <html> for the window.

Flow.viewport() function

core.js:182

The viewport's size, {width, height}, read once per frame.

Flow.frame(fn) function

core.js:204

Flow.cancelFrame(fn) function

core.js:219

Flow.onScroll(scroller, fn) function

core.js:299

fn(event, scroller) once per frame in which the scroller scrolled. The window for the page.

Flow.offScroll(scroller, fn) function

core.js:305

Flow.onInterrupt(scroller, fn) function

core.js:313

fn(event, scroller) at once when the reader takes over on the scroller.

Flow.offInterrupt(scroller, fn) function

core.js:317

Flow.onResize(fn) function

core.js:323

fn(event) once per frame in which the window was resized.

Flow.offResize(fn) function

core.js:324

Flow.onPage(fn) function

core.js:337

fn(moment) at each of those moments; now too when the document is parsed.

Flow.offPage(fn) function

core.js:342

Flow.scripted(scroller) function

core.js:400

Whether a script is scrolling the scroller, did within the last moment, or left it where it still is and has not been heard since.

Flow.userScroll(el) function

core.js:425

Whether the reader has the scroll of the element's scroller (true unless a script took it).

Flow.jump(scroller, top, left) function

core.js:435

Put the scroller somewhere at once, whatever the page's scroll-behavior. A script's move.

Flow.scrollTo(scroller, dict, callback) function

core.js:471

Scroll an element (the window by default) to {top, left}, at once or over a duration ("250ms"; or "duration-x", "duration-y"), or at a speed (px/s), along a jQuery easing ("swing"), then call back. The scroller's "user-scroll" is false meanwhile, and a wheel, a finger or a press stops the movement where it is and gives the scroll back to the reader - unless {hold: true}, a movement the reader's gesture does not take.

The callback is called once, however the movement ends, with {completed, reason, top, left}: reason "arrived" (completed: true, also when there was no way to go), "interrupted" (the reader took over) or "replaced" (another scroll of the same scroller began).

Flow.release(event, scroller) function

core.js:574

Flow.replaceHash(newHash, triggerHashChange, skipIfEmptyIdentifier) function

core.js:603

Change the address's #hash without a history entry (history.replaceState), keeping the query string. No element with that id: "hashfallback" is dispatched and the hash is left (or emptied). "hashchange" is dispatched unless told not to. True when the address changed.

Navigation

Transparent

transparent:load event

transparent.js:14

Told on the window once a page is swapped in (and at the first load): the moment to set up what the new page holds.

transparent.js:18

Told on the window when a link or a form is taken over, before its page is fetched.

transparent:beforeunload event

transparent.js:22

Told on the window before the page in place is left for the next one.

transparent:progress event

transparent.js:26

Told on the window at each step of the progress bar: detail {state} - "shown", "done", "hidden".

Transparent.isHeadlocked(el) function

transparent.js:392

Transparent.isRescueMode() function

transparent.js:427

Transparent.getData(uuid) function

transparent.js:428

Transparent.setData(uuid, data) function

transparent.js:433

Transparent.getResponseText(uuid) function

transparent.js:439

Transparent.getResponsePosition(uuid) function

transparent.js:454

Transparent.getResponse(uuid) function

transparent.js:470

Transparent.getLiveResponse(uuid) function

transparent.js:503

Transparent.setLiveResponse(uuid, htmlEl, scrollableXY) function

transparent.js:519

Transparent.clearLiveResponse() function

transparent.js:533

Transparent.getPrefetched(href) function

transparent.js:550

Transparent.setPrefetched(href, text) function

transparent.js:564

Transparent.clearPrefetched() function

transparent.js:576

Transparent.prefetch(href) function

transparent.js:583

Transparent.claimPrefetch(href, onSettled) function

transparent.js:643

Transparent.setResponse(uuid, responseText, scrollableXY, exceptionRaised) function

transparent.js:716

Transparent.setResponseText(uuid, responseText, exceptionRaised) function

transparent.js:810

Transparent.setResponsePosition(uuid, scrollableXY, exceptionRaised) function

transparent.js:842

Transparent.hasResponse(uuid) function

transparent.js:872

Transparent.invalidateResponses() function

transparent.js:915

Transparent.configure(options) function

transparent.js:926

Transparent.ready(options) function

transparent.js:1006

Transparent.addLayout() function

transparent.js:1055

Transparent.getLayout(dom) function

transparent.js:1066

Transparent.formInvalidity(form) function

transparent.js:1083

Why the browser refuses a form: each invalid control as "name: message".

"Invalid form submission." on its own said nothing about WHICH field, and the browser's own bubble is easily missed - it appears at the control, which may be off screen, and the next scroll dismisses it. The reasons are the browser's own (validationMessage), so they read in the visitor's language.

Transparent.refuseInvalidForm(form, el) function

transparent.js:1113

Refuse a submission the browser has already refused, and SAY SO.

Returning null here stops the submission for good: the page is never sent, and whatever else would have shown the reason does not run. In a plain form the browser's own interactive validation follows the click and puts its bubble on the first invalid control, but a form submitted by script - a jQuery .submit(), a requestSubmit() - never reaches it, and the visitor is left with a button that does nothing and an error in a console they will never open. reportValidity() is that same bubble, asked for explicitly: it names the control, focuses it and brings it on screen. Guarded, because a control that cannot be focused (hidden, in a closed disclosure) makes the browser refuse to show anything.

Transparent.findNearestForm(el) function

transparent.js:1144

transparent.js:1197

Transparent.preload(link, callback) function

transparent.js:1373

Transparent.findElementFromParents(el, parents, from) function

transparent.js:1413

Transparent.isPage(dom) function

transparent.js:1427

Transparent.isKnownLayout(dom) function

transparent.js:1437

Transparent.isCompatiblePage(dom, method, data) function

transparent.js:1446

Transparent.callback(fn, delay) function

transparent.js:1469

Transparent.activeTime(el) function

transparent.js:1475

Transparent.activeIn(activeCallback) function

transparent.js:1504

Transparent.activeOut(activeCallback) function

transparent.js:1540

Transparent.replaceCanvases(dom) function

transparent.js:1585

Transparent.adoptNode(node, target) function

transparent.js:1651

Transparent.whenScriptsSettled(callback) function

transparent.js:1691

Transparent.evalScript(el) function

transparent.js:1732

Transparent.rescue(dom) function

transparent.js:1778

Transparent.scrollTo(dict, el, callback) function

transparent.js:1818

Scroll an element (the window by default) through the core's engine, a tick later (the element rendered first).

Transparent.debounce property

transparent.js:1830

Transparent.findImages() function

transparent.js:1833

Transparent.lazyLoad(lazyloadImages) function

transparent.js:1862

Transparent.loadImages() function

transparent.js:1941

Transparent.transferAttributes(dom) function

transparent.js:1977

Transparent.onLoad(uuid, dom, callback, scrollTo, keepScroll) function

transparent.js:2075

Transparent.percentToPixel(p, el) function

transparent.js:2381

Transparent.scrollToHash(hash, options, callback, el) function

transparent.js:2385

Transparent.isElement(obj) function

transparent.js:2415

Transparent.getScrollableElement(el) function

transparent.js:2420

Transparent.getScrollableElementXY() function

transparent.js:2452

Transparent.ttl property

transparent.js:2565

Transparent.save(form) function

transparent.js:2660

Transparent.restore(form) function

transparent.js:2702

Transparent.markSent(form) function

transparent.js:2766

Transparent.settle() function

transparent.js:2778

Transparent.abandon() function

transparent.js:2808

Transparent.clear(form) function

transparent.js:2810

Transparent.restoreAll() function

transparent.js:2816

Transparent.saveAll() function

transparent.js:2822

Transparent.clearExpired() function

transparent.js:2827

Transparent.nestCanReplay(href) function

transparent.js:3940

Transparent.nestReplay(href) function

transparent.js:3949

Transparent.getReloadPosition() function

transparent.js:3988

Transparent.isOpen() function

transparent.js:4255

Transparent.getContainer() function

transparent.js:4270

Transparent.owns(e) function

transparent.js:4277

Transparent.notifyNavigated(href, title, info) function

transparent.js:4293

Transparent.notifyReady() function

transparent.js:5652

Transparent.open(href) function

transparent.js:5904

Transparent.navigate(href) function

transparent.js:5912

Transparent.close(goBack) function

transparent.js:6004

Transparent.inScope(href) function

transparent.js:6039

Transparent.leave(href) function

transparent.js:6051

FlowFrame

flow:frame:load event

frame.js:36

Told on the frame (it bubbles) after each page it shows: detail {url, title, frame}.

flow:frame:error event

frame.js:40

Told on the frame when no page came: detail {url, status}.

FlowFrame.defaults property

frame.js:59

FlowFrame.Frame(root, options) function

frame.js:78

FlowFrame.Frame#onClick(event) method

frame.js:92

FlowFrame.Frame#onSubmit(event) method

frame.js:93

FlowFrame.Frame#titleOf(el) method

frame.js:100

FlowFrame.Frame#current() method

frame.js:105

FlowFrame.Frame#click(event) method

frame.js:108

A link or a button of the frame: its chrome's buttons, a page's links.

FlowFrame.Frame#submit(event) method

frame.js:146

A form of a page in the frame, or the address field's.

FlowFrame.Frame#go(url, init, how) method

frame.js:175

Show a page in the frame: fetched, its block swapped in, the frame's history moved on.

FlowFrame.Frame#extract(text) method

frame.js:211

The block of a page the frame shows, or null for an answer that has none to show.

FlowFrame.Frame#show(html, scroll) method

frame.js:221

FlowFrame.Frame#travel(delta) method

frame.js:230

Back and forward: from memory, where the page's scroll was left; fetched again when it is not there.

FlowFrame.Frame#back() method

frame.js:239

FlowFrame.Frame#forward() method

frame.js:240

FlowFrame.Frame#reload() method

frame.js:241

FlowFrame.Frame#chrome() method

frame.js:244

The chrome: the address field says the frame's page, the buttons what they can do.

FlowFrame.Frame#loading() method

frame.js:258

.flow-frame-loading on the progress bar's timing: after delay, at least min. The function ends it.

FlowFrame.Frame#destroy() method

frame.js:270

FlowFrame.attach() function

frame.js:281

The frame of an element (made if needed).

FlowFrame.get() function

frame.js:287

FlowFrame.scan() function

frame.js:292

Attach every [data-flow-frame] of the document (or of an element) not attached yet.

Scrolling

Sticky

sticky:ready event

sticky.js:18

Told on the window once Sticky is set up on the page.

scrollpercent event

sticky.js:22

Told on a .sticky-scrollpercent-* element when the scroll crosses its percentage: detail {scroll, trigger, dir, percent} (trigger 0 from, 1 once, 2 every).

Sticky.percentToPixel(p, el) function

sticky.js:138

Sticky.getScrollPadding(el) function

sticky.js:140

Sticky.epsilon(x1, x0) function

sticky.js:144

Sticky.reset(el) function

sticky.js:145

Sticky.ready(options) function

sticky.js:159

Sticky.get(key) function

sticky.js:173

Sticky.set(key, value) function

sticky.js:181

Sticky.add(key, value) function

sticky.js:187

Sticky.remove(key, value) function

sticky.js:198

Sticky.configure(options) function

sticky.js:212

Sticky.compute(event) function

sticky.js:227

Sticky.overscrollTop(event, el) function

sticky.js:440

Sticky.overscrollBottom(event, el) function

sticky.js:446

Sticky.overscrollLeft(event, el) function

sticky.js:452

Sticky.overscrollRight(event, el) function

sticky.js:458

Sticky.closestToZero(numbers) function

sticky.js:468

Sticky.closestTo(x, numbers) function

sticky.js:469

Sticky.userScroll(el) function

sticky.js:486

Sticky.scrollTo(dict, callback, el) function

sticky.js:498

Scroll an element (the window by default) through the core's engine - unless a script has the scroll already. The callback is called once in every case with {completed, reason} (see Flow.scrollTo); reason "refused" when a script had the scroll and nothing was started.

Sticky.scrollToFirstSnap(el, callback) function

sticky.js:512

Sticky.getFirstSnap(el) function

sticky.js:520

Sticky.scrollToLastSnap(el, callback) function

sticky.js:528

Sticky.getLastSnap(el) function

sticky.js:535

Sticky.scrollToSnap(el, callback) function

sticky.js:543

Sticky.getSnap(el) function

sticky.js:549

Sticky.scrollToPreviousSnap(el, callback) function

sticky.js:557

Sticky.getPreviousSnap(el) function

sticky.js:562

Sticky.scrollToNextSnap(el, callback) function

sticky.js:571

Sticky.allowScrolling(el) function

sticky.js:592

False while the scroller (the window by default) is locked by disableScroll().

Sticky.enableScroll(el) function

sticky.js:597

Sticky.disableScroll(el) function

sticky.js:605

Sticky.getNextSnap(el) function

sticky.js:618

Sticky.onSwipe(el) function

sticky.js:633

Sticky.onScrollPercent(e) function

sticky.js:688

Sticky.onScrollSnap(e) function

sticky.js:759

Sticky.toMagnet(scroller, dict, aim) function

sticky.js:839

Take a scroller (the window by default) to {top, left}, a magnet's place, the way the scrollsnap_hold option says. Held (the default): the page carries .sticky-prevent-scroll and the reader's gesture does not stop the movement; the page is given back debounce after it ended. Not held (scrollsnap_hold: false): nothing is set on the page, and a wheel, a finger, a press or a key stops the movement where it is - the snap then waits for the scroll to rest before it acts again.

Sticky.getMagnetPositions(scroller, axis) function

sticky.js:930

Where the magnets of a scroller are along an axis ('y' by default): the scroll positions that meet them, in order, each once. Its own magnets: not those of a scroller inside it.

Sticky.getMagnets(el) function

sticky.js:1052

The magnets (.sticky-magnet) of an element, top to bottom: {element, offsetTop, offsetLeft, visible} - visible, the share of its scroller's box the magnet fills (0 to 1).

Sticky.onScrollDelta(e) function

sticky.js:1094

Sticky.onScrollDebounce(e) function

sticky.js:1508

Sticky.onWheel(e) function

sticky.js:1509

Sticky.onAutoscroll() function

sticky.js:1529

Sticky.onLoad(el) function

sticky.js:1639

Sticky.listen(el, full) function

sticky.js:1867

Hear a scroller (the window by default) scroll: every effect, or the scroll-percent triggers only.

Sticky.unlisten(el) function

sticky.js:1894

Stop hearing a scroller.

Sticky.trigger(target) function

sticky.js:1902

Run the effects now, as if the target's scroller had scrolled.

StickyStops

sticky:stop event

stops.js:166

Told on the scroller (it bubbles) at each glide to a stop: detail {scroller, stop, top, axis, key}.

sticky:progress event

stops.js:170

Told on the scroller (it bubbles) as the scroll moves between its stops: the same numbers as --sticky-stop, --sticky-progress and --sticky-progress-held.

StickyStops.defaults property

stops.js:189

StickyStops.defaults.reach property

stops.js:193

StickyStops.Stops(scroller, options) function

stops.js:361

StickyStops.Stops#detach() method

stops.js:441

StickyStops.Stops#pause() method

stops.js:466

Hold the stops off, e.g. while a script scrolls the page itself. Nests.

StickyStops.Stops#resume() method

stops.js:467

StickyStops.Stops#top() method

stops.js:470

The scroll position along the axis: scrollTop, or scrollLeft for 'x'.

StickyStops.Stops#max() method

stops.js:476

The furthest the scroller can scroll.

StickyStops.Stops#viewport() method

stops.js:485

The height the scroller shows - its width for 'x'.

StickyStops.Stops#padding() method

stops.js:491

The scroller's scroll-padding-top (-left): where a stop should rest from its edge.

StickyStops.Stops#margin(el) method

stops.js:497

A stop's own scroll-margin-top (-left): the browser adds it to the scroller's padding for an anchor, and so do the stops.

StickyStops.Stops#edge(el) method

stops.js:503

An element's near edge (top, or left) on screen, and its size along the axis.

StickyStops.Stops#size(el) method

stops.js:507

StickyStops.Stops#position(el) method

stops.js:513

A stop's scroll position: where it is on screen now, not its layout box, less the scroller's scroll-padding and the stop's scroll-margin.

StickyStops.Stops#owns(el) method

stops.js:522

Whether a stop is this scroller's, not one of a scroller inside it (a row of data-sticky-axis="x" in the page, or any attached scroller).

StickyStops.Stops#place(rect, frame, margin) method

stops.js:533

A stop's place from its box, the scroller's origin, scroll position and padding, and the stop's own margin.

StickyStops.Stops#frameOf() method

stops.js:538

What every stop's place is counted from: read once per measure, not once per stop.

StickyStops.Stops#measure(kept) method

stops.js:547

The stops, measured: [{element, top, end, bandUp, bandDown}], top to bottom. measure(true) gives the last measure back when the page has kept its shape since (the window's stops, see the constructor).

StickyStops.Stops#still(stop) method

stops.js:636

Whether a kept stop is still where it was measured: its box read again (one read; the padding and its margin as measured). A stop that moves with the scroll - pinned, in a pinned block - or that a transition moves changes neither the page's size nor its nodes.

StickyStops.Stops#reach() method

stops.js:654

The farthest a glide may go, in px.

StickyStops.Stops#jump(top) method

stops.js:666

Put the scroll somewhere at once, whatever the page's scroll-behavior.

StickyStops.Stops#to(position, behavior) method

stops.js:675

scrollTo's options for a position along the axis.

StickyStops.Stops#cancel() method

stops.js:680

Stop our own animated glide where it is. True when one was running.

StickyStops.Stops#ours(y) method

stops.js:689

Whether the scroll is where our glide put it lately - told late, as iOS tells it.

StickyStops.Stops#release() method

stops.js:699

StickyStops.Stops#animate(to, duration) method

stops.js:705

Glide to a position over a duration, along the easing curve.

StickyStops.Stops#glide(stop) method

stops.js:752

StickyStops.Stops#approach(stop) method

stops.js:777

Glide to a stop if it is within reach of where the scroll rests.

StickyStops.Stops#toward(stop, way) method

stops.js:788

approach(), for a scroll the reader made heading way (1 down, -1 up): unless the stop does not take a reader going that way (up, down).

StickyStops.Stops#settle() method

stops.js:793

StickyStops.Stops#onScroll() method

stops.js:866

StickyStops.Stops#scrolls(el) method

stops.js:910

Whether an element scrolls by itself along this axis (and so keeps its keys).

StickyStops.Stops#keyed(event) method

stops.js:921

Where a key sends the scroll: a stop to glide to ({top, element, key}), or null to leave the key to the browser (and to anyone else).

StickyStops.Stops#screened(stops, y, direction, screen, near, at) method

stops.js:1068

screens (1.5): an arrow or a page key reads the stop it is in a whole screen at a time - its top, a screen further, ..., its end (its last screen), exactly -, then goes on to the next stop's top; up, the same back to its top, then to the end of the stop above. Down, from less than shortEnd of a screen before the end the key goes on to the next stop rather than to that end; up, a step that would rest less than that under the stop's top goes to the top: never a short step to rest just before a section. Past a neighbour farther than NEAR screens, the browser scrolls, as for the other keys.

StickyStops.Stops#onInterrupt() method

stops.js:1105

StickyStops.Stops#onFocus() method

stops.js:1110

StickyStops.Stops#onResize() method

stops.js:1114

StickyStops.Stops#refresh() method

stops.js:1119

Re-measure the stops and report the progress. For content that moved.

StickyStops.Stops#queue() method

stops.js:1125

StickyStops.Stops#tick() method

stops.js:1130

StickyStops.Stops#progress() method

stops.js:1140

Where the scroll is between its two nearest stops: {index, from, to, top, progress, held}, also written to the custom properties and sent as sticky:progress when it changed. null with fewer than two stops.

StickyStops.attach() function

stops.js:1249

The stops of a scroller (the window by default); made if needed.

StickyStops.get() function

stops.js:1262

StickyStops.pause() function

stops.js:1271

Hold every scroller's stops off, e.g. while a script scrolls the page. Nests.

StickyStops.resume() function

stops.js:1272

StickyStops.refresh() function

stops.js:1274

StickyStops.scan() function

stops.js:1283

Attach every [data-sticky-axis] element of the document (or of an element) that holds stops, and detach the scrollers no longer in it.

StickyScenes

scene:progress event

scenes.js:66

Told on the scene (it bubbles) at each frame its progress changes: detail {progress, step, stepProgress, state, frame, scene}.

scene:key event

scenes.js:70

Told on the scene when a key takes it to a step, or out of it: detail {progress, top, scene} (progress 2: the section after, -1: the one before).

StickyScenes.defaults property

scenes.js:88

StickyScenes.Scene(el, options) function

scenes.js:138

StickyScenes.Scene#reduced() method

scenes.js:162

StickyScenes.Scene#sideways() method

scenes.js:167

StickyScenes.Scene#panelSteps() method

scenes.js:185

Where the panels begin, as progress (the steps of a sideways scene that names none).

StickyScenes.Scene#marks() method

scenes.js:201

The scroll positions of the steps, in order: where each begins, then the end.

StickyScenes.Scene#trackKey(e) method

scenes.js:205

StickyScenes.Scene#pinned() method

scenes.js:222

StickyScenes.Scene#scrollAt(p) method

scenes.js:231

The window's scroll position at a progress of the scene.

StickyScenes.Scene#keyed(e) method

scenes.js:239

Where a key sends the window: a scroll position, or null (the key is not the scene's).

StickyScenes.Scene#measureLength() method

scenes.js:274

StickyScenes.Scene#progress() method

scenes.js:288

The progress (0 to 1) of the scene at the scroll position now.

StickyScenes.Scene#update(force) method

scenes.js:302

StickyScenes.Scene#destroy() method

scenes.js:322

StickyScenes.attach() function

scenes.js:446

The scene of an element (made if needed).

StickyScenes.get() function

scenes.js:453

StickyScenes.scan() function

scenes.js:458

Attach every scene of the document (or of an element) not attached yet; forget those gone.

StickyScenes.refresh() function

scenes.js:464

Measure again (content that moved) and update every scene.

StickyScenes.all() function

scenes.js:467

Lists

StickySortable

sortable:change event

sortable.js:10

Told on a tree's root (StickySortable.Tree) after each move: detail {item, parent, index, depth, tree}.

StickySortable.defaults property

sortable.js:28

StickySortable#items() method

sortable.js:91

StickySortable#onPointerDown(e) method

sortable.js:96

StickySortable#forgetPress() method

sortable.js:145

The press waiting for the drag threshold, forgotten: its listeners removed.

StickySortable#beginDrag(item, pointerId, e) method

sortable.js:156

StickySortable#moveItemTo(clientX, clientY) method

sortable.js:197

StickySortable#sharesRow(a, b) method

sortable.js:218

Do these two boxes sit on the same visual row?

Overlap of more than half the shorter box, not "same top": widgets on a row are stretched to the tallest of them but a shorter neighbour that has not stretched still shares the row, and an exact-top test would call that a different one.

StickySortable#orientPlaceholder() method

sortable.js:247

Which way the drop marker should read, from where it has just landed.

Decided from the NEIGHBOURS rather than the placeholder itself: the placeholder is styled as a thin line, so it has no footprint of its own left to compare against anything.

between two cards sharing a row -> vertical, it goes between them nothing before it -> horizontal, it starts a new row neighbours on different rows -> horizontal, it goes between rows last position, room left on the row -> vertical

A plain vertical list (the sidebar menu uses this same sortable) never has two neighbours sharing a row, so it always reads horizontal, which is the right answer there without a special case.

StickySortable#findDropTarget(siblings, x, y) method

sortable.js:285

StickySortable#findMergeTarget(siblings, x, y) method

sortable.js:335

StickySortable#onPointerMove(e) method

sortable.js:355

StickySortable#topInset(rect) method

sortable.js:409

StickySortable#updateAutoscroll(clientY) method

sortable.js:435

StickySortable#runAutoscroll() method

sortable.js:460

StickySortable#onPointerUp(e) method

sortable.js:469

StickySortable#onKeyDown(e) method

sortable.js:533

Keyboard fallback: focus a handle, ArrowUp/ArrowDown moves its item, no pointer needed.

StickySortable.Tree.defaults property

sortable.js:612

StickySortable.Tree.defaults.maxDepth property

sortable.js:617

StickySortable.Tree(root, options) function

sortable.js:633

StickySortable.Tree#all() method

sortable.js:655

StickySortable.Tree#isItem(el) method

sortable.js:658

StickySortable.Tree#listOf(item, create) method

sortable.js:659

StickySortable.Tree#parentOf(item) method

sortable.js:666

StickySortable.Tree#depthOf(item) method

sortable.js:670

StickySortable.Tree#siblingsOf(item) method

sortable.js:675

StickySortable.Tree#heightOf(item) method

sortable.js:680

How many levels an item's subtree holds below it (0 for an item without children).

StickySortable.Tree#accepts(item) method

sortable.js:686

StickySortable.Tree#label(item) method

sortable.js:689

StickySortable.Tree#serialize(list) method

sortable.js:699

The tree as nested ids: data-id, else id.

StickySortable.Tree#collapse(item, folded) method

sortable.js:709

An item's children folded (true) or unfolded.

StickySortable.Tree#expand(item) method

sortable.js:716

StickySortable.Tree#sync(item) method

sortable.js:717

StickySortable.Tree#say(key, item, extra) method

sortable.js:731

StickySortable.Tree#changed(item, previousParent) method

sortable.js:738

StickySortable.Tree#allowed(item, parent, depth) method

sortable.js:749

Whether an item (its whole subtree) may sit at a depth under a parent.

StickySortable.Tree#onKeyDown(e) method

sortable.js:756

StickySortable.Tree#onClick(e) method

sortable.js:786

StickySortable.Tree#onPointerDown(e) method

sortable.js:794

StickySortable.Tree#begin(item, start, e) method

sortable.js:823

StickySortable.Tree#place(x, y) method

sortable.js:837

Where a pointer at (x, y) drops the item: {list, before, parent, depth}.

StickySortable.Tree#ancestorAt(item, depth) method

sortable.js:867

StickySortable.Tree#firstItemOf(list) method

sortable.js:873

StickySortable.Tree#onMove(e) method

sortable.js:879

StickySortable.Tree#onUp(e) method

sortable.js:897

StickySortable.Tree#destroy() method

sortable.js:918

Ajaxer

Ajaxer.settings constant

ajaxer.js:30

Ajaxer.clear() function

ajaxer.js:45

Ajaxer.parseTime(value) function

ajaxer.js:54

Ajaxer.ready(list, options) function

ajaxer.js:70

Ajaxer.get(key) function

ajaxer.js:85

Ajaxer.set(key, value) function

ajaxer.js:93

Ajaxer.add(key, value) function

ajaxer.js:99

Ajaxer.remove(key, value) function

ajaxer.js:110

Ajaxer.configure(options) function

ajaxer.js:124

Ajaxer.onLoad() function

ajaxer.js:137

Ajaxer.setMethod(name, type) function

ajaxer.js:142

Ajaxer.setUrl(name, url) function

ajaxer.js:147

Ajaxer.setOutput(name, dataType) function

ajaxer.js:152

Ajaxer.getTarget(name) function

ajaxer.js:157

Ajaxer.setTarget(name, el) function

ajaxer.js:162

Ajaxer.cancelable(name, cancelable) function

ajaxer.js:167

Ajaxer.setDebounce(name, debounce) function

ajaxer.js:172

Ajaxer.setLoaderDebounce(name, debounce) function

ajaxer.js:176

Ajaxer.setThrottle(name, throttle) function

ajaxer.js:181

Ajaxer.setLoaderThrottle(name, throttle) function

ajaxer.js:185

Ajaxer.setLoaderContainer(name, el) function

ajaxer.js:190

Ajaxer.setRetryLimit(name, retryLimit) function

ajaxer.js:195

Ajaxer.setQueryLimit(name, queryLimit) function

ajaxer.js:200

Ajaxer.debounce(name, func, timeout) function

ajaxer.js:206

Ajaxer.throttle(name, func, timeout) function

ajaxer.js:224

Ajaxer.abortAll() function

ajaxer.js:267

Ajaxer.abort(name, nKill) function

ajaxer.js:274

Ajaxer.register(name, xhr) function

ajaxer.js:287

Ajaxer.unregister(xhr) function

ajaxer.js:295

Ajaxer.isJson(str) function

ajaxer.js:304

Ajaxer.isDict(v) function

ajaxer.js:312

Ajaxer.xhr(name, data, success, error, complete) function

ajaxer.js:341

cookie.js:36

Told on the window once Cookie.ready() has configured and started the module.

cookie.js:40

Told on the window at each answer: detail {categories, granted, revoked, source, pending}.

cookie.js:44

Told on the window when the banner opens: detail {view} - "banner" or "details".

cookie.js:48

Told on the window when the banner closes: detail {view}.

cookie.js:151

cookie.js:337

The cookies, by their declaration: nothing is read or written under a category that is not granted.

cookie.js:338

cookie.js:339

cookie.js:345

cookie.js:373

localStorage and sessionStorage, by their declaration.

cookie.js:524

The privacy signals of the browser: {gpc, dnt}.

cookie.js:639

Run onGrant now if the category is granted and each time it becomes so, onRevoke each time it is withdrawn; whether it is granted now. A category not known yet is declared from the options, on demand. (omnibase/consent's Consent.use(name, options, onEnable, onDisable).)

cookie.js:655

cookie.js:727

cookie.js:760

Whether the element is in one the ignore option names: its clicks are not on the page.

cookie.js:778

Whether the visitor asked for less motion.

cookie.js:1504

Declare a category (or add to it), or read one: {key, label, description, default, required, storage, features, state, granted}.

cookie.js:1515

The categories listed, in the order they were declared.

cookie.js:1518

Declare what is stored: an entry {type, name, category, duration, purpose, path, domain}, or a list of them.

cookie.js:1525

true | false | null (no answer) for a category; null for one that is not declared.

cookie.js:1527

What a script should do now: the answer, else the category's default.

cookie.js:1529

Whether an answer is wanted: a category without one, a new version, an answer too old.

cookie.js:1531

Whether an answer that still counts was given.

cookie.js:1538

cookie.js:1539

cookie.js:1541

Keep a choice {key: bool}; without one, the switches as the visitor set them (a category without a switch keeps its state).

cookie.js:1556

cookie.js:1557

cookie.js:1560

Erase the answer: the visitor is asked again.

cookie.js:1575

Open the banner ("banner") or the detailed section ("details"); the reopen option's by default.

cookie.js:1579

cookie.js:1581

The banner's element, once there is one.

cookie.js:1590

Put the banner there (an element or a selector), as it is - several places of a page share the one live banner: another [data-cookie-banner], whose place it takes (that one takes the place it leaves, hidden), or any element, at whose end it goes. Before there is a banner, a [data-cookie-banner] named here is the one that becomes it. Returns the banner, null when there is none.

cookie.js:1607

fn(detail) at each answer.

cookie.js:1613

As loaded: no category, no declaration, no feature, no banner. The answer kept stays where it is.

cookie.js:1640

cookie.js:1650

cookie.js:1665

cookie.js:1675

cookie.js:1686

cookie.js:1691

cookie.js:1696

cookie.js:1702

cookie.js:1710

cookie.js:1730

cookie.js:1731

cookie.js:1732

cookie.js:1734

cookie.js:1739

cookie.js:1748

cookie.js:1754

true | false | null: a category's answer, else what localStorage "cookie/<GROUP>" holds.

cookie.js:1761

cookie.js:1790

cookie.js:1817

cookie.js:1826

cookie.js:1876