@wardic/dom 0.0.0-stage → 1.0.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +8 -2
- package/THIRD_PARTY_NOTICES.md +145 -0
- package/dist/Appear.d.ts +24 -0
- package/dist/Appear.d.ts.map +1 -0
- package/dist/Appear.js +25 -0
- package/dist/Appear.js.map +1 -0
- package/dist/Color.d.ts +14 -0
- package/dist/Color.d.ts.map +1 -0
- package/dist/Color.js +16 -0
- package/dist/Color.js.map +1 -0
- package/dist/DomAnnouncer.d.ts +13 -0
- package/dist/DomAnnouncer.d.ts.map +1 -0
- package/dist/DomAnnouncer.js +14 -0
- package/dist/DomAnnouncer.js.map +1 -0
- package/dist/DomClock.d.ts +11 -0
- package/dist/DomClock.d.ts.map +1 -0
- package/dist/DomClock.js +12 -0
- package/dist/DomClock.js.map +1 -0
- package/dist/DomDefaultTransition.d.ts +12 -0
- package/dist/DomDefaultTransition.d.ts.map +1 -0
- package/dist/DomDefaultTransition.js +13 -0
- package/dist/DomDefaultTransition.js.map +1 -0
- package/dist/DomInput.d.ts +13 -0
- package/dist/DomInput.d.ts.map +1 -0
- package/dist/DomInput.js +15 -0
- package/dist/DomInput.js.map +1 -0
- package/dist/DomInterpolators.d.ts +13 -0
- package/dist/DomInterpolators.d.ts.map +1 -0
- package/dist/DomInterpolators.js +14 -0
- package/dist/DomInterpolators.js.map +1 -0
- package/dist/DomKeyRules.d.ts +13 -0
- package/dist/DomKeyRules.d.ts.map +1 -0
- package/dist/DomKeyRules.js +14 -0
- package/dist/DomKeyRules.js.map +1 -0
- package/dist/DomPositionalKeys.d.ts +13 -0
- package/dist/DomPositionalKeys.d.ts.map +1 -0
- package/dist/DomPositionalKeys.js +14 -0
- package/dist/DomPositionalKeys.js.map +1 -0
- package/dist/DomProbe.d.ts +13 -0
- package/dist/DomProbe.d.ts.map +1 -0
- package/dist/DomProbe.js +14 -0
- package/dist/DomProbe.js.map +1 -0
- package/dist/DomProjectionSystem.d.ts +28 -0
- package/dist/DomProjectionSystem.d.ts.map +1 -0
- package/dist/DomProjectionSystem.js +41 -0
- package/dist/DomProjectionSystem.js.map +1 -0
- package/dist/DomRenderer.d.ts +13 -0
- package/dist/DomRenderer.d.ts.map +1 -0
- package/dist/DomRenderer.js +15 -0
- package/dist/DomRenderer.js.map +1 -0
- package/dist/FlushGate.d.ts +48 -0
- package/dist/FlushGate.d.ts.map +1 -0
- package/dist/FlushGate.js +62 -0
- package/dist/FlushGate.js.map +1 -0
- package/dist/MeasuredPair.d.ts +14 -0
- package/dist/MeasuredPair.d.ts.map +1 -0
- package/dist/MeasuredPair.js +16 -0
- package/dist/MeasuredPair.js.map +1 -0
- package/dist/OwnValues.d.ts +14 -0
- package/dist/OwnValues.d.ts.map +1 -0
- package/dist/OwnValues.js +15 -0
- package/dist/OwnValues.js.map +1 -0
- package/dist/ProjectionSystem.d.ts +34 -0
- package/dist/ProjectionSystem.d.ts.map +1 -0
- package/dist/ProjectionSystem.js +29 -0
- package/dist/ProjectionSystem.js.map +1 -0
- package/dist/ReorderController.d.ts +41 -0
- package/dist/ReorderController.d.ts.map +1 -0
- package/dist/ReorderController.js +44 -0
- package/dist/ReorderController.js.map +1 -0
- package/dist/Report.d.ts +12 -0
- package/dist/Report.d.ts.map +1 -0
- package/dist/Report.js +13 -0
- package/dist/Report.js.map +1 -0
- package/dist/ScrollOffset.d.ts +34 -0
- package/dist/ScrollOffset.d.ts.map +1 -0
- package/dist/ScrollOffset.js +42 -0
- package/dist/ScrollOffset.js.map +1 -0
- package/dist/Style.d.ts +15 -0
- package/dist/Style.d.ts.map +1 -0
- package/dist/Style.js +17 -0
- package/dist/Style.js.map +1 -0
- package/dist/Svg.d.ts +13 -0
- package/dist/Svg.d.ts.map +1 -0
- package/dist/Svg.js +14 -0
- package/dist/Svg.js.map +1 -0
- package/dist/Variables.d.ts +13 -0
- package/dist/Variables.d.ts.map +1 -0
- package/dist/Variables.js +14 -0
- package/dist/Variables.js.map +1 -0
- package/dist/index.d.ts +72 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +60 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/announcer.d.ts +50 -0
- package/dist/internal/announcer.d.ts.map +1 -0
- package/dist/internal/announcer.js +115 -0
- package/dist/internal/announcer.js.map +1 -0
- package/dist/internal/appear.d.ts +169 -0
- package/dist/internal/appear.d.ts.map +1 -0
- package/dist/internal/appear.js +499 -0
- package/dist/internal/appear.js.map +1 -0
- package/dist/internal/auto-scroll.d.ts +24 -0
- package/dist/internal/auto-scroll.d.ts.map +1 -0
- package/dist/internal/auto-scroll.js +124 -0
- package/dist/internal/auto-scroll.js.map +1 -0
- package/dist/internal/clock.d.ts +19 -0
- package/dist/internal/clock.d.ts.map +1 -0
- package/dist/internal/clock.js +39 -0
- package/dist/internal/clock.js.map +1 -0
- package/dist/internal/colors.d.ts +45 -0
- package/dist/internal/colors.d.ts.map +1 -0
- package/dist/internal/colors.js +193 -0
- package/dist/internal/colors.js.map +1 -0
- package/dist/internal/complex.d.ts +24 -0
- package/dist/internal/complex.d.ts.map +1 -0
- package/dist/internal/complex.js +28 -0
- package/dist/internal/complex.js.map +1 -0
- package/dist/internal/content-watch.d.ts +20 -0
- package/dist/internal/content-watch.d.ts.map +1 -0
- package/dist/internal/content-watch.js +76 -0
- package/dist/internal/content-watch.js.map +1 -0
- package/dist/internal/default-transition.d.ts +25 -0
- package/dist/internal/default-transition.d.ts.map +1 -0
- package/dist/internal/default-transition.js +41 -0
- package/dist/internal/default-transition.js.map +1 -0
- package/dist/internal/drag-defaults.d.ts +18 -0
- package/dist/internal/drag-defaults.d.ts.map +1 -0
- package/dist/internal/drag-defaults.js +38 -0
- package/dist/internal/drag-defaults.js.map +1 -0
- package/dist/internal/gate.d.ts +186 -0
- package/dist/internal/gate.d.ts.map +1 -0
- package/dist/internal/gate.js +453 -0
- package/dist/internal/gate.js.map +1 -0
- package/dist/internal/input.d.ts +41 -0
- package/dist/internal/input.d.ts.map +1 -0
- package/dist/internal/input.js +476 -0
- package/dist/internal/input.js.map +1 -0
- package/dist/internal/interpolators.d.ts +19 -0
- package/dist/internal/interpolators.d.ts.map +1 -0
- package/dist/internal/interpolators.js +30 -0
- package/dist/internal/interpolators.js.map +1 -0
- package/dist/internal/key-rules.d.ts +11 -0
- package/dist/internal/key-rules.d.ts.map +1 -0
- package/dist/internal/key-rules.js +244 -0
- package/dist/internal/key-rules.js.map +1 -0
- package/dist/internal/measure.d.ts +150 -0
- package/dist/internal/measure.d.ts.map +1 -0
- package/dist/internal/measure.js +278 -0
- package/dist/internal/measure.js.map +1 -0
- package/dist/internal/measured-pairs.d.ts +38 -0
- package/dist/internal/measured-pairs.d.ts.map +1 -0
- package/dist/internal/measured-pairs.js +251 -0
- package/dist/internal/measured-pairs.js.map +1 -0
- package/dist/internal/own-values.d.ts +35 -0
- package/dist/internal/own-values.d.ts.map +1 -0
- package/dist/internal/own-values.js +117 -0
- package/dist/internal/own-values.js.map +1 -0
- package/dist/internal/pass-ends.d.ts +21 -0
- package/dist/internal/pass-ends.d.ts.map +1 -0
- package/dist/internal/pass-ends.js +14 -0
- package/dist/internal/pass-ends.js.map +1 -0
- package/dist/internal/positional-keys.d.ts +16 -0
- package/dist/internal/positional-keys.d.ts.map +1 -0
- package/dist/internal/positional-keys.js +21 -0
- package/dist/internal/positional-keys.js.map +1 -0
- package/dist/internal/probe.d.ts +10 -0
- package/dist/internal/probe.d.ts.map +1 -0
- package/dist/internal/probe.js +117 -0
- package/dist/internal/probe.js.map +1 -0
- package/dist/internal/projection-defaults.d.ts +34 -0
- package/dist/internal/projection-defaults.d.ts.map +1 -0
- package/dist/internal/projection-defaults.js +21 -0
- package/dist/internal/projection-defaults.js.map +1 -0
- package/dist/internal/projection.d.ts +529 -0
- package/dist/internal/projection.d.ts.map +1 -0
- package/dist/internal/projection.js +4990 -0
- package/dist/internal/projection.js.map +1 -0
- package/dist/internal/renderer.d.ts +86 -0
- package/dist/internal/renderer.d.ts.map +1 -0
- package/dist/internal/renderer.js +616 -0
- package/dist/internal/renderer.js.map +1 -0
- package/dist/internal/reorder.d.ts +159 -0
- package/dist/internal/reorder.d.ts.map +1 -0
- package/dist/internal/reorder.js +437 -0
- package/dist/internal/reorder.js.map +1 -0
- package/dist/internal/report.d.ts +30 -0
- package/dist/internal/report.d.ts.map +1 -0
- package/dist/internal/report.js +60 -0
- package/dist/internal/report.js.map +1 -0
- package/dist/internal/require-global.d.ts +11 -0
- package/dist/internal/require-global.d.ts.map +1 -0
- package/dist/internal/require-global.js +31 -0
- package/dist/internal/require-global.js.map +1 -0
- package/dist/internal/reveal.d.ts +16 -0
- package/dist/internal/reveal.d.ts.map +1 -0
- package/dist/internal/reveal.js +66 -0
- package/dist/internal/reveal.js.map +1 -0
- package/dist/internal/runner.d.ts +21 -0
- package/dist/internal/runner.d.ts.map +1 -0
- package/dist/internal/runner.js +48 -0
- package/dist/internal/runner.js.map +1 -0
- package/dist/internal/scale-correction.d.ts +80 -0
- package/dist/internal/scale-correction.d.ts.map +1 -0
- package/dist/internal/scale-correction.js +227 -0
- package/dist/internal/scale-correction.js.map +1 -0
- package/dist/internal/scroll.d.ts +35 -0
- package/dist/internal/scroll.d.ts.map +1 -0
- package/dist/internal/scroll.js +244 -0
- package/dist/internal/scroll.js.map +1 -0
- package/dist/internal/scrollers.d.ts +35 -0
- package/dist/internal/scrollers.d.ts.map +1 -0
- package/dist/internal/scrollers.js +38 -0
- package/dist/internal/scrollers.js.map +1 -0
- package/dist/internal/starting-style.d.ts +141 -0
- package/dist/internal/starting-style.d.ts.map +1 -0
- package/dist/internal/starting-style.js +300 -0
- package/dist/internal/starting-style.js.map +1 -0
- package/dist/internal/svg.d.ts +60 -0
- package/dist/internal/svg.d.ts.map +1 -0
- package/dist/internal/svg.js +257 -0
- package/dist/internal/svg.js.map +1 -0
- package/dist/internal/variables.d.ts +45 -0
- package/dist/internal/variables.d.ts.map +1 -0
- package/dist/internal/variables.js +92 -0
- package/dist/internal/variables.js.map +1 -0
- package/package.json +65 -4
- package/src/Appear.ts +45 -0
- package/src/Color.ts +24 -0
- package/src/DomAnnouncer.ts +22 -0
- package/src/DomClock.ts +13 -0
- package/src/DomDefaultTransition.ts +16 -0
- package/src/DomInput.ts +22 -0
- package/src/DomInterpolators.ts +16 -0
- package/src/DomKeyRules.ts +17 -0
- package/src/DomPositionalKeys.ts +16 -0
- package/src/DomProbe.ts +15 -0
- package/src/DomProjectionSystem.ts +44 -0
- package/src/DomRenderer.ts +26 -0
- package/src/FlushGate.ts +81 -0
- package/src/MeasuredPair.ts +15 -0
- package/src/OwnValues.ts +19 -0
- package/src/ProjectionSystem.ts +51 -0
- package/src/ReorderController.ts +72 -0
- package/src/Report.ts +17 -0
- package/src/ScrollOffset.ts +54 -0
- package/src/Style.ts +37 -0
- package/src/Svg.ts +21 -0
- package/src/Variables.ts +17 -0
- package/src/index.ts +106 -0
- package/src/internal/announcer.ts +132 -0
- package/src/internal/appear.ts +739 -0
- package/src/internal/auto-scroll.ts +176 -0
- package/src/internal/clock.ts +45 -0
- package/src/internal/colors.ts +258 -0
- package/src/internal/complex.ts +29 -0
- package/src/internal/content-watch.ts +84 -0
- package/src/internal/culori.d.ts +58 -0
- package/src/internal/default-transition.ts +50 -0
- package/src/internal/drag-defaults.ts +54 -0
- package/src/internal/gate.ts +593 -0
- package/src/internal/input.ts +579 -0
- package/src/internal/interpolators.ts +33 -0
- package/src/internal/key-rules.ts +357 -0
- package/src/internal/measure.ts +357 -0
- package/src/internal/measured-pairs.ts +297 -0
- package/src/internal/own-values.ts +166 -0
- package/src/internal/pass-ends.ts +23 -0
- package/src/internal/positional-keys.ts +24 -0
- package/src/internal/probe.ts +176 -0
- package/src/internal/projection-defaults.ts +45 -0
- package/src/internal/projection.ts +5999 -0
- package/src/internal/renderer.ts +646 -0
- package/src/internal/reorder.ts +604 -0
- package/src/internal/report.ts +69 -0
- package/src/internal/require-global.ts +46 -0
- package/src/internal/reveal.ts +69 -0
- package/src/internal/runner.ts +64 -0
- package/src/internal/scale-correction.ts +310 -0
- package/src/internal/scroll.ts +356 -0
- package/src/internal/scrollers.ts +51 -0
- package/src/internal/starting-style.ts +396 -0
- package/src/internal/svg.ts +300 -0
- package/src/internal/variables.ts +145 -0
|
@@ -0,0 +1,476 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `InputDomLive` — the browser realization of `InputSource`, mapping raw DOM
|
|
3
|
+
* events onto the engine's environment-agnostic Like-event shapes
|
|
4
|
+
* (`PointerLikeEvent`/`KeyboardLikeEvent`/`FocusLikeEvent`).
|
|
5
|
+
*
|
|
6
|
+
* Every accessor is an **Input feed** (#318), shared per target by core's `InputFeed.byTarget`
|
|
7
|
+
* (CONTEXT.md's **Shared source** contract: one listener-set per element, ref-counted, with no
|
|
8
|
+
* `PubSub` or fiber). A consumer attaching `hover` + `press` + `drag` to one element therefore
|
|
9
|
+
* shares a single pointer listener-set, not three.
|
|
10
|
+
*
|
|
11
|
+
* `keyboard(target)` (ADR-0037) listens on the target's window, in the bubble phase, for
|
|
12
|
+
* the keys at the target or inside it: there it runs after the page's own handlers (the
|
|
13
|
+
* element's, and Solid's delegated ones on the document), so `handled` (`defaultPrevented`) says
|
|
14
|
+
* whether one took the key, and a consumer can still `handle()` it (`preventDefault()`). Its events
|
|
15
|
+
* reach their consumers inside the dispatch (ADR-0032), the targets a key passed through innermost
|
|
16
|
+
* first (#439): one listener per window walks its path.
|
|
17
|
+
* Keys are in core's names (`keyOf`), not the browser's.
|
|
18
|
+
*
|
|
19
|
+
* `pointer(target)` also carries every **Held pointer**'s events (ADR-0019): core's
|
|
20
|
+
* `InputSource.heldPointer` adds a page-wide set (the target's window, capture phase) inside
|
|
21
|
+
* the target's `pointerdown` dispatch and removes it at the pointer's release, so a
|
|
22
|
+
* drag or a press keeps its pointer anywhere on the page. It is part of the element's
|
|
23
|
+
* one shared lookup, so every subscriber to the element shares it too. No pointer
|
|
24
|
+
* capture: capturing at the down would retarget a click on a child `<button>` to the
|
|
25
|
+
* element, and it allows one capturer per pointer, which nested draggables (#29) would
|
|
26
|
+
* fight over.
|
|
27
|
+
*
|
|
28
|
+
* `adoptPointer(target, raw)` (#431, **Drag controls**) hands a pointer that went down elsewhere,
|
|
29
|
+
* a handle or a track, to `target`: its `PointerEvent` (a `pointerdown`, or any other with a button
|
|
30
|
+
* pressed) is delivered on `adoptablePointer(target)` as an adopted down, inside the call, and held
|
|
31
|
+
* from there as the target's own downs are. Only a target given Drag controls reads that feed (#507):
|
|
32
|
+
* its adopted feed is one more listener in a shared lookup, not a DOM listener, and `pointer(target)`,
|
|
33
|
+
* every other target's, subscribes none.
|
|
34
|
+
*
|
|
35
|
+
* A scroll moves a Held pointer (ADR-0019, *Amendment (Reorder)*): while one is held,
|
|
36
|
+
* the target's scroll feed reports the scroll of each of its scrollable ancestors and
|
|
37
|
+
* of its window, and `InputSource.heldPointer` turns each change into a move of the pointer
|
|
38
|
+
* shifted by it. Two passive `scroll` listeners on the target's window come with the
|
|
39
|
+
* hold and go at its release: one in the capture phase for element scrolls (they don't
|
|
40
|
+
* bubble), one for the window's own. Nothing listens for scroll at rest. The feed also
|
|
41
|
+
* keeps each held target's total shift, for the auto-scroller ({@link heldScrollShift}).
|
|
42
|
+
*
|
|
43
|
+
* Observability (CONTEXT.md observability convention): a consumer (a recognizer) carries the
|
|
44
|
+
* subscribe span and log; the per-event mapping path is deliberately unlogged — it is the hot
|
|
45
|
+
* path.
|
|
46
|
+
*/
|
|
47
|
+
import * as InputFeed from "@wardic/core/InputFeed";
|
|
48
|
+
import * as InputSource from "@wardic/core/InputSource";
|
|
49
|
+
import * as Arr from "effect/Array";
|
|
50
|
+
import * as Bool from "effect/Boolean";
|
|
51
|
+
import * as Effect from "effect/Effect";
|
|
52
|
+
import { constTrue, constVoid, identity } from "effect/Function";
|
|
53
|
+
import * as Layer from "effect/Layer";
|
|
54
|
+
import * as Match from "effect/Match";
|
|
55
|
+
import * as Option from "effect/Option";
|
|
56
|
+
import * as Predicate from "effect/Predicate";
|
|
57
|
+
import * as UndefinedOr from "effect/UndefinedOr";
|
|
58
|
+
import { scrollersOf } from "./scrollers.js";
|
|
59
|
+
import { requireGlobal } from "./require-global.js";
|
|
60
|
+
/** DOM `pointer*` type → the engine's portable phase. */
|
|
61
|
+
const POINTER_TYPE = {
|
|
62
|
+
pointerdown: "down",
|
|
63
|
+
pointermove: "move",
|
|
64
|
+
pointerup: "up",
|
|
65
|
+
pointercancel: "cancel",
|
|
66
|
+
pointerenter: "enter",
|
|
67
|
+
pointerleave: "leave",
|
|
68
|
+
};
|
|
69
|
+
const POINTER_EVENTS = Object.keys(POINTER_TYPE);
|
|
70
|
+
/**
|
|
71
|
+
* The page-wide events while a pointer is held: its moves, release and cancel, and any
|
|
72
|
+
* down, which ends a hold whose release was lost (ADR-0019, decision 7).
|
|
73
|
+
*/
|
|
74
|
+
const HELD_POINTER_EVENTS = ["pointermove", "pointerup", "pointercancel", "pointerdown"];
|
|
75
|
+
/** A `PointerEvent.pointerType` as core's pointer kind: the DOM's three, else `"other"`. */
|
|
76
|
+
// A **Pointer kind** (ADR-0036, *Amendment (#189)*). Built once, read per input event: `Match.value`
|
|
77
|
+
// would build its matcher again each event, 69 ns against 10 (#618, H1).
|
|
78
|
+
export const kindOf = /*#__PURE__*/ Match.type().pipe(Match.when("mouse", () => "mouse"), Match.when("pen", () => "pen"), Match.when("touch", () => "touch"), Match.orElse(() => "other"));
|
|
79
|
+
/**
|
|
80
|
+
* A `PointerEvent.button` in core's names: 0 the main button, 1 the middle, 2 the secondary, -1 none, as
|
|
81
|
+
* on a move, and the rest, back, forward, a pen's eraser, other.
|
|
82
|
+
*/
|
|
83
|
+
// ADR-0036, *Amendment (#189)*. Built once, as `kindOf` (#618, H1).
|
|
84
|
+
export const buttonOf = /*#__PURE__*/ Match.type().pipe(Match.when(0, () => "main"), Match.when(1, () => "middle"), Match.when(2, () => "secondary"), Match.when(-1, () => "none"), Match.orElse(() => "other"));
|
|
85
|
+
/** A feed's answer as a {@link Where}: per input event, a statement. */
|
|
86
|
+
const whereOf = (onTarget) => {
|
|
87
|
+
if (onTarget)
|
|
88
|
+
return "target";
|
|
89
|
+
return "elsewhere";
|
|
90
|
+
};
|
|
91
|
+
/**
|
|
92
|
+
* A DOM `PointerEvent` as core's pointer event: at its point in the viewport, with no scroll counted
|
|
93
|
+
* (`InputSource.heldPointer` counts it), and where it landed as its feed says: on the feed's target, or
|
|
94
|
+
* elsewhere.
|
|
95
|
+
*/
|
|
96
|
+
// ADR-0036, *Amendment (#189)*; #257. `where`, not a trailing boolean (#618, F7).
|
|
97
|
+
export const toPointer = (type, ev, where = "target") => ({
|
|
98
|
+
type,
|
|
99
|
+
pointerId: UndefinedOr.match(ev.pointerId, { onUndefined: () => 1, onDefined: identity }),
|
|
100
|
+
x: ev.clientX,
|
|
101
|
+
y: ev.clientY,
|
|
102
|
+
pressed: ev.buttons !== 0,
|
|
103
|
+
timeStamp: ev.timeStamp,
|
|
104
|
+
kind: kindOf(ev.pointerType),
|
|
105
|
+
button: buttonOf(ev.button),
|
|
106
|
+
primary: ev.isPrimary,
|
|
107
|
+
scroll: InputSource.NO_SCROLL,
|
|
108
|
+
onTarget: where === "target",
|
|
109
|
+
// The DOM's own event, for an app's gesture callback (#273).
|
|
110
|
+
raw: ev,
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* A {@link PointerFeed} of `types` on `target`: each DOM event emitted as its
|
|
114
|
+
* Like-event with the DOM event as `raw`; the returned function removes the listeners.
|
|
115
|
+
* `onTargetOf` says whether an event landed on the element the stream is for (#257): the
|
|
116
|
+
* target's own feed's always do; the page-wide feed's say.
|
|
117
|
+
*/
|
|
118
|
+
const feedOf = (target, types, options, onTargetOf = constTrue) => (emit) => {
|
|
119
|
+
const listener = (ev) => emit(toPointer(UndefinedOr.getOrThrow(POINTER_TYPE[ev.type]), ev, whereOf(onTargetOf(ev))), ev);
|
|
120
|
+
Arr.forEach(types, (type) => target.addEventListener(type, listener, options));
|
|
121
|
+
return () => Arr.forEach(types, (type) => target.removeEventListener(type, listener, options));
|
|
122
|
+
};
|
|
123
|
+
/** Whether a page-wide event landed on `target` or inside it (#257, Motion's `isNodeOrChild`). */
|
|
124
|
+
const landedOn = (target) => (ev) => Bool.and(isNode(target), isNode(ev.target)) && target.contains(ev.target);
|
|
125
|
+
/** Whether `value` is a DOM node (by `nodeType`, so an iframe's nodes count too). */
|
|
126
|
+
const isNode = (value) => Predicate.isObjectOrArray(value) && Predicate.isNumber(value.nodeType);
|
|
127
|
+
/** The window an element's page-wide events reach: its own document's (an iframe's element has its own), else the page's. */
|
|
128
|
+
const windowOf = (target) => Option.getOrElse(Option.flatMap(Option.flatMap(asKey(target), (key) => Option.fromNullishOr(key.ownerDocument)), (doc) => Option.fromNullishOr(doc.defaultView)), () => window);
|
|
129
|
+
/** `target` as a WeakMap key: an object, not a primitive. */
|
|
130
|
+
const asKey = (target) => Option.liftPredicate(target, Predicate.isObjectOrArray);
|
|
131
|
+
/** Whether `target` is an element (by `nodeType`, so an iframe's elements count too). */
|
|
132
|
+
const isElement = (target) => Predicate.isObjectOrArray(target) && target.nodeType === 1;
|
|
133
|
+
/** The downs adopted for `target` (#431): `heldPointer`'s `adopted` feed. */
|
|
134
|
+
const adoptedFeedOf = (adopters, target) => (emit) => {
|
|
135
|
+
const key = asKey(target);
|
|
136
|
+
if (Option.isNone(key))
|
|
137
|
+
return constVoid;
|
|
138
|
+
const listeners = Option.getOrElse(Option.fromUndefinedOr(adopters.get(key.value)), () => new Set());
|
|
139
|
+
listeners.add(emit);
|
|
140
|
+
adopters.set(key.value, listeners);
|
|
141
|
+
return () => {
|
|
142
|
+
listeners.delete(emit);
|
|
143
|
+
if (listeners.size === 0)
|
|
144
|
+
adopters.delete(key.value);
|
|
145
|
+
};
|
|
146
|
+
};
|
|
147
|
+
/** Whether `raw` is a `PointerEvent` with a button pressed: one a target can adopt (#431). */
|
|
148
|
+
const isPressedPointer = (raw) => Bool.and(Predicate.hasProperty(raw, "pointerId"), Predicate.hasProperty(raw, "buttons")) && raw.buttons !== 0;
|
|
149
|
+
/**
|
|
150
|
+
* Hand `raw` to `target`'s pointer feed as an adopted down (#431): at its viewport point, on the target
|
|
151
|
+
* if it landed there. `undefined`, delivering nothing, for what isn't a pressed pointer's event.
|
|
152
|
+
*/
|
|
153
|
+
const adoptPointerIn = (adopters) => (target, raw) => {
|
|
154
|
+
if (isPressedPointer(raw))
|
|
155
|
+
return Option.some(adopt(adopters, target, raw));
|
|
156
|
+
return Option.none();
|
|
157
|
+
};
|
|
158
|
+
/** {@link adoptPointerIn} of a pressed pointer's event. */
|
|
159
|
+
const adopt = (adopters, target, raw) => {
|
|
160
|
+
const down = toPointer("down", raw, whereOf(landedOn(target)(raw)));
|
|
161
|
+
Option.match(Option.flatMap(asKey(target), (key) => Option.fromUndefinedOr(adopters.get(key))), {
|
|
162
|
+
onNone: constVoid,
|
|
163
|
+
onSome: (listeners) => Arr.forEach(Arr.fromIterable(listeners), (emit) => emit(down, raw)),
|
|
164
|
+
});
|
|
165
|
+
return { ...down, adopted: true };
|
|
166
|
+
};
|
|
167
|
+
const CAPTURE_PASSIVE = { capture: true, passive: true };
|
|
168
|
+
const PASSIVE = { passive: true };
|
|
169
|
+
const ZERO = { x: 0, y: 0 };
|
|
170
|
+
/** Each held target's scroll since its hold began, while it's held (Q1: one per hold). */
|
|
171
|
+
// Module state (#460, Q7): each held target's scroll since its hold began, held weakly by the target,
|
|
172
|
+
// which one Environment holds at a time; the auto-scroller reads it beside the input.
|
|
173
|
+
const heldShifts = new WeakMap();
|
|
174
|
+
/**
|
|
175
|
+
* The scroll since `target`'s current hold began, summed over its window and its
|
|
176
|
+
* scrollable ancestors: a held drag's point minus this is the pointer's viewport
|
|
177
|
+
* position. `{ x: 0, y: 0 }` when nothing is held on it.
|
|
178
|
+
*
|
|
179
|
+
* @internal for the auto-scroller.
|
|
180
|
+
*/
|
|
181
|
+
export const heldScrollShift = (target) => Option.getOrElse(Option.flatMap(asKey(target), (key) => Option.fromUndefinedOr(heldShifts.get(key))), () => ZERO);
|
|
182
|
+
/**
|
|
183
|
+
* The {@link ScrollFeed} of a pointer target: its scrollable ancestors' scroll
|
|
184
|
+
* (`scrollLeft`/`scrollTop`) and its window's (`scrollX`/`scrollY`), stopping at a
|
|
185
|
+
* `position: fixed` element (no scroll outside it moves the target). On subscribe it
|
|
186
|
+
* reports each one's current position, then listens on the target's window: a
|
|
187
|
+
* capture-phase listener for element scrolls (only the tracked ancestors report) and
|
|
188
|
+
* one for the window's own scroll (the document's scroll event reaches the capture
|
|
189
|
+
* listener too, so only this one reports it).
|
|
190
|
+
*/
|
|
191
|
+
const scrollFeedOf = (target) => (emit) => {
|
|
192
|
+
const win = windowOf(target);
|
|
193
|
+
const doc = win.document;
|
|
194
|
+
const last = new Map();
|
|
195
|
+
const shift = { x: 0, y: 0 };
|
|
196
|
+
const key = asKey(target);
|
|
197
|
+
if (Option.isSome(key))
|
|
198
|
+
heldShifts.set(key.value, shift);
|
|
199
|
+
const report = (source, x, y, timeStamp) => {
|
|
200
|
+
Option.match(Option.fromUndefinedOr(last.get(source)), {
|
|
201
|
+
onNone: () => {
|
|
202
|
+
last.set(source, { x, y });
|
|
203
|
+
},
|
|
204
|
+
onSome: (prev) => {
|
|
205
|
+
shift.x += x - prev.x;
|
|
206
|
+
shift.y += y - prev.y;
|
|
207
|
+
prev.x = x;
|
|
208
|
+
prev.y = y;
|
|
209
|
+
},
|
|
210
|
+
});
|
|
211
|
+
emit(source, { x, y }, timeStamp);
|
|
212
|
+
};
|
|
213
|
+
// The positions at subscribe are the baselines (no event, so no time). Inside a
|
|
214
|
+
// `position: fixed` element only the scrollers up to it move the target, and the
|
|
215
|
+
// page doesn't.
|
|
216
|
+
const scrollers = Option.match(Option.liftPredicate(target, isElement), {
|
|
217
|
+
onNone: () => ({ ancestors: [], page: true }),
|
|
218
|
+
onSome: scrollersOf,
|
|
219
|
+
});
|
|
220
|
+
Arr.forEach(scrollers.ancestors, (el) => report(el, el.scrollLeft, el.scrollTop, 0));
|
|
221
|
+
if (scrollers.page)
|
|
222
|
+
report(win, win.scrollX, win.scrollY, 0);
|
|
223
|
+
const onElement = (ev) => {
|
|
224
|
+
const el = ev.target;
|
|
225
|
+
if (el === doc || !last.has(el))
|
|
226
|
+
return;
|
|
227
|
+
report(el, el.scrollLeft, el.scrollTop, ev.timeStamp);
|
|
228
|
+
};
|
|
229
|
+
const onWindow = (ev) => {
|
|
230
|
+
if ((ev.target !== doc && ev.target !== win) || !last.has(win))
|
|
231
|
+
return;
|
|
232
|
+
report(win, win.scrollX, win.scrollY, ev.timeStamp);
|
|
233
|
+
};
|
|
234
|
+
win.addEventListener("scroll", onElement, CAPTURE_PASSIVE);
|
|
235
|
+
win.addEventListener("scroll", onWindow, PASSIVE);
|
|
236
|
+
return () => {
|
|
237
|
+
win.removeEventListener("scroll", onElement, CAPTURE_PASSIVE);
|
|
238
|
+
win.removeEventListener("scroll", onWindow, PASSIVE);
|
|
239
|
+
if (Option.isSome(key) && heldShifts.get(key.value) === shift)
|
|
240
|
+
heldShifts.delete(key.value);
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
/**
|
|
244
|
+
* Whether a focus shows (#273, Motion's `whileFocus`): its target matches `:focus-visible`, which a
|
|
245
|
+
* keyboard's focus does and a pointer's click on most elements doesn't. A browser that doesn't know the
|
|
246
|
+
* selector shows every focus, as Motion reads it.
|
|
247
|
+
*/
|
|
248
|
+
const focusVisible = (target) => {
|
|
249
|
+
if (Bool.not(Predicate.hasProperty(target, "matches")))
|
|
250
|
+
return true;
|
|
251
|
+
try {
|
|
252
|
+
return target.matches(":focus-visible");
|
|
253
|
+
}
|
|
254
|
+
catch {
|
|
255
|
+
return true;
|
|
256
|
+
}
|
|
257
|
+
};
|
|
258
|
+
/** A `KeyboardEvent.key` in core's names: the keys core acts on, else `"other"`. */
|
|
259
|
+
// ADR-0037. Built once, as `kindOf` (#618, H1).
|
|
260
|
+
export const keyOf = /*#__PURE__*/ Match.type().pipe(Match.when(" ", () => "space"), Match.when("Enter", () => "enter"), Match.when("Escape", () => "escape"), Match.when("ArrowLeft", () => "left"), Match.when("ArrowRight", () => "right"), Match.when("ArrowUp", () => "up"), Match.when("ArrowDown", () => "down"), Match.when("Home", () => "home"), Match.when("End", () => "end"), Match.orElse(() => "other"));
|
|
261
|
+
/** The `<input>` types that act on a key themselves (#427): every other type is typed into. */
|
|
262
|
+
const ACTING_INPUTS = new Set(["button", "submit", "reset", "image", "checkbox", "radio", "color", "file", "range"]);
|
|
263
|
+
/** Elements that act on Enter and Space themselves (#427): a button's click, a disclosure's toggle, a list's opening. */
|
|
264
|
+
const ACTING_ELEMENTS = new Set(["BUTTON", "SUMMARY", "SELECT"]);
|
|
265
|
+
const TYPES_BOTH = { enter: "type", space: "type" };
|
|
266
|
+
const ACTS_ON_BOTH = { enter: "activate", space: "activate" };
|
|
267
|
+
/** A text field: Space is typed, Enter submits its form. */
|
|
268
|
+
const TEXT_FIELD = { enter: "activate", space: "type" };
|
|
269
|
+
/** A link: Enter follows it, Space scrolls the page. */
|
|
270
|
+
const LINK = { enter: "activate", space: "none" };
|
|
271
|
+
const ACTS_ON_NEITHER = { enter: "none", space: "none" };
|
|
272
|
+
/** What `el` does with Enter and Space itself (#427), from what it is. */
|
|
273
|
+
const keyActionsOf = (el) => {
|
|
274
|
+
if (Bool.or(el.isContentEditable === true, el.tagName === "TEXTAREA"))
|
|
275
|
+
return TYPES_BOTH;
|
|
276
|
+
if (el.tagName === "INPUT")
|
|
277
|
+
return Bool.match(ACTING_INPUTS.has(el.type), { onTrue: () => ACTS_ON_BOTH, onFalse: () => TEXT_FIELD });
|
|
278
|
+
if (ACTING_ELEMENTS.has(el.tagName))
|
|
279
|
+
return ACTS_ON_BOTH;
|
|
280
|
+
if (Bool.and(el.tagName === "A", el.hasAttribute("href")))
|
|
281
|
+
return LINK;
|
|
282
|
+
return ACTS_ON_NEITHER;
|
|
283
|
+
};
|
|
284
|
+
/**
|
|
285
|
+
* What a key's own target does with it (#427, core's `KeyAction`): Enter's and Space's, from the
|
|
286
|
+
* element they came from; nothing for any other key, which no **Keyboard press** reads.
|
|
287
|
+
*/
|
|
288
|
+
// Per key event: statements, no matcher or Option built each time (#618, H1).
|
|
289
|
+
const keyActionOf = (key, at) => {
|
|
290
|
+
if (Bool.and(key !== "enter", key !== "space"))
|
|
291
|
+
return "none";
|
|
292
|
+
if (isElement(at)) {
|
|
293
|
+
const actions = keyActionsOf(at);
|
|
294
|
+
if (key === "enter")
|
|
295
|
+
return actions.enter;
|
|
296
|
+
return actions.space;
|
|
297
|
+
}
|
|
298
|
+
return "none";
|
|
299
|
+
};
|
|
300
|
+
/** The HTML elements that take the keyboard's focus of themselves (#427): a link only with its `href`. */
|
|
301
|
+
const FOCUSABLE_ELEMENTS = new Set(["BUTTON", "INPUT", "SELECT", "TEXTAREA", "SUMMARY", "IFRAME"]);
|
|
302
|
+
/** Whether `el` takes focus of itself: a control, a link, an editable region, or one given a `tabindex`. */
|
|
303
|
+
const takesFocus = (el) => Bool.some([
|
|
304
|
+
FOCUSABLE_ELEMENTS.has(el.tagName),
|
|
305
|
+
Bool.and(Bool.or(el.tagName === "A", el.tagName === "AREA"), el.hasAttribute("href")),
|
|
306
|
+
el.isContentEditable,
|
|
307
|
+
el.hasAttribute("tabindex"),
|
|
308
|
+
]);
|
|
309
|
+
/**
|
|
310
|
+
* Makes a pressable element focusable, as Motion's press does: an HTML element that doesn't take focus
|
|
311
|
+
* of itself, with no `tabindex`, gets `tabindex="0"`, so a key can press it. An SVG element, or one
|
|
312
|
+
* already focusable, is left as it is. Called at mount, on the client.
|
|
313
|
+
*/
|
|
314
|
+
// #427: a **Keyboard press**.
|
|
315
|
+
export const makeFocusable = (target) => {
|
|
316
|
+
if (Bool.not(Predicate.hasProperty(target, "isContentEditable")))
|
|
317
|
+
return;
|
|
318
|
+
const el = target;
|
|
319
|
+
if (takesFocus(el))
|
|
320
|
+
return;
|
|
321
|
+
el.tabIndex = 0;
|
|
322
|
+
};
|
|
323
|
+
/** A key as the engine's portable event: core's key name, and the page's `preventDefault` as `handled`/`handle()`. */
|
|
324
|
+
const toKeyboard = (type, ev, target) => {
|
|
325
|
+
const key = keyOf(ev.key);
|
|
326
|
+
return {
|
|
327
|
+
type,
|
|
328
|
+
key,
|
|
329
|
+
repeat: ev.repeat,
|
|
330
|
+
timeStamp: ev.timeStamp,
|
|
331
|
+
fromTarget: ev.target === target,
|
|
332
|
+
handled: ev.defaultPrevented,
|
|
333
|
+
handle: () => ev.preventDefault(),
|
|
334
|
+
action: keyActionOf(key, ev.target),
|
|
335
|
+
raw: ev,
|
|
336
|
+
};
|
|
337
|
+
};
|
|
338
|
+
/** A `keydown` or `keyup` as the engine's portable phase. */
|
|
339
|
+
const keyTypeOf = (ev) => Bool.match(ev.type === "keydown", { onTrue: () => "down", onFalse: () => "up" });
|
|
340
|
+
/** Keys (#439): in the bubble phase, so after the page's own handlers, where a key's `handle()` still counts. */
|
|
341
|
+
const KEYS = { types: ["keydown", "keyup"], capture: false, windows: new WeakMap() };
|
|
342
|
+
/**
|
|
343
|
+
* Focus changes (#460): `focusin` and `focusout`, which a target's own focus and blur and those inside
|
|
344
|
+
* it both fire, in the capture phase, so no page handler stops them first. One listener a window
|
|
345
|
+
* where each target added four of its own.
|
|
346
|
+
*/
|
|
347
|
+
const FOCUS = { types: ["focusin", "focusout"], capture: true, windows: new WeakMap() };
|
|
348
|
+
/**
|
|
349
|
+
* `win`'s targets for `kind`, its listener added with the first (#439): an event goes to the targets it
|
|
350
|
+
* passed through innermost first, its path's order, as a pointer's down bubbles, so a press inside
|
|
351
|
+
* marks a key in core's **Press claims** before its ancestors read it. A listener for each target would
|
|
352
|
+
* run in the order the targets came.
|
|
353
|
+
*/
|
|
354
|
+
const pathWindowOf = (kind, win) => UndefinedOr.match(kind.windows.get(win), {
|
|
355
|
+
onDefined: identity,
|
|
356
|
+
onUndefined: () => {
|
|
357
|
+
const targets = new Map();
|
|
358
|
+
const listener = (ev) => Arr.forEach(ev.composedPath(), (node) => UndefinedOr.map(targets.get(node), (deliveries) => Arr.forEach(Arr.fromIterable(deliveries), (deliver) => deliver(ev))));
|
|
359
|
+
Arr.forEach(kind.types, (type) => win.addEventListener(type, listener, kind.capture));
|
|
360
|
+
const made = { targets, listener };
|
|
361
|
+
kind.windows.set(win, made);
|
|
362
|
+
return made;
|
|
363
|
+
},
|
|
364
|
+
});
|
|
365
|
+
/**
|
|
366
|
+
* `delivery` handed `kind`'s events on `target`'s window that pass through `target` (#439, #460), until
|
|
367
|
+
* the function returned stops it; the window's listener goes once no target there is left.
|
|
368
|
+
*/
|
|
369
|
+
const deliverAlong = (kind, target, delivery) => {
|
|
370
|
+
const win = windowOf(target);
|
|
371
|
+
const path = pathWindowOf(kind, win);
|
|
372
|
+
const el = target;
|
|
373
|
+
const deliveries = UndefinedOr.match(path.targets.get(el), {
|
|
374
|
+
onDefined: identity,
|
|
375
|
+
onUndefined: () => {
|
|
376
|
+
const made = new Set();
|
|
377
|
+
path.targets.set(el, made);
|
|
378
|
+
return made;
|
|
379
|
+
},
|
|
380
|
+
});
|
|
381
|
+
deliveries.add(delivery);
|
|
382
|
+
return () => {
|
|
383
|
+
deliveries.delete(delivery);
|
|
384
|
+
if (deliveries.size === 0)
|
|
385
|
+
path.targets.delete(el);
|
|
386
|
+
if (path.targets.size > 0)
|
|
387
|
+
return;
|
|
388
|
+
Arr.forEach(kind.types, (type) => win.removeEventListener(type, path.listener, kind.capture));
|
|
389
|
+
kind.windows.delete(win);
|
|
390
|
+
};
|
|
391
|
+
};
|
|
392
|
+
/**
|
|
393
|
+
* The keys at `target` or inside it (ADR-0037): `keydown`/`keyup` on its window, in the bubble
|
|
394
|
+
* phase, so after the page's own handlers, handed to the targets a key passed through innermost first
|
|
395
|
+
* (#439). An **Input feed** (#318): each key reaches its consumer inside the dispatch (ADR-0032), where
|
|
396
|
+
* its `handle()` still counts.
|
|
397
|
+
*/
|
|
398
|
+
const keyboardOf = (target) => (emit) => deliverAlong(KEYS, target, (ev) => emit(toKeyboard(keyTypeOf(ev), ev, target)));
|
|
399
|
+
/**
|
|
400
|
+
* `target`'s focus and blur, as an **Input feed** (#318), and since #439 those inside it, with
|
|
401
|
+
* `fromTarget: false`, so a **Keyboard press** that reached an ancestor from inside is cancelled when
|
|
402
|
+
* focus leaves the element its key came from. Since #460 `focusin` and `focusout` on its window, handed
|
|
403
|
+
* to the targets on their path ({@link FOCUS}): a target's own is the one whose path starts at it.
|
|
404
|
+
*/
|
|
405
|
+
const focusOf = (target) => (emit) => deliverAlong(FOCUS, target, (ev) => emit(toPathFocus(ev, target)));
|
|
406
|
+
/**
|
|
407
|
+
* A `focusin` or `focusout` as `target`'s focus or blur (#460): its own when the event's path starts at
|
|
408
|
+
* it, which shadow roots don't hide as they do `ev.target`, and shown as the element focus moved to or
|
|
409
|
+
* from shows it.
|
|
410
|
+
*/
|
|
411
|
+
const toPathFocus = (ev, target) => {
|
|
412
|
+
const origin = UndefinedOr.match(ev.composedPath()[0], { onUndefined: () => ev.target, onDefined: identity });
|
|
413
|
+
return {
|
|
414
|
+
type: Bool.match(ev.type === "focusin", { onTrue: () => "focus", onFalse: () => "blur" }),
|
|
415
|
+
timeStamp: ev.timeStamp,
|
|
416
|
+
visible: focusVisible(origin),
|
|
417
|
+
fromTarget: origin === target,
|
|
418
|
+
raw: ev,
|
|
419
|
+
};
|
|
420
|
+
};
|
|
421
|
+
/**
|
|
422
|
+
* Whether focus is on `target` or inside it (#460, core's `InputSource.focusWithin`): the active element
|
|
423
|
+
* of its root, its document or its shadow root, is it or inside it. A focus deeper in a shadow root
|
|
424
|
+
* inside it shows there as that root's host. A target that isn't a node has no focus.
|
|
425
|
+
*/
|
|
426
|
+
const focusWithin = (target) => {
|
|
427
|
+
if (Bool.not(isNode(target)))
|
|
428
|
+
return false;
|
|
429
|
+
const active = target.getRootNode().activeElement;
|
|
430
|
+
if (Predicate.isNullish(active))
|
|
431
|
+
return false;
|
|
432
|
+
return target.contains(active);
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* The DOM's **Input feeds** (#318): each shared per target by core's `InputFeed.byTarget`, so a
|
|
436
|
+
* target's hover, press and drag start one listener-set, not three. `pointer`'s target, page-wide
|
|
437
|
+
* and scroll feeds go through core's `InputSource.heldPointer` (one ordered emit).
|
|
438
|
+
*/
|
|
439
|
+
const make = Effect.gen(function* () {
|
|
440
|
+
// Client-only (ADR-0021, decision 7): every feed below is built on a live document.
|
|
441
|
+
yield* requireGlobal("DomInput.layer", "document");
|
|
442
|
+
// The Environment's adopted downs (#431): its own, not the module's, so two Environments on a page
|
|
443
|
+
// don't hear each other's (#618, F5).
|
|
444
|
+
const adopters = new WeakMap();
|
|
445
|
+
const pointer = InputFeed.byTarget((target) => InputSource.heldPointer({
|
|
446
|
+
target: feedOf(target, POINTER_EVENTS),
|
|
447
|
+
global: feedOf(windowOf(target), HELD_POINTER_EVENTS, CAPTURE_PASSIVE, landedOn(target)),
|
|
448
|
+
scroll: scrollFeedOf(target),
|
|
449
|
+
}));
|
|
450
|
+
// A target given Drag controls (#431, #507): the same Held pointer, with the downs handed to it.
|
|
451
|
+
const adoptablePointer = InputFeed.byTarget((target) => InputSource.heldPointer({
|
|
452
|
+
target: feedOf(target, POINTER_EVENTS),
|
|
453
|
+
adopted: adoptedFeedOf(adopters, target),
|
|
454
|
+
global: feedOf(windowOf(target), HELD_POINTER_EVENTS, CAPTURE_PASSIVE, landedOn(target)),
|
|
455
|
+
scroll: scrollFeedOf(target),
|
|
456
|
+
}));
|
|
457
|
+
const focus = InputFeed.byTarget(focusOf);
|
|
458
|
+
const keyboard = InputFeed.byTarget(keyboardOf);
|
|
459
|
+
return InputSource.InputSource.of({
|
|
460
|
+
pointer,
|
|
461
|
+
adoptablePointer,
|
|
462
|
+
focus,
|
|
463
|
+
keyboard,
|
|
464
|
+
focusWithin,
|
|
465
|
+
adoptPointer: adoptPointerIn(adopters),
|
|
466
|
+
});
|
|
467
|
+
});
|
|
468
|
+
/**
|
|
469
|
+
* Core's `InputSource` on the DOM's events: each target's pointer, keys and focus, shared by everyone
|
|
470
|
+
* who listens to it, for as long as the Layer lives. Building it on a server fails, with an error that
|
|
471
|
+
* says it's client-only.
|
|
472
|
+
*/
|
|
473
|
+
// Built with `Layer.effect`, so `make` runs in the layer's scope and the shared helpers' `RcMap`/`RcRef`
|
|
474
|
+
// caches live for the layer's lifetime. ADR-0021, decision 7.
|
|
475
|
+
export const InputDomLive = Layer.effect(InputSource.InputSource)(make);
|
|
476
|
+
//# sourceMappingURL=input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../src/internal/input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DOM Environment's Interpolators and registry (ADR-0035, ADR-0036): core's built-ins, with the
|
|
3
|
+
* DOM's colours (`cssColor`) before `unit` and the DOM's complex tier (`cssComplex`) in core's
|
|
4
|
+
* place, and the DOM's Key rules. `DomLive` provides the registry. Core names no CSS syntax; this is
|
|
5
|
+
* where the DOM's lives.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import * as Interpolator from "@wardic/core/Interpolator";
|
|
10
|
+
import * as InterpolatorRegistry from "@wardic/core/InterpolatorRegistry";
|
|
11
|
+
import * as Layer from "effect/Layer";
|
|
12
|
+
/**
|
|
13
|
+
* The DOM's kinds of value, in the order they're tried: core's number, array and unit, the DOM's colours
|
|
14
|
+
* before the unit, so `"#fff"` is a colour, and the DOM's complex values last.
|
|
15
|
+
*/
|
|
16
|
+
export declare const interpolators: ReadonlyArray<Interpolator.Entry<any, any>>;
|
|
17
|
+
/** The DOM's `InterpolatorRegistry`: its kinds (`interpolators`) and its Key rules (`keyRules`). `DomLive` provides it. */
|
|
18
|
+
export declare const InterpolatorRegistryDomLive: Layer.Layer<InterpolatorRegistry.InterpolatorRegistry>;
|
|
19
|
+
//# sourceMappingURL=interpolators.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolators.d.ts","sourceRoot":"","sources":["../../src/internal/interpolators.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,oBAAoB,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAKrC;;;GAGG;AAEH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAMrE,CAAA;AAED,2HAA2H;AAE3H,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,KAAK,CAAC,oBAAoB,CAAC,oBAAoB,CAE1C,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The DOM Environment's Interpolators and registry (ADR-0035, ADR-0036): core's built-ins, with the
|
|
3
|
+
* DOM's colours (`cssColor`) before `unit` and the DOM's complex tier (`cssComplex`) in core's
|
|
4
|
+
* place, and the DOM's Key rules. `DomLive` provides the registry. Core names no CSS syntax; this is
|
|
5
|
+
* where the DOM's lives.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import * as Interpolator from "@wardic/core/Interpolator";
|
|
10
|
+
import * as InterpolatorRegistry from "@wardic/core/InterpolatorRegistry";
|
|
11
|
+
import * as Layer from "effect/Layer";
|
|
12
|
+
import { cssColor } from "./colors.js";
|
|
13
|
+
import { cssComplex } from "./complex.js";
|
|
14
|
+
import { keyRules } from "./key-rules.js";
|
|
15
|
+
/**
|
|
16
|
+
* The DOM's kinds of value, in the order they're tried: core's number, array and unit, the DOM's colours
|
|
17
|
+
* before the unit, so `"#fff"` is a colour, and the DOM's complex values last.
|
|
18
|
+
*/
|
|
19
|
+
// As it was in core before ADR-0036.
|
|
20
|
+
export const interpolators = [
|
|
21
|
+
Interpolator.number,
|
|
22
|
+
Interpolator.array,
|
|
23
|
+
cssColor,
|
|
24
|
+
Interpolator.unit,
|
|
25
|
+
cssComplex,
|
|
26
|
+
];
|
|
27
|
+
/** The DOM's `InterpolatorRegistry`: its kinds (`interpolators`) and its Key rules (`keyRules`). `DomLive` provides it. */
|
|
28
|
+
// ADR-0035.
|
|
29
|
+
export const InterpolatorRegistryDomLive = Layer.effect(InterpolatorRegistry.InterpolatorRegistry)(InterpolatorRegistry.make(interpolators, keyRules));
|
|
30
|
+
//# sourceMappingURL=interpolators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interpolators.js","sourceRoot":"","sources":["../../src/internal/interpolators.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,oBAAoB,MAAM,mCAAmC,CAAA;AACzE,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEzC;;;GAGG;AACH,qCAAqC;AACrC,MAAM,CAAC,MAAM,aAAa,GAAgD;IACxE,YAAY,CAAC,MAAM;IACnB,YAAY,CAAC,KAAK;IAClB,QAAQ;IACR,YAAY,CAAC,IAAI;IACjB,UAAU;CACX,CAAA;AAED,2HAA2H;AAC3H,YAAY;AACZ,MAAM,CAAC,MAAM,2BAA2B,GAA2D,KAAK,CAAC,MAAM,CAC7G,oBAAoB,CAAC,oBAAoB,CAC1C,CAAC,oBAAoB,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as InterpolatorRegistry from "@wardic/core/InterpolatorRegistry";
|
|
2
|
+
/** `display` and `visibility`, turning to `none` or `hidden`, show their start until the run's last Frame. */
|
|
3
|
+
export declare const visibility: InterpolatorRegistry.KeyRule;
|
|
4
|
+
/**
|
|
5
|
+
* An empty end facing a complex value or a colour grows from, or goes back to, its Animatable none,
|
|
6
|
+
* and a shadow list blends shadow by shadow; the run's last Frame writes the target as given.
|
|
7
|
+
*/
|
|
8
|
+
export declare const animatableNone: InterpolatorRegistry.KeyRule;
|
|
9
|
+
/** The DOM's Key rules, in the order they're asked. */
|
|
10
|
+
export declare const keyRules: ReadonlyArray<InterpolatorRegistry.KeyRule>;
|
|
11
|
+
//# sourceMappingURL=key-rules.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-rules.d.ts","sourceRoot":"","sources":["../../src/internal/key-rules.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,oBAAoB,MAAM,mCAAmC,CAAA;AA8SzE,8GAA8G;AAC9G,eAAO,MAAM,UAAU,EAAE,oBAAoB,CAAC,OAO7C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,oBAAoB,CAAC,OAYjD,CAAA;AAED,uDAAuD;AACvD,eAAO,MAAM,QAAQ,EAAE,aAAa,CAAC,oBAAoB,CAAC,OAAO,CAAgC,CAAA"}
|