@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.
Files changed (285) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +8 -2
  3. package/THIRD_PARTY_NOTICES.md +145 -0
  4. package/dist/Appear.d.ts +24 -0
  5. package/dist/Appear.d.ts.map +1 -0
  6. package/dist/Appear.js +25 -0
  7. package/dist/Appear.js.map +1 -0
  8. package/dist/Color.d.ts +14 -0
  9. package/dist/Color.d.ts.map +1 -0
  10. package/dist/Color.js +16 -0
  11. package/dist/Color.js.map +1 -0
  12. package/dist/DomAnnouncer.d.ts +13 -0
  13. package/dist/DomAnnouncer.d.ts.map +1 -0
  14. package/dist/DomAnnouncer.js +14 -0
  15. package/dist/DomAnnouncer.js.map +1 -0
  16. package/dist/DomClock.d.ts +11 -0
  17. package/dist/DomClock.d.ts.map +1 -0
  18. package/dist/DomClock.js +12 -0
  19. package/dist/DomClock.js.map +1 -0
  20. package/dist/DomDefaultTransition.d.ts +12 -0
  21. package/dist/DomDefaultTransition.d.ts.map +1 -0
  22. package/dist/DomDefaultTransition.js +13 -0
  23. package/dist/DomDefaultTransition.js.map +1 -0
  24. package/dist/DomInput.d.ts +13 -0
  25. package/dist/DomInput.d.ts.map +1 -0
  26. package/dist/DomInput.js +15 -0
  27. package/dist/DomInput.js.map +1 -0
  28. package/dist/DomInterpolators.d.ts +13 -0
  29. package/dist/DomInterpolators.d.ts.map +1 -0
  30. package/dist/DomInterpolators.js +14 -0
  31. package/dist/DomInterpolators.js.map +1 -0
  32. package/dist/DomKeyRules.d.ts +13 -0
  33. package/dist/DomKeyRules.d.ts.map +1 -0
  34. package/dist/DomKeyRules.js +14 -0
  35. package/dist/DomKeyRules.js.map +1 -0
  36. package/dist/DomPositionalKeys.d.ts +13 -0
  37. package/dist/DomPositionalKeys.d.ts.map +1 -0
  38. package/dist/DomPositionalKeys.js +14 -0
  39. package/dist/DomPositionalKeys.js.map +1 -0
  40. package/dist/DomProbe.d.ts +13 -0
  41. package/dist/DomProbe.d.ts.map +1 -0
  42. package/dist/DomProbe.js +14 -0
  43. package/dist/DomProbe.js.map +1 -0
  44. package/dist/DomProjectionSystem.d.ts +28 -0
  45. package/dist/DomProjectionSystem.d.ts.map +1 -0
  46. package/dist/DomProjectionSystem.js +41 -0
  47. package/dist/DomProjectionSystem.js.map +1 -0
  48. package/dist/DomRenderer.d.ts +13 -0
  49. package/dist/DomRenderer.d.ts.map +1 -0
  50. package/dist/DomRenderer.js +15 -0
  51. package/dist/DomRenderer.js.map +1 -0
  52. package/dist/FlushGate.d.ts +48 -0
  53. package/dist/FlushGate.d.ts.map +1 -0
  54. package/dist/FlushGate.js +62 -0
  55. package/dist/FlushGate.js.map +1 -0
  56. package/dist/MeasuredPair.d.ts +14 -0
  57. package/dist/MeasuredPair.d.ts.map +1 -0
  58. package/dist/MeasuredPair.js +16 -0
  59. package/dist/MeasuredPair.js.map +1 -0
  60. package/dist/OwnValues.d.ts +14 -0
  61. package/dist/OwnValues.d.ts.map +1 -0
  62. package/dist/OwnValues.js +15 -0
  63. package/dist/OwnValues.js.map +1 -0
  64. package/dist/ProjectionSystem.d.ts +34 -0
  65. package/dist/ProjectionSystem.d.ts.map +1 -0
  66. package/dist/ProjectionSystem.js +29 -0
  67. package/dist/ProjectionSystem.js.map +1 -0
  68. package/dist/ReorderController.d.ts +41 -0
  69. package/dist/ReorderController.d.ts.map +1 -0
  70. package/dist/ReorderController.js +44 -0
  71. package/dist/ReorderController.js.map +1 -0
  72. package/dist/Report.d.ts +12 -0
  73. package/dist/Report.d.ts.map +1 -0
  74. package/dist/Report.js +13 -0
  75. package/dist/Report.js.map +1 -0
  76. package/dist/ScrollOffset.d.ts +34 -0
  77. package/dist/ScrollOffset.d.ts.map +1 -0
  78. package/dist/ScrollOffset.js +42 -0
  79. package/dist/ScrollOffset.js.map +1 -0
  80. package/dist/Style.d.ts +15 -0
  81. package/dist/Style.d.ts.map +1 -0
  82. package/dist/Style.js +17 -0
  83. package/dist/Style.js.map +1 -0
  84. package/dist/Svg.d.ts +13 -0
  85. package/dist/Svg.d.ts.map +1 -0
  86. package/dist/Svg.js +14 -0
  87. package/dist/Svg.js.map +1 -0
  88. package/dist/Variables.d.ts +13 -0
  89. package/dist/Variables.d.ts.map +1 -0
  90. package/dist/Variables.js +14 -0
  91. package/dist/Variables.js.map +1 -0
  92. package/dist/index.d.ts +72 -0
  93. package/dist/index.d.ts.map +1 -0
  94. package/dist/index.js +60 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/internal/announcer.d.ts +50 -0
  97. package/dist/internal/announcer.d.ts.map +1 -0
  98. package/dist/internal/announcer.js +115 -0
  99. package/dist/internal/announcer.js.map +1 -0
  100. package/dist/internal/appear.d.ts +169 -0
  101. package/dist/internal/appear.d.ts.map +1 -0
  102. package/dist/internal/appear.js +499 -0
  103. package/dist/internal/appear.js.map +1 -0
  104. package/dist/internal/auto-scroll.d.ts +24 -0
  105. package/dist/internal/auto-scroll.d.ts.map +1 -0
  106. package/dist/internal/auto-scroll.js +124 -0
  107. package/dist/internal/auto-scroll.js.map +1 -0
  108. package/dist/internal/clock.d.ts +19 -0
  109. package/dist/internal/clock.d.ts.map +1 -0
  110. package/dist/internal/clock.js +39 -0
  111. package/dist/internal/clock.js.map +1 -0
  112. package/dist/internal/colors.d.ts +45 -0
  113. package/dist/internal/colors.d.ts.map +1 -0
  114. package/dist/internal/colors.js +193 -0
  115. package/dist/internal/colors.js.map +1 -0
  116. package/dist/internal/complex.d.ts +24 -0
  117. package/dist/internal/complex.d.ts.map +1 -0
  118. package/dist/internal/complex.js +28 -0
  119. package/dist/internal/complex.js.map +1 -0
  120. package/dist/internal/content-watch.d.ts +20 -0
  121. package/dist/internal/content-watch.d.ts.map +1 -0
  122. package/dist/internal/content-watch.js +76 -0
  123. package/dist/internal/content-watch.js.map +1 -0
  124. package/dist/internal/default-transition.d.ts +25 -0
  125. package/dist/internal/default-transition.d.ts.map +1 -0
  126. package/dist/internal/default-transition.js +41 -0
  127. package/dist/internal/default-transition.js.map +1 -0
  128. package/dist/internal/drag-defaults.d.ts +18 -0
  129. package/dist/internal/drag-defaults.d.ts.map +1 -0
  130. package/dist/internal/drag-defaults.js +38 -0
  131. package/dist/internal/drag-defaults.js.map +1 -0
  132. package/dist/internal/gate.d.ts +186 -0
  133. package/dist/internal/gate.d.ts.map +1 -0
  134. package/dist/internal/gate.js +453 -0
  135. package/dist/internal/gate.js.map +1 -0
  136. package/dist/internal/input.d.ts +41 -0
  137. package/dist/internal/input.d.ts.map +1 -0
  138. package/dist/internal/input.js +476 -0
  139. package/dist/internal/input.js.map +1 -0
  140. package/dist/internal/interpolators.d.ts +19 -0
  141. package/dist/internal/interpolators.d.ts.map +1 -0
  142. package/dist/internal/interpolators.js +30 -0
  143. package/dist/internal/interpolators.js.map +1 -0
  144. package/dist/internal/key-rules.d.ts +11 -0
  145. package/dist/internal/key-rules.d.ts.map +1 -0
  146. package/dist/internal/key-rules.js +244 -0
  147. package/dist/internal/key-rules.js.map +1 -0
  148. package/dist/internal/measure.d.ts +150 -0
  149. package/dist/internal/measure.d.ts.map +1 -0
  150. package/dist/internal/measure.js +278 -0
  151. package/dist/internal/measure.js.map +1 -0
  152. package/dist/internal/measured-pairs.d.ts +38 -0
  153. package/dist/internal/measured-pairs.d.ts.map +1 -0
  154. package/dist/internal/measured-pairs.js +251 -0
  155. package/dist/internal/measured-pairs.js.map +1 -0
  156. package/dist/internal/own-values.d.ts +35 -0
  157. package/dist/internal/own-values.d.ts.map +1 -0
  158. package/dist/internal/own-values.js +117 -0
  159. package/dist/internal/own-values.js.map +1 -0
  160. package/dist/internal/pass-ends.d.ts +21 -0
  161. package/dist/internal/pass-ends.d.ts.map +1 -0
  162. package/dist/internal/pass-ends.js +14 -0
  163. package/dist/internal/pass-ends.js.map +1 -0
  164. package/dist/internal/positional-keys.d.ts +16 -0
  165. package/dist/internal/positional-keys.d.ts.map +1 -0
  166. package/dist/internal/positional-keys.js +21 -0
  167. package/dist/internal/positional-keys.js.map +1 -0
  168. package/dist/internal/probe.d.ts +10 -0
  169. package/dist/internal/probe.d.ts.map +1 -0
  170. package/dist/internal/probe.js +117 -0
  171. package/dist/internal/probe.js.map +1 -0
  172. package/dist/internal/projection-defaults.d.ts +34 -0
  173. package/dist/internal/projection-defaults.d.ts.map +1 -0
  174. package/dist/internal/projection-defaults.js +21 -0
  175. package/dist/internal/projection-defaults.js.map +1 -0
  176. package/dist/internal/projection.d.ts +529 -0
  177. package/dist/internal/projection.d.ts.map +1 -0
  178. package/dist/internal/projection.js +4990 -0
  179. package/dist/internal/projection.js.map +1 -0
  180. package/dist/internal/renderer.d.ts +86 -0
  181. package/dist/internal/renderer.d.ts.map +1 -0
  182. package/dist/internal/renderer.js +616 -0
  183. package/dist/internal/renderer.js.map +1 -0
  184. package/dist/internal/reorder.d.ts +159 -0
  185. package/dist/internal/reorder.d.ts.map +1 -0
  186. package/dist/internal/reorder.js +437 -0
  187. package/dist/internal/reorder.js.map +1 -0
  188. package/dist/internal/report.d.ts +30 -0
  189. package/dist/internal/report.d.ts.map +1 -0
  190. package/dist/internal/report.js +60 -0
  191. package/dist/internal/report.js.map +1 -0
  192. package/dist/internal/require-global.d.ts +11 -0
  193. package/dist/internal/require-global.d.ts.map +1 -0
  194. package/dist/internal/require-global.js +31 -0
  195. package/dist/internal/require-global.js.map +1 -0
  196. package/dist/internal/reveal.d.ts +16 -0
  197. package/dist/internal/reveal.d.ts.map +1 -0
  198. package/dist/internal/reveal.js +66 -0
  199. package/dist/internal/reveal.js.map +1 -0
  200. package/dist/internal/runner.d.ts +21 -0
  201. package/dist/internal/runner.d.ts.map +1 -0
  202. package/dist/internal/runner.js +48 -0
  203. package/dist/internal/runner.js.map +1 -0
  204. package/dist/internal/scale-correction.d.ts +80 -0
  205. package/dist/internal/scale-correction.d.ts.map +1 -0
  206. package/dist/internal/scale-correction.js +227 -0
  207. package/dist/internal/scale-correction.js.map +1 -0
  208. package/dist/internal/scroll.d.ts +35 -0
  209. package/dist/internal/scroll.d.ts.map +1 -0
  210. package/dist/internal/scroll.js +244 -0
  211. package/dist/internal/scroll.js.map +1 -0
  212. package/dist/internal/scrollers.d.ts +35 -0
  213. package/dist/internal/scrollers.d.ts.map +1 -0
  214. package/dist/internal/scrollers.js +38 -0
  215. package/dist/internal/scrollers.js.map +1 -0
  216. package/dist/internal/starting-style.d.ts +141 -0
  217. package/dist/internal/starting-style.d.ts.map +1 -0
  218. package/dist/internal/starting-style.js +300 -0
  219. package/dist/internal/starting-style.js.map +1 -0
  220. package/dist/internal/svg.d.ts +60 -0
  221. package/dist/internal/svg.d.ts.map +1 -0
  222. package/dist/internal/svg.js +257 -0
  223. package/dist/internal/svg.js.map +1 -0
  224. package/dist/internal/variables.d.ts +45 -0
  225. package/dist/internal/variables.d.ts.map +1 -0
  226. package/dist/internal/variables.js +92 -0
  227. package/dist/internal/variables.js.map +1 -0
  228. package/package.json +65 -4
  229. package/src/Appear.ts +45 -0
  230. package/src/Color.ts +24 -0
  231. package/src/DomAnnouncer.ts +22 -0
  232. package/src/DomClock.ts +13 -0
  233. package/src/DomDefaultTransition.ts +16 -0
  234. package/src/DomInput.ts +22 -0
  235. package/src/DomInterpolators.ts +16 -0
  236. package/src/DomKeyRules.ts +17 -0
  237. package/src/DomPositionalKeys.ts +16 -0
  238. package/src/DomProbe.ts +15 -0
  239. package/src/DomProjectionSystem.ts +44 -0
  240. package/src/DomRenderer.ts +26 -0
  241. package/src/FlushGate.ts +81 -0
  242. package/src/MeasuredPair.ts +15 -0
  243. package/src/OwnValues.ts +19 -0
  244. package/src/ProjectionSystem.ts +51 -0
  245. package/src/ReorderController.ts +72 -0
  246. package/src/Report.ts +17 -0
  247. package/src/ScrollOffset.ts +54 -0
  248. package/src/Style.ts +37 -0
  249. package/src/Svg.ts +21 -0
  250. package/src/Variables.ts +17 -0
  251. package/src/index.ts +106 -0
  252. package/src/internal/announcer.ts +132 -0
  253. package/src/internal/appear.ts +739 -0
  254. package/src/internal/auto-scroll.ts +176 -0
  255. package/src/internal/clock.ts +45 -0
  256. package/src/internal/colors.ts +258 -0
  257. package/src/internal/complex.ts +29 -0
  258. package/src/internal/content-watch.ts +84 -0
  259. package/src/internal/culori.d.ts +58 -0
  260. package/src/internal/default-transition.ts +50 -0
  261. package/src/internal/drag-defaults.ts +54 -0
  262. package/src/internal/gate.ts +593 -0
  263. package/src/internal/input.ts +579 -0
  264. package/src/internal/interpolators.ts +33 -0
  265. package/src/internal/key-rules.ts +357 -0
  266. package/src/internal/measure.ts +357 -0
  267. package/src/internal/measured-pairs.ts +297 -0
  268. package/src/internal/own-values.ts +166 -0
  269. package/src/internal/pass-ends.ts +23 -0
  270. package/src/internal/positional-keys.ts +24 -0
  271. package/src/internal/probe.ts +176 -0
  272. package/src/internal/projection-defaults.ts +45 -0
  273. package/src/internal/projection.ts +5999 -0
  274. package/src/internal/renderer.ts +646 -0
  275. package/src/internal/reorder.ts +604 -0
  276. package/src/internal/report.ts +69 -0
  277. package/src/internal/require-global.ts +46 -0
  278. package/src/internal/reveal.ts +69 -0
  279. package/src/internal/runner.ts +64 -0
  280. package/src/internal/scale-correction.ts +310 -0
  281. package/src/internal/scroll.ts +356 -0
  282. package/src/internal/scrollers.ts +51 -0
  283. package/src/internal/starting-style.ts +396 -0
  284. package/src/internal/svg.ts +300 -0
  285. package/src/internal/variables.ts +145 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scale-correction.js","sourceRoot":"","sources":["../../src/internal/scale-correction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
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`).
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. 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.
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 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>;
35
+ //# sourceMappingURL=scroll.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,244 @@
1
+ import * as Arr from "effect/Array";
2
+ import * as Bool from "effect/Boolean";
3
+ import * as Effect from "effect/Effect";
4
+ import * as Equal from "effect/Equal";
5
+ import * as Iter from "effect/Iterable";
6
+ import * as Match from "effect/Match";
7
+ import * as Option from "effect/Option";
8
+ import * as Order from "effect/Order";
9
+ import * as Predicate from "effect/Predicate";
10
+ import * as RcMap from "effect/RcMap";
11
+ import { Atom } from "effect/reactivity";
12
+ import * as Rec from "effect/Record";
13
+ import * as Str from "effect/String";
14
+ import * as UndefinedOr from "effect/UndefinedOr";
15
+ import * as ScrollOffset from "../ScrollOffset.js";
16
+ import { counted, watchChildren, watchPage } from "./content-watch.js";
17
+ /** Motion's named edges, as fractions of a length. */
18
+ const NAMED_EDGES = { start: 0, center: 0.5, end: 1 };
19
+ /** Whether a string is one of Motion's named edges. */
20
+ const isNamed = (edge) => Object.hasOwn(NAMED_EDGES, edge);
21
+ /**
22
+ * How far along `length` an edge sits: Motion's `resolveEdge`, less its inset. A name or a
23
+ * number is a fraction of the length; `px` is a distance, `%` a fraction, `vw` / `vh` a share of
24
+ * the viewport; any other string a fraction. Built once, at module load: per event per reader.
25
+ */
26
+ const edgeOffset = Match.type().pipe(Match.when({ edge: Match.number }, ({ edge, length }) => length * edge), Match.when({ edge: (e) => Predicate.isString(e) && isNamed(e) }, ({ edge, length }) => length * Option.getOrElse(Rec.get(NAMED_EDGES, String(edge)), () => 0)), Match.when({ edge: (e) => Predicate.isString(e) && Str.endsWith("px")(e) }, ({ edge }) => Number.parseFloat(String(edge))), Match.when({ edge: (e) => Predicate.isString(e) && Str.endsWith("%")(e) }, ({ edge, length }) => (length * Number.parseFloat(String(edge))) / 100), Match.when({ edge: (e) => Predicate.isString(e) && Str.endsWith("vw")(e) }, ({ edge }) => (Number.parseFloat(String(edge)) / 100) * document.documentElement.clientWidth), Match.when({ edge: (e) => Predicate.isString(e) && Str.endsWith("vh")(e) }, ({ edge }) => (Number.parseFloat(String(edge)) / 100) * document.documentElement.clientHeight), Match.orElse(({ edge, length }) => length * Number.parseFloat(String(edge))));
27
+ /** A one-string stop's edges: two with a space, else a name for both, else the target's against the container's start. */
28
+ const pairOfString = (stop) => Bool.match(Str.includes(" ")(stop), {
29
+ onTrue: () => {
30
+ const [target = "0", container = "0"] = Str.split(stop, " ");
31
+ return [target, container];
32
+ },
33
+ onFalse: () => [stop, Bool.match(isNamed(stop), { onTrue: () => stop, onFalse: () => "0" })],
34
+ });
35
+ /** A stop's edges (Motion's `resolveOffset`): a pair as it is, a number for both, a string as {@link pairOfString} reads it. */
36
+ const pairOf = Match.type().pipe(Match.when(Match.number, (n) => [n, n]), Match.when(Match.string, (s) => pairOfString(Str.trim(s))), Match.orElse((pair) => pair));
37
+ /** A stop as a scroll position: where the target's edge meets the container's. */
38
+ const positionOf = (stop, containerLength, targetLength, targetInset) => {
39
+ const [target, container] = pairOf(stop);
40
+ return targetInset + edgeOffset({ edge: target, length: targetLength }) - edgeOffset({ edge: container, length: containerLength });
41
+ };
42
+ const byPosition = Order.mapInput(Order.Number, (mark) => mark.at);
43
+ const clamp01 = (v) => Math.min(1, Math.max(0, v));
44
+ /**
45
+ * Progress at `current` through the scroll positions `stops`, 0 at the first and 1 at the last,
46
+ * evenly between them, clamped: Motion's `interpolate(stops, defaultOffset, { clamp: false })`
47
+ * then `clamp(0, 1)`. Descending stops read as Motion's interpolate reads them, reversed.
48
+ */
49
+ const progressThrough = (stops, current) => {
50
+ const marks = Arr.sort(Arr.map(stops, (at, i) => ({ at, progress: i / Math.max(1, stops.length - 1) })), byPosition);
51
+ return Option.match(Arr.matchLeft(marks, { onEmpty: () => Option.none(), onNonEmpty: (head) => Option.some(head) }), {
52
+ onNone: () => 0,
53
+ onSome: (first) => {
54
+ const last = Option.getOrElse(Arr.last(marks), () => first);
55
+ // Within the range: the segment `current` falls in, blended; outside it, the end it's past.
56
+ const segment = Arr.findFirst(Arr.zip(marks, Arr.drop(marks, 1)), ([, to]) => current <= to.at);
57
+ return Bool.match(current <= first.at, {
58
+ onTrue: () => clamp01(first.progress),
59
+ onFalse: () => Option.match(segment, {
60
+ onNone: () => clamp01(last.progress),
61
+ onSome: ([from, to]) => clamp01(from.progress +
62
+ (to.progress - from.progress) * Bool.match(to.at === from.at, { onTrue: () => 1, onFalse: () => (current - from.at) / (to.at - from.at) })),
63
+ }),
64
+ });
65
+ },
66
+ });
67
+ };
68
+ /**
69
+ * Where `element` sits in `container`: Motion's `calcInset`, the offset chain up to it, SVG included.
70
+ * A `position: static` container is no offset parent, so the chain passes it (#395): where it has
71
+ * left the container, the container's own offset to the same parent comes off ({@link fromContainer}).
72
+ * A chain that ends instead measures from the document, or for a fixed target the viewport, in any
73
+ * container, as Motion's does: the page's own chain ends so, and stays as it is.
74
+ */
75
+ const insetOf = (element, container, x, y) => {
76
+ if (Bool.or(element === null, element === container))
77
+ return { x, y };
78
+ const current = element;
79
+ // Per scroll event, and per step of the chain: statements, no matcher or Option built (#618, F6).
80
+ if (Bool.not(container.contains(current)))
81
+ return fromContainer(container, current, x, y);
82
+ if (isHTMLElement(current))
83
+ return insetOf(current.offsetParent, container, x + current.offsetLeft, y + current.offsetTop);
84
+ if (current.tagName === "svg") {
85
+ const parent = current.parentElement;
86
+ if (parent === null)
87
+ return { x, y };
88
+ const own = current.getBoundingClientRect();
89
+ const box = parent.getBoundingClientRect();
90
+ return insetOf(parent, container, x + own.left - box.left, y + own.top - box.top);
91
+ }
92
+ if (current instanceof SVGGraphicsElement) {
93
+ const box = current.getBBox();
94
+ return insetOf(current.ownerSVGElement, container, x + box.x, y + box.y);
95
+ }
96
+ return { x, y };
97
+ };
98
+ const isHTMLElement = (e) => e instanceof HTMLElement;
99
+ /**
100
+ * `x`, `y` from `parent`, where the offset chain left `container`, made `container`'s: its own offset
101
+ * to `parent` and its border taken off (#395). A static container's descendants measure from its
102
+ * nearest positioned ancestor (or `<body>`, or a table cell), as it does itself, and an `offsetTop`
103
+ * ignores its scroll, as a positioned container's descendants' do: this is the inset a positioned one
104
+ * gives.
105
+ */
106
+ const fromContainer = (container, parent, x, y) => {
107
+ const own = offsetTo(container, parent, 0, 0);
108
+ return { x: x - own.x - container.clientLeft, y: y - own.y - container.clientTop };
109
+ };
110
+ /** `element`'s offset along its offset chain up to `ancestor` (its end, for `null`). */
111
+ const offsetTo = (element, ancestor, x, y) => {
112
+ if (element === ancestor)
113
+ return { x, y };
114
+ return Option.match(Option.filter(Option.fromNullOr(element), isHTMLElement), {
115
+ onNone: () => ({ x, y }),
116
+ onSome: (e) => offsetTo(e.offsetParent, ancestor, x + e.offsetLeft, y + e.offsetTop),
117
+ });
118
+ };
119
+ /** A target's size: an SVG shape's box, else its client size (Motion's `getTargetSize`). */
120
+ const sizeOf = (target) => Bool.match(Bool.and(target instanceof SVGGraphicsElement, target.tagName !== "svg"), {
121
+ onTrue: () => target.getBBox(),
122
+ onFalse: () => ({ width: target.clientWidth, height: target.clientHeight }),
123
+ });
124
+ /** A container's progress on one axis with no target or offset: Motion's `progress(0, length, current)`, 1 for no range. */
125
+ const plainProgress = (current, length) => Bool.match(length === 0, { onTrue: () => 1, onFalse: () => current / length });
126
+ /** What a reader measures, for `options` on `element`. Reads layout: called in events, never per frame. */
127
+ const measureOf = (element, options) => {
128
+ const { axis = "y" } = options;
129
+ // The DOM's offset (core passes it through as the Environment's own); `All` with a target and none.
130
+ const offset = UndefinedOr.match(options.offset, {
131
+ onUndefined: () => ScrollOffset.All,
132
+ onDefined: (given) => given,
133
+ });
134
+ const target = UndefinedOr.match(options.target, { onUndefined: () => element, onDefined: (given) => given });
135
+ // A target's progress, or an offset's through the container itself; else the plain one.
136
+ const resolves = Bool.or(Predicate.isNotUndefined(options.target), Predicate.isNotUndefined(options.offset));
137
+ const onAxis = (current) => {
138
+ const own = target === element;
139
+ const inset = Bool.match(own, { onTrue: () => ({ x: 0, y: 0 }), onFalse: () => insetOf(target, element, 0, 0) });
140
+ const size = Bool.match(own, {
141
+ onTrue: () => ({ width: element.scrollWidth, height: element.scrollHeight }),
142
+ onFalse: () => sizeOf(target),
143
+ });
144
+ const y = axis === "y";
145
+ const containerLength = Bool.match(y, { onTrue: () => element.clientHeight, onFalse: () => element.clientWidth });
146
+ const targetLength = Bool.match(y, { onTrue: () => size.height, onFalse: () => size.width });
147
+ const targetInset = Bool.match(y, { onTrue: () => inset.y, onFalse: () => inset.x });
148
+ return progressThrough(Arr.map(offset, (stop) => positionOf(stop, containerLength, targetLength, targetInset)), current);
149
+ };
150
+ return () => {
151
+ const x = Math.abs(element.scrollLeft);
152
+ const y = Math.abs(element.scrollTop);
153
+ const xLength = element.scrollWidth - element.clientWidth;
154
+ const yLength = element.scrollHeight - element.clientHeight;
155
+ const resolvesOn = (on) => Bool.and(resolves, axis === on);
156
+ return {
157
+ x: { current: x, length: xLength, progress: Bool.match(resolvesOn("x"), { onTrue: () => onAxis(x), onFalse: () => plainProgress(x, xLength) }) },
158
+ y: { current: y, length: yLength, progress: Bool.match(resolvesOn("y"), { onTrue: () => onAxis(y), onFalse: () => plainProgress(y, yLength) }) },
159
+ };
160
+ };
161
+ };
162
+ /** Whether two scrolls read the same: an unchanged one isn't set, so its readers hear nothing. */
163
+ const sameScroll = (a, b) => Arr.every([
164
+ a.x.current === b.x.current,
165
+ a.y.current === b.y.current,
166
+ a.x.length === b.x.length,
167
+ a.y.length === b.y.length,
168
+ a.x.progress === b.x.progress,
169
+ a.y.progress === b.y.progress,
170
+ ], Boolean);
171
+ /** The page's scroller: `document.scrollingElement`, else the root element. */
172
+ 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
+ /** A container's listener set, opened for its first reader. */
180
+ const open = (element) => {
181
+ const readers = new Set();
182
+ const readAll = () => Iter.forEach(readers, (read) => read());
183
+ // The page's scroll is the window's event, and its range changes with the window.
184
+ const page = Bool.or(element === document.scrollingElement, element === document.documentElement);
185
+ const scrolls = Bool.match(page, { onTrue: () => window, onFalse: () => element });
186
+ scrolls.addEventListener("scroll", readAll, { passive: true });
187
+ window.addEventListener("resize", readAll);
188
+ // Sizes (#239): a container's own box, its content's, and its readers' targets'. One observer,
189
+ // each box counted by the reasons it's watched for (a target can be a child too).
190
+ const sizes = new ResizeObserver(readAll);
191
+ const watched = counted(sizes);
192
+ // Its own resize changes a container's range (the page's is the window's), and so does its
193
+ // content's: its direct children, kept as they come and go. A removed child resizes nothing still
194
+ // watched, and changes the range all the same.
195
+ const stopChildren = Bool.match(page, {
196
+ onTrue: () => watchPage(watched, readAll),
197
+ onFalse: () => {
198
+ watched.observe(element);
199
+ return watchChildren(element, watched, readAll);
200
+ },
201
+ });
202
+ const container = {
203
+ readers,
204
+ watch: (target) => {
205
+ watched.observe(target);
206
+ return () => watched.unobserve(target);
207
+ },
208
+ remove: () => {
209
+ scrolls.removeEventListener("scroll", readAll);
210
+ window.removeEventListener("resize", readAll);
211
+ sizes.disconnect();
212
+ stopChildren();
213
+ },
214
+ };
215
+ return container;
216
+ };
217
+ /** A reader of a container's scroll: the container's listeners held from `containers` while its Scope is open. */
218
+ const readerOf = (registry, containers) => Effect.fnUntraced(function* (options = {}) {
219
+ const element = UndefinedOr.match(options.container, { onUndefined: pageOf, onDefined: (given) => given });
220
+ const container = yield* RcMap.get(containers, Equal.byReferenceUnsafe(element));
221
+ const measure = measureOf(element, options);
222
+ let last = measure();
223
+ // Mounted while read, not kept alive: a kept-alive Atom's node never leaves the registry.
224
+ const atom = Atom.make(last);
225
+ const unmount = registry.mount(atom);
226
+ const read = () => {
227
+ const next = measure();
228
+ if (sameScroll(last, next))
229
+ return;
230
+ last = next;
231
+ registry.set(atom, next);
232
+ };
233
+ yield* Effect.acquireRelease(Effect.sync(() => container.readers.add(read)), () => Effect.sync(() => {
234
+ container.readers.delete(read);
235
+ unmount();
236
+ }));
237
+ // A target's own size moves its offsets (#239): watched while this reader reads.
238
+ yield* Option.match(Option.fromUndefinedOr(options.target), {
239
+ onNone: () => Effect.void,
240
+ onSome: (target) => Effect.acquireRelease(Effect.sync(() => container.watch(target)), (unwatch) => Effect.sync(unwatch)),
241
+ });
242
+ return atom;
243
+ });
244
+ //# sourceMappingURL=scroll.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../src/internal/scroll.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Which scrollers move an element on screen (ADR-0012), apart from the Measure pass (#548): the gesture
3
+ * input and the reveals read `scrollersOf` on every page, so it sits in a module of its own, and the
4
+ * Projection system's reads, in `measure.ts`, ship only where an app lays out (ADR-0067,
5
+ * *Amendment (#548)*). Per node in the Measure pass: a `for` up the ancestors (ADR-0025, dom's
6
+ * per-frame files).
7
+ */
8
+ /**
9
+ * What the scroll fold and a scroll feed need from an element's style, from one
10
+ * `getComputedStyle` read (ADR-0012, *Amendment (Reorder)*): whether it can scroll on
11
+ * either axis (`overflow-x` or `overflow-y` neither `visible` nor `clip`; Motion's
12
+ * auto-scroll asks for `auto | scroll`, but a `hidden` container can still be scrolled
13
+ * from code), and whether it is `position: fixed` (its subtree is viewport-relative,
14
+ * so no scroll outside it moves anything inside).
15
+ */
16
+ export interface ScrollStyle {
17
+ readonly scrollable: boolean;
18
+ readonly fixed: boolean;
19
+ }
20
+ /** {@link ScrollStyle} from an element's computed style. */
21
+ export declare const scrollStyleFrom: (style: CSSStyleDeclaration) => ScrollStyle;
22
+ /** {@link ScrollStyle} of `el`, uncached: one `getComputedStyle` per call. */
23
+ export declare const readScrollStyle: (el: Element) => ScrollStyle;
24
+ /**
25
+ * The scrollers whose scroll moves `el` on screen: its ancestors that can scroll,
26
+ * nearest first, up to the first `position: fixed` one (included if it scrolls), and
27
+ * whether the page's scroll does (no fixed element on the way, `el` included). The
28
+ * walk stops before `body` and `documentElement`: the page's own scroll is the
29
+ * window's.
30
+ */
31
+ export declare const scrollersOf: (el: Element) => {
32
+ readonly ancestors: Array<Element>;
33
+ readonly page: boolean;
34
+ };
35
+ //# sourceMappingURL=scrollers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollers.d.ts","sourceRoot":"","sources":["../../src/internal/scrollers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;CACxB;AAED,4DAA4D;AAC5D,eAAO,MAAM,eAAe,UAAW,mBAAmB,KAAG,WAG3D,CAAA;AAEF,8EAA8E;AAC9E,eAAO,MAAM,eAAe,OAAQ,OAAO,KAAG,WAAoD,CAAA;AAElG;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,OAAQ,OAAO,KAAG;IAAE,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAUrG,CAAA"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Which scrollers move an element on screen (ADR-0012), apart from the Measure pass (#548): the gesture
3
+ * input and the reveals read `scrollersOf` on every page, so it sits in a module of its own, and the
4
+ * Projection system's reads, in `measure.ts`, ship only where an app lays out (ADR-0067,
5
+ * *Amendment (#548)*). Per node in the Measure pass: a `for` up the ancestors (ADR-0025, dom's
6
+ * per-frame files).
7
+ */
8
+ /** The overflow values that never scroll: anything else can (`hidden` too, from code). */
9
+ const UNSCROLLED = new Set(["visible", "clip"]);
10
+ /** {@link ScrollStyle} from an element's computed style. */
11
+ export const scrollStyleFrom = (style) => ({
12
+ scrollable: !UNSCROLLED.has(style.overflowX) || !UNSCROLLED.has(style.overflowY),
13
+ fixed: style.position === "fixed",
14
+ });
15
+ /** {@link ScrollStyle} of `el`, uncached: one `getComputedStyle` per call. */
16
+ export const readScrollStyle = (el) => scrollStyleFrom(getComputedStyle(el));
17
+ /**
18
+ * The scrollers whose scroll moves `el` on screen: its ancestors that can scroll,
19
+ * nearest first, up to the first `position: fixed` one (included if it scrolls), and
20
+ * whether the page's scroll does (no fixed element on the way, `el` included). The
21
+ * walk stops before `body` and `documentElement`: the page's own scroll is the
22
+ * window's.
23
+ */
24
+ export const scrollersOf = (el) => {
25
+ const ancestors = [];
26
+ if (readScrollStyle(el).fixed)
27
+ return { ancestors, page: false };
28
+ const doc = el.ownerDocument;
29
+ for (let cur = el.parentElement; cur !== null && cur !== doc.body && cur !== doc.documentElement; cur = cur.parentElement) {
30
+ const style = readScrollStyle(cur);
31
+ if (style.scrollable)
32
+ ancestors.push(cur);
33
+ if (style.fixed)
34
+ return { ancestors, page: false };
35
+ }
36
+ return { ancestors, page: true };
37
+ };
38
+ //# sourceMappingURL=scrollers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scrollers.js","sourceRoot":"","sources":["../../src/internal/scrollers.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,0FAA0F;AAC1F,MAAM,UAAU,GAAwB,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAA;AAepE,4DAA4D;AAC5D,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAA0B,EAAe,EAAE,CAAC,CAAC;IAC3E,UAAU,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;IAChF,KAAK,EAAE,KAAK,CAAC,QAAQ,KAAK,OAAO;CAClC,CAAC,CAAA;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAAW,EAAe,EAAE,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;AAElG;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAW,EAAkE,EAAE;IACzG,MAAM,SAAS,GAAmB,EAAE,CAAA;IACpC,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC,KAAK;QAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IAChE,MAAM,GAAG,GAAG,EAAE,CAAC,aAAa,CAAA;IAC5B,KAAK,IAAI,GAAG,GAAG,EAAE,CAAC,aAAa,EAAE,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,GAAG,CAAC,eAAe,EAAE,GAAG,GAAG,GAAG,CAAC,aAAa,EAAE,CAAC;QAC1H,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QAClC,IAAI,KAAK,CAAC,UAAU;YAAE,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACzC,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IACpD,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAClC,CAAC,CAAA"}
@@ -0,0 +1,141 @@
1
+ /**
2
+ * The Starting style (ADR-0003, ADR-0021): an element's style before its first Frame,
3
+ * `project(resolveInitial(config))`, computed purely with no runtime. It is the server's
4
+ * markup, the style the hydration render keeps, and the animation's `from`. And the style
5
+ * after the first Frame, the fallback: the user's, without the keys Wardic holds (ADR-0034).
6
+ *
7
+ * Framework-free, so every binding renders it the same way on a server and on the client
8
+ * (the thin-bindings rule): a binding reads its config, calls these, and casts the style to
9
+ * its own JSX type. `toValues`, `resolveInitial` and the merge `over` does moved here from
10
+ * @wardic/solid with their behaviour unchanged; `over` and `without` are `dual` (#132's PR 3,
11
+ * ADR-0041 decision 5). Tier 2, for binding authors.
12
+ *
13
+ * Observability: pure and per element, so quiet (no span, no log).
14
+ */
15
+ import type * as Values from "@wardic/core/Values";
16
+ import * as Option from "effect/Option";
17
+ import { type SplitPatch } from "./svg.ts";
18
+ /**
19
+ * A values map with only the keys an animation can take: numbers and strings (custom
20
+ * properties included). `undefined` and anything else drop out, so the engine never sees
21
+ * them.
22
+ */
23
+ export declare const toValues: (v: object | undefined) => Values.Values;
24
+ /** A keyframes value's stops, as Motion's: each a value, or `null`, for where the key is (the first) or the stop before (a later one). */
25
+ export type Stops = ReadonlyArray<number | string | null>;
26
+ /** Where a keyframes value is read: `initial`'s at its first stop, a target's at its last. */
27
+ export type StopAt = "first" | "last";
28
+ /** A values map's own values and its keyframes: `splitValues`' result. */
29
+ export interface SplitValues {
30
+ /** Its numbers and strings, each Keyframes value at one of its stops. */
31
+ readonly values: Values.Values;
32
+ /** Its Keyframes, if it has any. */
33
+ readonly keyframes: Option.Option<Readonly<Record<string, Stops>>>;
34
+ }
35
+ /**
36
+ * A values map's values, each keyframes value read at one of its stops, and its keyframes, in one pass
37
+ * over its keys: a target's resolution reads both, and a target with no keyframes makes nothing
38
+ * `toValues` doesn't.
39
+ */
40
+ export declare const splitValues: (v: object | undefined, at: StopAt) => SplitValues;
41
+ /**
42
+ * A values map with only the keys an animation can take, each keyframes value read at one of its stops:
43
+ * `initial`'s first, a target's last. A keyframes value with no such stop drops out, as does an array
44
+ * `keyframesOf` doesn't take, and anything that isn't a number or a string. One pass over its keys, as
45
+ * `toValues`'.
46
+ *
47
+ * @example
48
+ * Style.valuesAt({ opacity: [0, 0.5, 1], x: 10 }, "first") // { x: 10, opacity: 0 }
49
+ */
50
+ export declare const valuesAt: (v: object | undefined, at: StopAt) => Values.Values;
51
+ /**
52
+ * A values map's keyframes values: each array of stops an animation can take, one with a stop that isn't
53
+ * `null`. None when it has none, so a target without any makes nothing.
54
+ *
55
+ * @example
56
+ * Style.keyframesOf({ opacity: [0, 0.5, 1], x: 10 }) // { opacity: [0, 0.5, 1] }
57
+ */
58
+ export declare const keyframesOf: (v: object | undefined) => Option.Option<Readonly<Record<string, Stops>>>;
59
+ /**
60
+ * What of an element's config its starting style is read from. Its values are typed `object`, so a
61
+ * binding's own value types fit as they are.
62
+ */
63
+ export interface InitialConfig {
64
+ /**
65
+ * Its start: values used as they are, the name of a `variants` entry, a list of names merged in order,
66
+ * a later one's winning, or `false`, to start at `animate`, as Motion's `initial={false}`.
67
+ */
68
+ readonly initial?: object | string | ReadonlyArray<string> | false | undefined;
69
+ /** What `initial: false` starts at: a values map, the name of a `variants` entry, or a list of names. */
70
+ readonly animate?: object | string | ReadonlyArray<string> | undefined;
71
+ /** Its variants: the values each name stands for. */
72
+ readonly variants?: Readonly<Record<string, object | undefined>> | undefined;
73
+ }
74
+ /**
75
+ * The values an element starts from: its `initial` values, or the `variants` entries its `initial` names,
76
+ * an unknown name empty, or nothing. With `initial: false`, its `animate`, resolved the same way, so it
77
+ * starts at its target and nothing animates at mount, as Motion's. A keyframes value starts at its first
78
+ * stop, or, with `initial: false`, at `animate`'s last, where the animation it skips would end. Read once,
79
+ * at setup: the starting style is where it starts, never a live target.
80
+ *
81
+ * @example
82
+ * Style.resolveInitial({ initial: false, animate: { opacity: 1 } }) // { opacity: 1 }
83
+ */
84
+ export declare const resolveInitial: (config: InitialConfig) => Values.Values;
85
+ /**
86
+ * A CSS declaration list (`"color: red; background: url(a;b)"`) as `{ property: value }`.
87
+ * A `;` inside parentheses or quotes doesn't end a declaration. Internal (not in the
88
+ * package index): `own-values.ts`'s style lookup shares it.
89
+ */
90
+ export declare const parseCssText: (text: string) => Record<string, string>;
91
+ /** Where {@link parseCssText} is: the parentheses open, the string's quote, a backslash just read in it, the declaration's start. */
92
+ /**
93
+ * A style as a binding hands it over: a record of CSS properties, CSS text (`"color: red"`, which
94
+ * JSX allows), or none.
95
+ */
96
+ export type StyleInput = object | string | undefined;
97
+ /** A style record: CSS properties to their values. */
98
+ export type StyleRecord = Readonly<Record<string, unknown>>;
99
+ /**
100
+ * `self` laid over `that`: `self`'s keys win, and `that`'s others stay. A chain reads from the top layer
101
+ * down: an element's style is its drag defaults, under its base, under the app's, under what Wardic
102
+ * animates. A side given as CSS text is parsed, so a framework never writes `cssText` over the keys
103
+ * Wardic holds, and a side that's `undefined` leaves the other as it is, the same object. Whatever `self`
104
+ * sets for `user-select` or `-webkit-user-select` it sets for both: one property in Chromium.
105
+ *
106
+ * @example
107
+ * // Before the first commit: the starting style over the app's, over a base and a drag element's defaults.
108
+ * pipe(starting, Style.over(user), Style.over(base), Style.over(Style.dragDefaults("x")))
109
+ */
110
+ export declare const over: {
111
+ (that: StyleInput): (self: StyleInput) => StyleRecord;
112
+ (self: StyleInput, that: StyleInput): StyleRecord;
113
+ };
114
+ /**
115
+ * `self` without the keys the flush gate holds on the element (`held`, by patch key, matched by CSS
116
+ * property): the style once its first frame is committed. Wardic writes those while it drives them, and
117
+ * the app's `style` is their fallback, so a key the gate lets go of comes back.
118
+ *
119
+ * @example
120
+ * pipe(user, Style.over(base), Style.without(held))
121
+ */
122
+ export declare const without: {
123
+ (held: ReadonlyArray<string>): (self: StyleInput) => StyleRecord;
124
+ (self: StyleInput, held: ReadonlyArray<string>): StyleRecord;
125
+ };
126
+ /**
127
+ * Whether the keys the flush gate holds, changing from `prev` to `next`, change `self`'s `without`:
128
+ * whether a key taken or let go of is one `self` sets, by its name or its name dash-cased. Most changes
129
+ * touch none, and a binding then leaves its `style` alone.
130
+ */
131
+ export declare const heldTouches: {
132
+ (prev: ReadonlyArray<string>, next: ReadonlyArray<string>): (self: StyleRecord) => boolean;
133
+ (self: StyleRecord, prev: ReadonlyArray<string>, next: ReadonlyArray<string>): boolean;
134
+ };
135
+ /**
136
+ * The starting style of a `tag` element starting from `values`: projected as the renderer projects a
137
+ * Frame, then split by tag, an SVG element's keys inside an `<svg>` as attributes, and the rest as style.
138
+ * `undefined` is an HTML element, as for a spread that doesn't know its tag.
139
+ */
140
+ export declare const startingStyle: (tag: string | undefined, values: Readonly<Record<string, unknown>>) => SplitPatch;
141
+ //# sourceMappingURL=starting-style.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"starting-style.d.ts","sourceRoot":"","sources":["../../src/internal/starting-style.ts"],"names":[],"mappings":"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"}