@wardic/dom 1.0.0-rc.4 → 1.0.0-rc.6

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.
Files changed (42) hide show
  1. package/dist/DomProbe.d.ts +3 -3
  2. package/dist/DomProbe.js +3 -3
  3. package/dist/DomScrollSource.d.ts +14 -0
  4. package/dist/DomScrollSource.d.ts.map +1 -0
  5. package/dist/DomScrollSource.js +15 -0
  6. package/dist/DomScrollSource.js.map +1 -0
  7. package/dist/FlushGate.js +1 -1
  8. package/dist/FlushGate.js.map +1 -1
  9. package/dist/ScrollOffset.d.ts +1 -1
  10. package/dist/ScrollOffset.js +1 -1
  11. package/dist/index.d.ts +14 -5
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +11 -2
  14. package/dist/index.js.map +1 -1
  15. package/dist/internal/content-watch.js +1 -1
  16. package/dist/internal/gate.d.ts +2 -1
  17. package/dist/internal/gate.d.ts.map +1 -1
  18. package/dist/internal/gate.js +2 -1
  19. package/dist/internal/gate.js.map +1 -1
  20. package/dist/internal/probe.d.ts +1 -1
  21. package/dist/internal/probe.d.ts.map +1 -1
  22. package/dist/internal/probe.js +2 -4
  23. package/dist/internal/probe.js.map +1 -1
  24. package/dist/internal/projection.d.ts +1 -1
  25. package/dist/internal/projection.d.ts.map +1 -1
  26. package/dist/internal/projection.js +1 -1
  27. package/dist/internal/projection.js.map +1 -1
  28. package/dist/internal/scroll.d.ts +14 -12
  29. package/dist/internal/scroll.d.ts.map +1 -1
  30. package/dist/internal/scroll.js +45 -10
  31. package/dist/internal/scroll.js.map +1 -1
  32. package/package.json +3 -3
  33. package/src/DomProbe.ts +3 -3
  34. package/src/DomScrollSource.ts +14 -0
  35. package/src/FlushGate.ts +1 -1
  36. package/src/ScrollOffset.ts +1 -1
  37. package/src/index.ts +18 -6
  38. package/src/internal/content-watch.ts +1 -1
  39. package/src/internal/gate.ts +2 -1
  40. package/src/internal/probe.ts +2 -4
  41. package/src/internal/projection.ts +1 -1
  42. package/src/internal/scroll.ts +29 -27
@@ -1,13 +1,13 @@
1
1
  /**
2
- * `Probe.scroll` for the DOM (#234, ADR-0043 *Amendment (#233, #234)*): a container's scroll as an
3
- * Atom, set inside the container's `scroll` event, the window's `resize`, and a resize of the
4
- * container or its content (#239), so a value derived from a scroll is written in the frame that
5
- * shows it (#45's pattern for `viewport`).
2
+ * `ScrollSource` for the DOM (#234, ADR-0043 *Amendment (#233, #234)*; the Probe's `scroll` until
3
+ * #518): a container's scroll as an Atom, set inside the container's `scroll` event, the window's
4
+ * `resize`, and a resize of the container or its content (#239), so a value derived from a scroll is
5
+ * written in the frame that shows it (#45's pattern for `viewport`).
6
6
  *
7
7
  * One listener set a container, however many read it: a reader adds its own measure to the
8
8
  * container's set and takes it out when its Scope closes, and the last one out removes the
9
- * listeners. An `RcMap` of containers, not a `SharedSource`: no pump, so a reader sets its Atom
10
- * inside the event, where `SharedSource`'s pump would set it a task after.
9
+ * listeners: core's `SharedSource.counted`, not a shared Stream, so a reader sets its Atom inside the
10
+ * event, where a Stream's consumer would set it after.
11
11
  *
12
12
  * A reader with a `target` or an `offset` reads its progress on `axis` through Motion's offsets
13
13
  * (`ScrollOffset`, the DOM's syntax; `render/dom/scroll/offsets` in framer-motion 13.4.0, ported):
@@ -26,10 +26,12 @@
26
26
  *
27
27
  * Observability: per event, so quiet (no span, no log).
28
28
  */
29
- import type * as Probe from "@wardic/core/Probe";
30
- import * as Effect from "effect/Effect";
31
- import { Atom, type AtomRegistry } from "effect/reactivity";
32
- import type * as Scope from "effect/Scope";
33
- /** The DOM's `Probe.scroll`, its Atoms set through `registry`: its containers held in the current Scope. */
34
- export declare const makeScroll: (registry: AtomRegistry.AtomRegistry) => Effect.Effect<(options?: Probe.ScrollOptions) => Effect.Effect<Atom.Atom<Probe.Scroll>, never, Scope.Scope>, never, Scope.Scope>;
29
+ import * as ScrollSource from "@wardic/core/ScrollSource";
30
+ import * as Layer from "effect/Layer";
31
+ import * as AtomRegistry from "effect/reactivity/AtomRegistry";
32
+ /**
33
+ * The DOM's `ScrollSource`, over the Environment's `AtomRegistry`. Marked pure, so an app that never
34
+ * builds it, with no `scroll` Feature, ships none of this module (#518).
35
+ */
36
+ export declare const layer: Layer.Layer<ScrollSource.ScrollSource, never, AtomRegistry.AtomRegistry>;
35
37
  //# sourceMappingURL=scroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/internal/scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,KAAK,KAAK,MAAM,oBAAoB,CAAA;AAGhD,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAQvC,OAAO,EAAE,IAAI,EAAE,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,KAAK,KAAK,KAAK,MAAM,cAAc,CAAA;AAyO1C,4GAA4G;AAC5G,eAAO,MAAM,UAAU,aACX,YAAY,CAAC,YAAY,KAClC,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,CAAC,aAAa,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAO/H,CAAA"}
1
+ {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../src/internal/scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AAMzD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAMrC,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAA;AAkT9D;;;GAGG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,KAAK,EAAE,YAAY,CAAC,YAAY,CAO1F,CAAA"}
@@ -1,14 +1,44 @@
1
+ /**
2
+ * `ScrollSource` for the DOM (#234, ADR-0043 *Amendment (#233, #234)*; the Probe's `scroll` until
3
+ * #518): a container's scroll as an Atom, set inside the container's `scroll` event, the window's
4
+ * `resize`, and a resize of the container or its content (#239), so a value derived from a scroll is
5
+ * written in the frame that shows it (#45's pattern for `viewport`).
6
+ *
7
+ * One listener set a container, however many read it: a reader adds its own measure to the
8
+ * container's set and takes it out when its Scope closes, and the last one out removes the
9
+ * listeners: core's `SharedSource.counted`, not a shared Stream, so a reader sets its Atom inside the
10
+ * event, where a Stream's consumer would set it after.
11
+ *
12
+ * A reader with a `target` or an `offset` reads its progress on `axis` through Motion's offsets
13
+ * (`ScrollOffset`, the DOM's syntax; `render/dom/scroll/offsets` in framer-motion 13.4.0, ported):
14
+ * each stop resolves to a scroll
15
+ * position, the target's edge (in the target's length, from where it sits in the container) less
16
+ * the container's edge (in the container's), and progress runs piecewise between them, clamped.
17
+ *
18
+ * **The content's size** (#239, ADR-0043 *Amendment (#239)*): content that grows or shrinks with the
19
+ * scroll still changes the range and a target's offsets, and fires no `scroll`. One `ResizeObserver`
20
+ * a container watches its own box and its direct children (the page: the body and its children),
21
+ * a `MutationObserver` keeping the children watched as they're added and removed, and each reader's
22
+ * target. A deep change resizes the direct child it sits in. Nothing runs while nothing changes; a
23
+ * change is read after its layout, so what it moves paints a frame later. Overflow no watched box
24
+ * shows (an absolutely positioned descendant hanging out) isn't seen: Motion's `trackContentSize`
25
+ * reads the size every frame instead, opt-in.
26
+ *
27
+ * Observability: per event, so quiet (no span, no log).
28
+ */
29
+ import * as ScrollSource from "@wardic/core/ScrollSource";
30
+ import * as SharedSource from "@wardic/core/SharedSource";
1
31
  import * as Arr from "effect/Array";
2
32
  import * as Bool from "effect/Boolean";
3
33
  import * as Effect from "effect/Effect";
4
- import * as Equal from "effect/Equal";
5
34
  import * as Iter from "effect/Iterable";
35
+ import * as Layer from "effect/Layer";
6
36
  import * as Match from "effect/Match";
7
37
  import * as Option from "effect/Option";
8
38
  import * as Order from "effect/Order";
9
39
  import * as Predicate from "effect/Predicate";
10
- import * as RcMap from "effect/RcMap";
11
- import { Atom } from "effect/reactivity";
40
+ import * as Atom from "effect/reactivity/Atom";
41
+ import * as AtomRegistry from "effect/reactivity/AtomRegistry";
12
42
  import * as Rec from "effect/Record";
13
43
  import * as Str from "effect/String";
14
44
  import * as UndefinedOr from "effect/UndefinedOr";
@@ -170,12 +200,6 @@ const sameScroll = (a, b) => Arr.every([
170
200
  ], Boolean);
171
201
  /** The page's scroller: `document.scrollingElement`, else the root element. */
172
202
  const pageOf = () => Option.getOrElse(Option.fromNullOr(document.scrollingElement), () => document.documentElement);
173
- /** The DOM's `Probe.scroll`, its Atoms set through `registry`: its containers held in the current Scope. */
174
- export const makeScroll = (registry) => Effect.map(
175
- // Each container's listeners while a reader holds them, the last one out removing them (#618, M7:
176
- // Effect's `RcMap` where a count was kept by hand). An element is keyed by reference: Effect's
177
- // structural `Hash` would walk a DOM node.
178
- RcMap.make({ lookup: (element) => Effect.acquireRelease(Effect.sync(() => open(element)), (container) => Effect.sync(container.remove)) }), (containers) => readerOf(registry, containers));
179
203
  /** A container's listener set, opened for its first reader. */
180
204
  const open = (element) => {
181
205
  const readers = new Set();
@@ -217,7 +241,7 @@ const open = (element) => {
217
241
  /** A reader of a container's scroll: the container's listeners held from `containers` while its Scope is open. */
218
242
  const readerOf = (registry, containers) => Effect.fnUntraced(function* (options = {}) {
219
243
  const element = UndefinedOr.match(options.container, { onUndefined: pageOf, onDefined: (given) => given });
220
- const container = yield* RcMap.get(containers, Equal.byReferenceUnsafe(element));
244
+ const container = yield* containers(element);
221
245
  const measure = measureOf(element, options);
222
246
  let last = measure();
223
247
  // Mounted while read, not kept alive: a kept-alive Atom's node never leaves the registry.
@@ -241,4 +265,15 @@ const readerOf = (registry, containers) => Effect.fnUntraced(function* (options
241
265
  });
242
266
  return atom;
243
267
  });
268
+ /**
269
+ * The DOM's `ScrollSource`, over the Environment's `AtomRegistry`. Marked pure, so an app that never
270
+ * builds it, with no `scroll` Feature, ships none of this module (#518).
271
+ */
272
+ export const layer = /*#__PURE__*/ Layer.effect(ScrollSource.ScrollSource)(
273
+ /*#__PURE__*/ Effect.map(AtomRegistry.AtomRegistry, (registry) => ({
274
+ // Each container's listeners while a reader holds them, the last one out removing them (#618, M7;
275
+ // #518: `SharedSource.counted`, where Effect's `RcMap` put its code in every app). An element is its
276
+ // own key, never hashed.
277
+ scroll: readerOf(registry, SharedSource.counted(open, (container) => Effect.sync(container.remove))),
278
+ })));
244
279
  //# sourceMappingURL=scroll.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/internal/scroll.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/internal/scroll.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,YAAY,MAAM,2BAA2B,CAAA;AACzD,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA;AACnC,OAAO,KAAK,IAAI,MAAM,gBAAgB,CAAA;AACtC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,kBAAkB,CAAA;AAC7C,OAAO,KAAK,IAAI,MAAM,wBAAwB,CAAA;AAC9C,OAAO,KAAK,YAAY,MAAM,gCAAgC,CAAA;AAC9D,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AAEpC,OAAO,KAAK,GAAG,MAAM,eAAe,CAAA;AACpC,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,YAAY,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAgBtE,sDAAsD;AACtD,MAAM,WAAW,GAAqC,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;AAEvF,uDAAuD;AACvD,MAAM,OAAO,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;AAQ3E;;;;GAIG;AACH,MAAM,UAAU,GAA2B,KAAK,CAAC,IAAI,EAAQ,CAAC,IAAI,CAChE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,IAAI,CAAC,EACvE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CACvG,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,EACzE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAC7I,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CACjH,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,EACnD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAC1G,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,EACjF,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAoB,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAC1G,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,EAClF,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAC7E,CAAA;AAKD,0HAA0H;AAC1H,MAAM,YAAY,GAAG,CAAC,IAAY,EAAQ,EAAE,CAC1C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE;IAClC,MAAM,EAAE,GAAS,EAAE;QACjB,MAAM,CAAC,MAAM,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QAC5D,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,EAAE,GAAS,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;CACnG,CAAC,CAAA;AAEJ,gIAAgI;AAChI,MAAM,MAAM,GAAsC,KAAK,CAAC,IAAI,EAAqB,CAAC,IAAI,CACpF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAC7C,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1D,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAY,CAAC,CACrC,CAAA;AAED,kFAAkF;AAClF,MAAM,UAAU,GAAG,CAAC,IAAuB,EAAE,eAAuB,EAAE,YAAoB,EAAE,WAAmB,EAAU,EAAE;IACzH,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,WAAW,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAA;AACpI,CAAC,CAAA;AAQD,MAAM,UAAU,GAAsB,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,IAAU,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAE3F,MAAM,OAAO,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAElE;;;;GAIG;AACH,MAAM,eAAe,GAAG,CAAC,KAA4B,EAAE,OAAe,EAAU,EAAE;IAChF,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CACpB,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EACtF,UAAU,CACX,CAAA;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAQ,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;QACzH,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;QACf,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE;YAChB,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAA;YAC3D,4FAA4F;YAC5F,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;YAC/F,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,EAAE;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC;gBACrC,OAAO,EAAE,GAAG,EAAE,CACZ,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE;oBACpB,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;oBACpC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CACrB,OAAO,CACL,IAAI,CAAC,QAAQ;wBACX,CAAC,EAAE,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAC7I;iBACJ,CAAC;aACL,CAAC,CAAA;QACJ,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED;;;;;;GAMG;AACH,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAE,SAAkB,EAAE,CAAS,EAAE,CAAS,EAAS,EAAE;IAC3F,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,EAAE,OAAO,KAAK,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACrE,MAAM,OAAO,GAAG,OAAkB,CAAA;IAClC,kGAAkG;IAClG,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAAE,OAAO,aAAa,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IACzF,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,EAAE,CAAC,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;IAC1H,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAA;QACpC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;QACpC,MAAM,GAAG,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAA;QAC3C,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,EAAE,CAAA;QAC1C,OAAO,OAAO,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;IACnF,CAAC;IACD,IAAI,OAAO,YAAY,kBAAkB,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,EAAE,CAAA;QAC7B,OAAO,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,SAAS,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,CAAU,EAAoB,EAAE,CAAC,CAAC,YAAY,WAAW,CAAA;AAEhF;;;;;;GAMG;AACH,MAAM,aAAa,GAAG,CAAC,SAAkB,EAAE,MAAe,EAAE,CAAS,EAAE,CAAS,EAAS,EAAE;IACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAC7C,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC,SAAS,EAAE,CAAA;AACpF,CAAC,CAAA;AAED,wFAAwF;AACxF,MAAM,QAAQ,GAAG,CAAC,OAAuB,EAAE,QAAwB,EAAE,CAAS,EAAE,CAAS,EAAS,EAAE;IAClG,IAAI,OAAO,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACzC,OAAO,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,aAAa,CAAC,EAAE;QAC5E,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QACxB,MAAM,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC;KACrF,CAAC,CAAA;AACJ,CAAC,CAAA;AAED,4FAA4F;AAC5F,MAAM,MAAM,GAAG,CAAC,MAAe,EAAuD,EAAE,CACtF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,YAAY,kBAAkB,EAAE,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,EAAE;IACnF,MAAM,EAAE,GAAG,EAAE,CAAE,MAA6B,CAAC,OAAO,EAAE;IACtD,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,YAAY,EAAE,CAAC;CAC5E,CAAC,CAAA;AAEJ,4HAA4H;AAC5H,MAAM,aAAa,GAAG,CAAC,OAAe,EAAE,MAAc,EAAU,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC,CAAA;AAEjJ,2GAA2G;AAC3G,MAAM,SAAS,GAAG,CAAC,OAAgB,EAAE,OAA6B,EAA+B,EAAE;IACjG,MAAM,EAAE,IAAI,GAAG,GAAG,EAAE,GAAG,OAAO,CAAA;IAC9B,oGAAoG;IACpG,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAA+C,EAAE;QACxF,WAAW,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG;QACnC,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK;KAC5B,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,MAA6B,EAAE,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IACpI,wFAAwF;IACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5G,MAAM,MAAM,GAAG,CAAC,OAAe,EAAU,EAAE;QACzC,MAAM,GAAG,GAAG,MAAM,KAAK,OAAO,CAAA;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,GAAU,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;QACvH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE;YAC3B,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC;YAC5E,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;SAC9B,CAAC,CAAA;QACF,MAAM,CAAC,GAAG,IAAI,KAAK,GAAG,CAAA;QACtB,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAA;QACjH,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAC5F,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;QACpF,OAAO,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA;IAC1H,CAAC,CAAA;IACD,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;QACtC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACrC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAA;QACzD,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QAC3D,MAAM,UAAU,GAAG,CAAC,EAAa,EAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,KAAK,EAAE,CAAC,CAAA;QAC9E,OAAO;YACL,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;YAChJ,CAAC,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,CAAC,EAAE;SACjJ,CAAA;IACH,CAAC,CAAA;AACH,CAAC,CAAA;AAED,kGAAkG;AAClG,MAAM,UAAU,GAAG,CAAC,CAAsB,EAAE,CAAsB,EAAW,EAAE,CAC7E,GAAG,CAAC,KAAK,CACP;IACE,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;IAC3B,CAAC,CAAC,CAAC,CAAC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO;IAC3B,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;IACzB,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM;IACzB,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;IAC7B,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ;CAC9B,EACD,OAAO,CACR,CAAA;AAEH,+EAA+E;AAC/E,MAAM,MAAM,GAAG,GAAY,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;AAE5H,+DAA+D;AAC/D,MAAM,IAAI,GAAG,CAAC,OAAgB,EAAa,EAAE;IAC3C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAc,CAAA;IACrC,MAAM,OAAO,GAAG,GAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IACnE,kFAAkF;IAClF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,gBAAgB,EAAE,OAAO,KAAK,QAAQ,CAAC,eAAe,CAAC,CAAA;IACjG,MAAM,OAAO,GAAgB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAgB,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAA;IAC5G,OAAO,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;IAC1C,+FAA+F;IAC/F,kFAAkF;IAClF,MAAM,KAAK,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,CAAA;IACzC,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAA;IAC9B,2FAA2F;IAC3F,kGAAkG;IAClG,+CAA+C;IAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QACpC,MAAM,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;QACzC,OAAO,EAAE,GAAG,EAAE;YACZ,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAA;YACxB,OAAO,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAA;QACjD,CAAC;KACF,CAAC,CAAA;IACF,MAAM,SAAS,GAAc;QAC3B,OAAO;QACP,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE;YAChB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACvB,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACxC,CAAC;QACD,MAAM,EAAE,GAAG,EAAE;YACX,OAAO,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC9C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC7C,KAAK,CAAC,UAAU,EAAE,CAAA;YAClB,YAAY,EAAE,CAAA;QAChB,CAAC;KACF,CAAA;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,kHAAkH;AAClH,MAAM,QAAQ,GAAG,CAAC,QAAmC,EAAE,UAA8E,EAAE,EAAE,CACvI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAyB,EAAE;IAC7D,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,SAAgC,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,CAAA;IACjI,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;IAC3C,IAAI,IAAI,GAAG,OAAO,EAAE,CAAA;IACpB,0FAA0F;IAC1F,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,IAAI,GAAG,GAAS,EAAE;QACtB,MAAM,IAAI,GAAG,OAAO,EAAE,CAAA;QACtB,IAAI,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,OAAM;QAClC,IAAI,GAAG,IAAI,CAAA;QACX,QAAQ,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC1B,CAAC,CAAA;IACD,KAAK,CAAC,CAAC,MAAM,CAAC,cAAc,CAC1B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAC9C,GAAG,EAAE,CACH,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;QACf,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAC9B,OAAO,EAAE,CAAA;IACX,CAAC,CAAC,CACL,CAAA;IACD,iFAAiF;IACjF,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,MAA6B,CAAC,EAAE;QACjF,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI;QACzB,MAAM,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KACzH,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC,CAAC,CAAA;AAEJ;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAA6E,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC;AAClJ,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACjE,kGAAkG;IAClG,qGAAqG;IACrG,yBAAyB;IACzB,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,SAAoB,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;CAChH,CAAC,CAAC,CACJ,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wardic/dom",
3
- "version": "1.0.0-rc.4",
3
+ "version": "1.0.0-rc.6",
4
4
  "description": "The browser environment for Wardic: its clock, renderer, input, probe and projection system, as Effect Layers.",
5
5
  "keywords": [
6
6
  "animation",
@@ -55,13 +55,13 @@
55
55
  "typecheck:tests": "../../node_modules/typescript-7/bin/tsc -p tsconfig.test.json"
56
56
  },
57
57
  "dependencies": {
58
- "@wardic/core": "1.0.0-rc.4",
58
+ "@wardic/core": "1.0.0-rc.6",
59
59
  "culori": "^4.0.2"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "effect": "^4.1.1"
63
63
  },
64
64
  "devDependencies": {
65
- "@wardic/test": "1.0.0-rc.4"
65
+ "@wardic/test": "1.0.0-rc.6"
66
66
  }
67
67
  }
package/src/DomProbe.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * The DOM's Probe: boxes from `getBoundingClientRect`, sizes and visibility from the observers, the
3
- * viewport, the reduced-motion preference from `matchMedia`, whether the page is shown, and a container's
4
- * scroll. `layer` needs the Environment's `AtomRegistry`, which it writes its live values through;
5
- * `DomLive` provides both.
3
+ * viewport, the reduced-motion preference from `matchMedia`, and whether the page is shown. `layer` needs
4
+ * the Environment's `AtomRegistry`, which it writes its live values through; `DomLive` provides both. A
5
+ * container's scroll is `DomScrollSource`'s.
6
6
  *
7
7
  * @example
8
8
  * import * as DomProbe from "@wardic/dom/DomProbe"
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The DOM's scroll, core's `ScrollSource`: a container's scroll as an Atom, set inside the container's
3
+ * `scroll` event, the window's `resize`, and a resize of the container or its content, so a value derived
4
+ * from a scroll is written in the frame that shows it. `layer` needs the Environment's `AtomRegistry`,
5
+ * which it writes through. A binding builds it where something reads a scroll: the Solid binding's
6
+ * `scroll` Feature does, beside `DomLive`.
7
+ *
8
+ * @example
9
+ * import * as DomScrollSource from "@wardic/dom/DomScrollSource"
10
+ *
11
+ * const scroll = DomScrollSource.layer.pipe(Layer.provide(AtomRegistry.layer))
12
+ */
13
+ // `@wardic/dom/DomScrollSource` (#518, ADR-0041's names): the DOM Probe's `scroll` until then.
14
+ export { layer } from "./internal/scroll.ts"
package/src/FlushGate.ts CHANGED
@@ -21,7 +21,7 @@
21
21
  import * as Context from "effect/Context"
22
22
  import * as Effect from "effect/Effect"
23
23
  import * as Layer from "effect/Layer"
24
- import { Atom } from "effect/reactivity"
24
+ import * as Atom from "effect/reactivity/Atom"
25
25
  import type * as Scope from "effect/Scope"
26
26
  import * as internal from "./internal/gate.ts"
27
27
  import { makeRunner } from "./internal/runner.ts"
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Scroll offsets, the DOM's: Motion's syntax for where a target's progress through its scroll container
3
- * runs, from 0 to 1, which the DOM's `Probe.scroll` resolves. Core takes an offset as its Environment's
3
+ * runs, from 0 to 1, which the DOM's `ScrollSource` resolves. Core takes an offset as its Environment's
4
4
  * own and passes it through, so its syntax, its names and its units are the DOM's.
5
5
  *
6
6
  * - **An edge** is a name (`start`, `center`, `end`), a fraction of a length (`0.5`), or a CSS length:
package/src/index.ts CHANGED
@@ -2,12 +2,13 @@
2
2
  * `@wardic/dom`: the browser Environment, and the framework-free pieces a binding builds on. It's for
3
3
  * binding authors, Wardic's own and any other, and it's Effect-typed.
4
4
  *
5
- * - **An app** imports {@link DomLive}, the composed Environment it hands its binding, and
6
- * {@link CheckFrames}, to check its Frames in development.
5
+ * - **An app** imports {@link DomLive}, the composed Environment it hands its binding,
6
+ * {@link CheckFrames}, to check its Frames in development, and {@link FrameLoopMetrics}, to record the
7
+ * Frame loop's metrics.
7
8
  * - **A binding** imports each module by its subpath, as a namespace
8
9
  * (`import * as FlushGate from "@wardic/dom/FlushGate"`), and the root re-exports each one:
9
10
  * - the DOM's implementations of core's services, each with its `layer` (Effect's platform
10
- * convention: `DomRenderer`, `DomInput`, `DomProbe`, `DomClock`, `DomAnnouncer`,
11
+ * convention: `DomRenderer`, `DomInput`, `DomProbe`, `DomScrollSource`, `DomClock`, `DomAnnouncer`,
11
12
  * `DomInterpolators`, `DomPositionalKeys`, `DomDefaultTransition`), and `DomKeyRules`, the Key
12
13
  * rules `DomInterpolators.layer` installs, which has none of its own;
13
14
  * - dom's own concepts, by the glossary's names: `FlushGate`, `ProjectionSystem`,
@@ -16,7 +17,8 @@
16
17
  *
17
18
  * Everything under `internal/` is dom's own and not exported.
18
19
  */
19
- // `@wardic/dom` (#132, ADR-0041), Tier 2 (ADR-0008); CheckFrames re-exported for an app (#586).
20
+ // `@wardic/dom` (#132, ADR-0041), Tier 2 (ADR-0008); CheckFrames re-exported for an app (#586), and
21
+ // FrameLoopMetrics (#518).
20
22
  import type * as Clock from "@wardic/core/Clock"
21
23
  import * as FrameLoop from "@wardic/core/FrameLoop"
22
24
  import type * as InterpolatorRegistry from "@wardic/core/InterpolatorRegistry"
@@ -27,7 +29,7 @@ import type * as Probe from "@wardic/core/Probe"
27
29
  import type * as RefreshFrameSource from "@wardic/core/RefreshFrameSource"
28
30
  import type * as Renderer from "@wardic/core/Renderer"
29
31
  import * as Layer from "effect/Layer"
30
- import { AtomRegistry } from "effect/reactivity"
32
+ import * as AtomRegistry from "effect/reactivity/AtomRegistry"
31
33
  import * as DomAnnouncer from "./DomAnnouncer.ts"
32
34
  import * as DomClock from "./DomClock.ts"
33
35
  import * as DomDefaultTransition from "./DomDefaultTransition.ts"
@@ -36,11 +38,12 @@ import * as DomPositionalKeys from "./DomPositionalKeys.ts"
36
38
  import * as DomProbe from "./DomProbe.ts"
37
39
  import * as DomRenderer from "./DomRenderer.ts"
38
40
 
39
- export const VERSION = "1.0.0-rc.4"
41
+ export const VERSION = "1.0.0-rc.6"
40
42
 
41
43
  export * as DomClock from "./DomClock.ts"
42
44
  export * as DomInput from "./DomInput.ts"
43
45
  export * as DomProbe from "./DomProbe.ts"
46
+ export * as DomScrollSource from "./DomScrollSource.ts"
44
47
  export * as DomRenderer from "./DomRenderer.ts"
45
48
  export * as DomAnnouncer from "./DomAnnouncer.ts"
46
49
  export * as DomInterpolators from "./DomInterpolators.ts"
@@ -70,6 +73,15 @@ export * as Report from "./Report.ts"
70
73
  // ADR-0030 decision 7; re-exported here for an app (#586).
71
74
  export { CheckFrames } from "@wardic/core/FrameLoop"
72
75
 
76
+ /**
77
+ * Core's Frame loop metrics (`FrameLoop.layerMetrics`), here for an app. Merged beside {@link DomLive},
78
+ * the loop records the animations running, the runs that settled or failed, and each tick's ms, for the
79
+ * devtools or an exporter to read. Without it, it records none: see
80
+ * https://wardic.dev/guides/observability.
81
+ */
82
+ // #518, ADR-0067 *Amendment (#518)*, decision 2: opt-in, re-exported here for an app, as `CheckFrames` is.
83
+ export { layerMetrics as FrameLoopMetrics } from "@wardic/core/FrameLoop"
84
+
73
85
  /**
74
86
  * The browser Environment, composed: the DOM's services, core's interpolators with the DOM's Key
75
87
  * rules, and the Frame loop over the DOM's Clock, needing nothing else. Hand it to `WardicProvider`'s
@@ -3,7 +3,7 @@
3
3
  * observed now and as it's added, and let go as it's removed. A deep change counts once it resizes
4
4
  * the direct child it sits in.
5
5
  *
6
- * - `Probe.scroll` watches a container's (the page's: the body's), so its range follows its content
6
+ * - The DOM's `ScrollSource` watches a container's (the page's: the body's), so its range follows its content
7
7
  * (#239, ADR-0043 *Amendment (#239)*).
8
8
  * - The Projection system watches the page's, so a node that content elsewhere moved is measured again
9
9
  * (#261, ADR-0018 *Amendment (#261)*).
@@ -55,7 +55,8 @@ import * as FrameLoop from "@wardic/core/FrameLoop"
55
55
  import * as RefreshFrameSource from "@wardic/core/RefreshFrameSource"
56
56
  import * as Renderer from "@wardic/core/Renderer"
57
57
  import * as Cause from "effect/Cause"
58
- import { Atom, AtomRegistry } from "effect/reactivity"
58
+ import * as Atom from "effect/reactivity/Atom"
59
+ import * as AtomRegistry from "effect/reactivity/AtomRegistry"
59
60
  import * as Effect from "effect/Effect"
60
61
  import * as Exit from "effect/Exit"
61
62
  import type * as Fiber from "effect/Fiber"
@@ -35,9 +35,9 @@ import * as Predicate from "effect/Predicate"
35
35
  import * as Queue from "effect/Queue"
36
36
  import * as Stream from "effect/Stream"
37
37
  import * as UndefinedOr from "effect/UndefinedOr"
38
- import { Atom, AtomRegistry } from "effect/reactivity"
38
+ import * as Atom from "effect/reactivity/Atom"
39
+ import * as AtomRegistry from "effect/reactivity/AtomRegistry"
39
40
  import { requireGlobal } from "./require-global.ts"
40
- import { makeScroll } from "./scroll.ts"
41
41
 
42
42
  /** Map a `DOMRect`-like value onto the engine's portable {@link Bounds}. */
43
43
  /** An `IntersectionObserver`'s init from the Probe's options: each left out when not given. */
@@ -157,8 +157,6 @@ const make = Effect.gen(function* () {
157
157
  viewport,
158
158
  prefersReducedMotion,
159
159
  visible,
160
- // A container's scroll, set within its events (#234): `scroll.ts`.
161
- scroll: yield* makeScroll(registry),
162
160
  observeResize,
163
161
  observeIntersection,
164
162
  })
@@ -89,7 +89,7 @@ import * as Result from "effect/Result"
89
89
  import * as Scope from "effect/Scope"
90
90
  import * as Str from "effect/String"
91
91
  import * as UndefinedOr from "effect/UndefinedOr"
92
- import { AtomRegistry } from "effect/reactivity"
92
+ import * as AtomRegistry from "effect/reactivity/AtomRegistry"
93
93
  import {
94
94
  type BoxSize,
95
95
  type Holdable,
@@ -1,13 +1,13 @@
1
1
  /**
2
- * `Probe.scroll` for the DOM (#234, ADR-0043 *Amendment (#233, #234)*): a container's scroll as an
3
- * Atom, set inside the container's `scroll` event, the window's `resize`, and a resize of the
4
- * container or its content (#239), so a value derived from a scroll is written in the frame that
5
- * shows it (#45's pattern for `viewport`).
2
+ * `ScrollSource` for the DOM (#234, ADR-0043 *Amendment (#233, #234)*; the Probe's `scroll` until
3
+ * #518): a container's scroll as an Atom, set inside the container's `scroll` event, the window's
4
+ * `resize`, and a resize of the container or its content (#239), so a value derived from a scroll is
5
+ * written in the frame that shows it (#45's pattern for `viewport`).
6
6
  *
7
7
  * One listener set a container, however many read it: a reader adds its own measure to the
8
8
  * container's set and takes it out when its Scope closes, and the last one out removes the
9
- * listeners. An `RcMap` of containers, not a `SharedSource`: no pump, so a reader sets its Atom
10
- * inside the event, where `SharedSource`'s pump would set it a task after.
9
+ * listeners: core's `SharedSource.counted`, not a shared Stream, so a reader sets its Atom inside the
10
+ * event, where a Stream's consumer would set it after.
11
11
  *
12
12
  * A reader with a `target` or an `offset` reads its progress on `axis` through Motion's offsets
13
13
  * (`ScrollOffset`, the DOM's syntax; `render/dom/scroll/offsets` in framer-motion 13.4.0, ported):
@@ -26,18 +26,19 @@
26
26
  *
27
27
  * Observability: per event, so quiet (no span, no log).
28
28
  */
29
- import type * as Probe from "@wardic/core/Probe"
29
+ import * as ScrollSource from "@wardic/core/ScrollSource"
30
+ import * as SharedSource from "@wardic/core/SharedSource"
30
31
  import * as Arr from "effect/Array"
31
32
  import * as Bool from "effect/Boolean"
32
33
  import * as Effect from "effect/Effect"
33
- import * as Equal from "effect/Equal"
34
34
  import * as Iter from "effect/Iterable"
35
+ import * as Layer from "effect/Layer"
35
36
  import * as Match from "effect/Match"
36
37
  import * as Option from "effect/Option"
37
38
  import * as Order from "effect/Order"
38
39
  import * as Predicate from "effect/Predicate"
39
- import * as RcMap from "effect/RcMap"
40
- import { Atom, type AtomRegistry } from "effect/reactivity"
40
+ import * as Atom from "effect/reactivity/Atom"
41
+ import * as AtomRegistry from "effect/reactivity/AtomRegistry"
41
42
  import * as Rec from "effect/Record"
42
43
  import type * as Scope from "effect/Scope"
43
44
  import * as Str from "effect/String"
@@ -219,7 +220,7 @@ const sizeOf = (target: Element): { readonly width: number; readonly height: num
219
220
  const plainProgress = (current: number, length: number): number => Bool.match(length === 0, { onTrue: () => 1, onFalse: () => current / length })
220
221
 
221
222
  /** What a reader measures, for `options` on `element`. Reads layout: called in events, never per frame. */
222
- const measureOf = (element: Element, options: Probe.ScrollOptions): (() => Probe.Scroll) => {
223
+ const measureOf = (element: Element, options: ScrollSource.Options): (() => ScrollSource.Scroll) => {
223
224
  const { axis = "y" } = options
224
225
  // The DOM's offset (core passes it through as the Environment's own); `All` with a target and none.
225
226
  const offset = UndefinedOr.match(options.offset as ScrollOffset.ScrollOffset | undefined, {
@@ -256,7 +257,7 @@ const measureOf = (element: Element, options: Probe.ScrollOptions): (() => Probe
256
257
  }
257
258
 
258
259
  /** Whether two scrolls read the same: an unchanged one isn't set, so its readers hear nothing. */
259
- const sameScroll = (a: Probe.Scroll, b: Probe.Scroll): boolean =>
260
+ const sameScroll = (a: ScrollSource.Scroll, b: ScrollSource.Scroll): boolean =>
260
261
  Arr.every(
261
262
  [
262
263
  a.x.current === b.x.current,
@@ -272,18 +273,6 @@ const sameScroll = (a: Probe.Scroll, b: Probe.Scroll): boolean =>
272
273
  /** The page's scroller: `document.scrollingElement`, else the root element. */
273
274
  const pageOf = (): Element => Option.getOrElse(Option.fromNullOr(document.scrollingElement), () => document.documentElement)
274
275
 
275
- /** The DOM's `Probe.scroll`, its Atoms set through `registry`: its containers held in the current Scope. */
276
- export const makeScroll = (
277
- registry: AtomRegistry.AtomRegistry,
278
- ): Effect.Effect<(options?: Probe.ScrollOptions) => Effect.Effect<Atom.Atom<Probe.Scroll>, never, Scope.Scope>, never, Scope.Scope> =>
279
- Effect.map(
280
- // Each container's listeners while a reader holds them, the last one out removing them (#618, M7:
281
- // Effect's `RcMap` where a count was kept by hand). An element is keyed by reference: Effect's
282
- // structural `Hash` would walk a DOM node.
283
- RcMap.make({ lookup: (element: Element) => Effect.acquireRelease(Effect.sync(() => open(element)), (container) => Effect.sync(container.remove)) }),
284
- (containers) => readerOf(registry, containers),
285
- )
286
-
287
276
  /** A container's listener set, opened for its first reader. */
288
277
  const open = (element: Element): Container => {
289
278
  const readers = new Set<() => void>()
@@ -324,10 +313,10 @@ const open = (element: Element): Container => {
324
313
  }
325
314
 
326
315
  /** A reader of a container's scroll: the container's listeners held from `containers` while its Scope is open. */
327
- const readerOf = (registry: AtomRegistry.AtomRegistry, containers: RcMap.RcMap<Element, Container>) =>
328
- Effect.fnUntraced(function* (options: Probe.ScrollOptions = {}) {
316
+ const readerOf = (registry: AtomRegistry.AtomRegistry, containers: (element: Element) => Effect.Effect<Container, never, Scope.Scope>) =>
317
+ Effect.fnUntraced(function* (options: ScrollSource.Options = {}) {
329
318
  const element = UndefinedOr.match(options.container as Element | undefined, { onUndefined: pageOf, onDefined: (given) => given })
330
- const container = yield* RcMap.get(containers, Equal.byReferenceUnsafe(element))
319
+ const container = yield* containers(element)
331
320
  const measure = measureOf(element, options)
332
321
  let last = measure()
333
322
  // Mounted while read, not kept alive: a kept-alive Atom's node never leaves the registry.
@@ -354,3 +343,16 @@ const readerOf = (registry: AtomRegistry.AtomRegistry, containers: RcMap.RcMap<E
354
343
  })
355
344
  return atom
356
345
  })
346
+
347
+ /**
348
+ * The DOM's `ScrollSource`, over the Environment's `AtomRegistry`. Marked pure, so an app that never
349
+ * builds it, with no `scroll` Feature, ships none of this module (#518).
350
+ */
351
+ export const layer: Layer.Layer<ScrollSource.ScrollSource, never, AtomRegistry.AtomRegistry> = /*#__PURE__*/ Layer.effect(ScrollSource.ScrollSource)(
352
+ /*#__PURE__*/ Effect.map(AtomRegistry.AtomRegistry, (registry) => ({
353
+ // Each container's listeners while a reader holds them, the last one out removing them (#618, M7;
354
+ // #518: `SharedSource.counted`, where Effect's `RcMap` put its code in every app). An element is its
355
+ // own key, never hashed.
356
+ scroll: readerOf(registry, SharedSource.counted(open, (container: Container) => Effect.sync(container.remove))),
357
+ })),
358
+ )