@effect-tui/react 0.9.3 → 0.10.1

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 (85) hide show
  1. package/dist/src/components/ListView.d.ts.map +1 -1
  2. package/dist/src/components/ListView.js +7 -2
  3. package/dist/src/components/ListView.js.map +1 -1
  4. package/dist/src/dev/Toast.d.ts.map +1 -1
  5. package/dist/src/dev/Toast.js +24 -15
  6. package/dist/src/dev/Toast.js.map +1 -1
  7. package/dist/src/dev.d.ts +1 -1
  8. package/dist/src/dev.d.ts.map +1 -1
  9. package/dist/src/dev.js.map +1 -1
  10. package/dist/src/hooks/index.d.ts +2 -0
  11. package/dist/src/hooks/index.d.ts.map +1 -1
  12. package/dist/src/hooks/index.js +1 -0
  13. package/dist/src/hooks/index.js.map +1 -1
  14. package/dist/src/hooks/use-scroll.js +12 -12
  15. package/dist/src/hooks/use-scroll.js.map +1 -1
  16. package/dist/src/hooks/use-timer.d.ts +57 -0
  17. package/dist/src/hooks/use-timer.d.ts.map +1 -0
  18. package/dist/src/hooks/use-timer.js +94 -0
  19. package/dist/src/hooks/use-timer.js.map +1 -0
  20. package/dist/src/hosts/base.d.ts +28 -0
  21. package/dist/src/hosts/base.d.ts.map +1 -1
  22. package/dist/src/hosts/base.js +118 -0
  23. package/dist/src/hosts/base.js.map +1 -1
  24. package/dist/src/hosts/box.d.ts +6 -3
  25. package/dist/src/hosts/box.d.ts.map +1 -1
  26. package/dist/src/hosts/box.js +10 -3
  27. package/dist/src/hosts/box.js.map +1 -1
  28. package/dist/src/hosts/scroll.d.ts +0 -2
  29. package/dist/src/hosts/scroll.d.ts.map +1 -1
  30. package/dist/src/hosts/scroll.js +3 -7
  31. package/dist/src/hosts/scroll.js.map +1 -1
  32. package/dist/src/hosts/text.d.ts +5 -2
  33. package/dist/src/hosts/text.d.ts.map +1 -1
  34. package/dist/src/hosts/text.js +7 -3
  35. package/dist/src/hosts/text.js.map +1 -1
  36. package/dist/src/index.d.ts +2 -2
  37. package/dist/src/index.d.ts.map +1 -1
  38. package/dist/src/index.js +1 -1
  39. package/dist/src/index.js.map +1 -1
  40. package/dist/src/motion/brands.d.ts +9 -0
  41. package/dist/src/motion/brands.d.ts.map +1 -0
  42. package/dist/src/motion/brands.js +9 -0
  43. package/dist/src/motion/brands.js.map +1 -0
  44. package/dist/src/motion/color-motion-value.d.ts +4 -0
  45. package/dist/src/motion/color-motion-value.d.ts.map +1 -1
  46. package/dist/src/motion/color-motion-value.js +4 -0
  47. package/dist/src/motion/color-motion-value.js.map +1 -1
  48. package/dist/src/motion/hooks.d.ts +29 -3
  49. package/dist/src/motion/hooks.d.ts.map +1 -1
  50. package/dist/src/motion/hooks.js +40 -4
  51. package/dist/src/motion/hooks.js.map +1 -1
  52. package/dist/src/motion/index.d.ts +1 -1
  53. package/dist/src/motion/index.d.ts.map +1 -1
  54. package/dist/src/motion/index.js +1 -1
  55. package/dist/src/motion/index.js.map +1 -1
  56. package/dist/src/motion/motion-value.d.ts +6 -2
  57. package/dist/src/motion/motion-value.d.ts.map +1 -1
  58. package/dist/src/motion/motion-value.js +6 -2
  59. package/dist/src/motion/motion-value.js.map +1 -1
  60. package/dist/src/motion/use-sequence.d.ts +10 -2
  61. package/dist/src/motion/use-sequence.d.ts.map +1 -1
  62. package/dist/src/motion/use-sequence.js +101 -11
  63. package/dist/src/motion/use-sequence.js.map +1 -1
  64. package/dist/src/reconciler/types.d.ts +24 -1
  65. package/dist/src/reconciler/types.d.ts.map +1 -1
  66. package/dist/tsconfig.tsbuildinfo +1 -1
  67. package/package.json +2 -2
  68. package/src/components/ListView.tsx +8 -2
  69. package/src/dev/Toast.tsx +27 -17
  70. package/src/dev.tsx +4 -4
  71. package/src/hooks/index.ts +2 -0
  72. package/src/hooks/use-scroll.ts +12 -12
  73. package/src/hooks/use-timer.ts +155 -0
  74. package/src/hosts/base.ts +137 -0
  75. package/src/hosts/box.ts +17 -6
  76. package/src/hosts/scroll.ts +3 -7
  77. package/src/hosts/text.ts +13 -5
  78. package/src/index.ts +5 -1
  79. package/src/motion/brands.ts +10 -0
  80. package/src/motion/color-motion-value.ts +6 -0
  81. package/src/motion/hooks.ts +50 -4
  82. package/src/motion/index.ts +3 -0
  83. package/src/motion/motion-value.ts +8 -1
  84. package/src/motion/use-sequence.ts +113 -13
  85. package/src/reconciler/types.ts +21 -1
@@ -1 +1 @@
1
- {"version":3,"file":"color-motion-value.d.ts","sourceRoot":"","sources":["../../../src/motion/color-motion-value.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,UAAU,EAAc,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,IAAI,CAAC;IACvD,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,GAAG,CAAqB;gBAEpB,OAAO,EAAE,UAAU;IAS/B,6BAA6B;IAC7B,GAAG,IAAI,IAAI;IASX,2CAA2C;IAC3C,IAAI,CAAC,KAAK,EAAE,UAAU;IAStB,+CAA+C;IAC/C,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa;IAQ9C,wCAAwC;IACxC,WAAW,IAAI,OAAO;IAItB,kCAAkC;IAClC,IAAI;IAOJ,2BAA2B;IAC3B,OAAO;IAQP,qEAAqE;IACrE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;CASpD"}
1
+ {"version":3,"file":"color-motion-value.d.ts","sourceRoot":"","sources":["../../../src/motion/color-motion-value.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,EAAE,KAAK,UAAU,EAAc,KAAK,IAAI,EAAE,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAEtD;;;GAGG;AACH,qBAAa,gBAAiB,SAAQ,YAAY,CAAC,IAAI,CAAC;IACvD,8CAA8C;IAC9C,QAAQ,CAAC,CAAC,wBAAwB,CAAC,QAAO;IAE1C,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,GAAG,CAAqB;IAChC,OAAO,CAAC,GAAG,CAAqB;gBAEpB,OAAO,EAAE,UAAU;IAS/B,6BAA6B;IAC7B,GAAG,IAAI,IAAI;IASX,2CAA2C;IAC3C,IAAI,CAAC,KAAK,EAAE,UAAU;IAStB,+CAA+C;IAC/C,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,aAAa;IAQ9C,wCAAwC;IACxC,WAAW,IAAI,OAAO;IAItB,kCAAkC;IAClC,IAAI;IAOJ,2BAA2B;IAC3B,OAAO;IAQP,qEAAqE;IACrE,kBAAkB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;CASpD"}
@@ -1,14 +1,18 @@
1
1
  /**
2
2
  * ColorMotionValue - animates RGBA colors using 4 internal numeric springs.
3
3
  */
4
+ import { COLOR_MOTION_VALUE_BRAND } from "./brands.js";
4
5
  import { parseColor } from "./color.js";
5
6
  import { EventEmitter } from "./event-emitter.js";
6
7
  import { MotionValue } from "./motion-value.js";
8
+ export { COLOR_MOTION_VALUE_BRAND } from "./brands.js";
7
9
  /**
8
10
  * ColorMotionValue animates RGBA colors using 4 internal numeric springs.
9
11
  * Each channel (r, g, b, a) is animated independently with the same spring config.
10
12
  */
11
13
  export class ColorMotionValue extends EventEmitter {
14
+ /** @internal Brand for safe type detection */
15
+ [COLOR_MOTION_VALUE_BRAND] = true;
12
16
  rMv;
13
17
  gMv;
14
18
  bMv;
@@ -1 +1 @@
1
- {"version":3,"file":"color-motion-value.js","sourceRoot":"","sources":["../../../src/motion/color-motion-value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"color-motion-value.js","sourceRoot":"","sources":["../../../src/motion/color-motion-value.ts"],"names":[],"mappings":"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"}
@@ -63,13 +63,39 @@ export declare function useColorMotionValue(initial: ColorInput): ColorMotionVal
63
63
  /**
64
64
  * Create a spring-animated color. Accepts hex, rgb(), hsl(), or {r,g,b} object.
65
65
  *
66
+ * Returns a MotionValue - best for <canvas draw={...}> where you read in callbacks.
67
+ * For JSX props, use useColorSpringState instead.
68
+ *
66
69
  * @example
67
70
  * const [colorMv, setColor] = useColorSpring("#ff0000", { visualDuration: 0.5 })
68
71
  * setColor("#00ff00") // Spring to green
69
- * setColor("hsl(240, 100%, 50%)") // Spring to blue
70
72
  *
71
- * // In draw callback
72
- * const { r, g, b } = colorMv.get()
73
+ * // In canvas draw callback
74
+ * <canvas draw={(ctx) => {
75
+ * const { r, g, b } = colorMv.get()
76
+ * ctx.fill(0, 0, 10, 5, "█", { fg: Colors.rgb(r, g, b) })
77
+ * }} />
73
78
  */
74
79
  export declare function useColorSpring(initial: ColorInput, options?: SpringOptions): [ColorMotionValue, (color: ColorInput) => void];
80
+ /**
81
+ * Like useColorSpring, but returns React state that updates during animation.
82
+ * Use this when you need spring values in JSX props.
83
+ *
84
+ * For <canvas draw={...}> callbacks, use useColorSpring instead (better perf).
85
+ *
86
+ * @example
87
+ * const [color, setColor] = useColorSpringState("#ff0000", { visualDuration: 0.5 })
88
+ * setColor("#00ff00") // Spring to green
89
+ *
90
+ * // In JSX - React re-renders as the spring animates
91
+ * <box bg={Colors.rgb(color.r, color.g, color.b)}>
92
+ * <text>Hello</text>
93
+ * </box>
94
+ */
95
+ export declare function useColorSpringState(initial: ColorInput, options?: SpringOptions): [{
96
+ r: number;
97
+ g: number;
98
+ b: number;
99
+ a: number;
100
+ }, (color: ColorInput) => void];
75
101
  //# sourceMappingURL=hooks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/motion/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAK/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAW5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE;IAAE,aAAa,EAAE,MAAM,IAAI,CAAA;CAAE,QAkBzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,CAoBlH;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACrB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CA6DnF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EACzD,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,EAClB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,SAAS,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,QAU9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAWzE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAC7B,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,aAAa,GACrB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,CAoBjD"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/motion/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAc,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAK/C;;GAEG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAW5D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE;IAAE,aAAa,EAAE,MAAM,IAAI,CAAA;CAAE,QAkBzE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,CAoBlH;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,UAAU,CACzB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACrB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC,KAAK,IAAI,CAAC,CA6DnF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,SAAS,SAAS,EACzD,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,EAClB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,SAAS,QAAQ,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,QAU9D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,UAAU,GAAG,gBAAgB,CAWzE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,cAAc,CAC7B,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,aAAa,GACrB,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,CAoBjD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAClC,OAAO,EAAE,UAAU,EACnB,OAAO,CAAC,EAAE,aAAa,GACrB,CAAC;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC,CAqB/E"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * React hooks for spring animations.
3
3
  */
4
- import { useCallback, useEffect, useRef } from "react";
4
+ import { useCallback, useEffect, useRef, useState } from "react";
5
5
  import { useRenderer } from "../renderer.js";
6
6
  import { ColorMotionValue } from "./color-motion-value.js";
7
7
  import { MotionValue } from "./motion-value.js";
@@ -171,13 +171,18 @@ export function useColorMotionValue(initial) {
171
171
  /**
172
172
  * Create a spring-animated color. Accepts hex, rgb(), hsl(), or {r,g,b} object.
173
173
  *
174
+ * Returns a MotionValue - best for <canvas draw={...}> where you read in callbacks.
175
+ * For JSX props, use useColorSpringState instead.
176
+ *
174
177
  * @example
175
178
  * const [colorMv, setColor] = useColorSpring("#ff0000", { visualDuration: 0.5 })
176
179
  * setColor("#00ff00") // Spring to green
177
- * setColor("hsl(240, 100%, 50%)") // Spring to blue
178
180
  *
179
- * // In draw callback
180
- * const { r, g, b } = colorMv.get()
181
+ * // In canvas draw callback
182
+ * <canvas draw={(ctx) => {
183
+ * const { r, g, b } = colorMv.get()
184
+ * ctx.fill(0, 0, 10, 5, "█", { fg: Colors.rgb(r, g, b) })
185
+ * }} />
181
186
  */
182
187
  export function useColorSpring(initial, options) {
183
188
  const mv = useColorMotionValue(initial);
@@ -194,4 +199,35 @@ export function useColorSpring(initial, options) {
194
199
  }, [mv]);
195
200
  return [mv, set];
196
201
  }
202
+ /**
203
+ * Like useColorSpring, but returns React state that updates during animation.
204
+ * Use this when you need spring values in JSX props.
205
+ *
206
+ * For <canvas draw={...}> callbacks, use useColorSpring instead (better perf).
207
+ *
208
+ * @example
209
+ * const [color, setColor] = useColorSpringState("#ff0000", { visualDuration: 0.5 })
210
+ * setColor("#00ff00") // Spring to green
211
+ *
212
+ * // In JSX - React re-renders as the spring animates
213
+ * <box bg={Colors.rgb(color.r, color.g, color.b)}>
214
+ * <text>Hello</text>
215
+ * </box>
216
+ */
217
+ export function useColorSpringState(initial, options) {
218
+ const mv = useColorMotionValue(initial);
219
+ const [value, setValue] = useState(() => mv.get());
220
+ const optionsRef = useRef(options);
221
+ optionsRef.current = options;
222
+ // Subscribe to spring changes and update React state
223
+ useEffect(() => {
224
+ return mv._subscribeChannels(() => {
225
+ setValue(mv.get());
226
+ });
227
+ }, [mv]);
228
+ const set = useCallback((color) => {
229
+ mv.set(color, optionsRef.current);
230
+ }, [mv]);
231
+ return [value, set];
232
+ }
197
233
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/motion/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/motion/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAChE,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAG/C,gEAAgE;AAChE,IAAI,mBAAmB,GAAwB,IAAI,CAAA;AAEnD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAI,OAAU;IAC3C,MAAM,GAAG,GAAG,MAAM,CAAwB,IAAI,CAAC,CAAA;IAC/C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,GAAG,CAAC,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IACvC,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAA;IACpC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,GAAG,CAAC,OAAO,CAAA;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAwC;IACzE,oDAAoD;IACpD,MAAM,eAAe,GAAG,WAAW,EAAE,CAAA;IACrC,kDAAkD;IAClD,MAAM,QAAQ,GAAG,QAAQ,IAAI,eAAe,CAAA;IAE5C,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,yDAAyD;QACzD,MAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QAChE,mBAAmB,GAAG,kBAAkB,CAAA;QACxC,OAAO,GAAG,EAAE;YACX,gDAAgD;YAChD,IAAI,mBAAmB,KAAK,kBAAkB,EAAE,CAAC;gBAChD,mBAAmB,GAAG,IAAI,CAAA;YAC3B,CAAC;QACF,CAAC,CAAA;IACF,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe,EAAE,OAAuB;IACjE,MAAM,EAAE,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAClC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAE5B,kEAAkE;IAClE,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YAC3B,mBAAmB,EAAE,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAER,MAAM,GAAG,GAAG,WAAW,CACtB,CAAC,MAAc,EAAE,EAAE;QAClB,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IACnC,CAAC,EACD,CAAC,EAAE,CAAC,CACJ,CAAA;IAED,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,UAAU,CACzB,KAAa,EACb,OAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,CAA+B,IAAI,CAAC,CAAA;IACzD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAE5B,sCAAsC;IACtC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,mDAAmD;IACnD,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACrC,mBAAmB;QACnB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACjC,EAAE,CAAC,OAAO,EAAE,CAAA;QACb,CAAC;QACD,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAA;IACzE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAA;IAE1B,iCAAiC;IACjC,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC7B,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;YACpB,mBAAmB,EAAE,EAAE,CAAA;QACxB,CAAC,CAAC,CACF,CAAA;QACD,OAAO,GAAG,EAAE;YACX,KAAK,MAAM,KAAK,IAAI,MAAM;gBAAE,KAAK,EAAE,CAAA;QACpC,CAAC,CAAA;IACF,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAA;IAET,qBAAqB;IACrB,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE;YACX,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjC,EAAE,CAAC,OAAO,EAAE,CAAA;gBACb,CAAC;YACF,CAAC;QACF,CAAC,CAAA;IACF,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,MAAM,GAAG,WAAW,CACzB,CAAC,MAA8C,EAAE,EAAE;QAClD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAA;QAC/B,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAC5B,CAAC;QACF,CAAC;aAAM,CAAC;YACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC9D,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAA;YAC5B,CAAC;QACF,CAAC;IACF,CAAC,EACD,CAAC,GAAG,CAAC,CACL,CAAA;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAClC,EAAkB,EAClB,KAAQ,EACR,QAA8D;IAE9D,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IACpC,WAAW,CAAC,OAAO,GAAG,QAAQ,CAAA;IAE9B,SAAS,CAAC,GAAG,EAAE;QACd,qDAAqD;QACrD,8EAA8E;QAC9E,OAAO,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,OAAoD,CAAC,CAAA;IACtF,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAA;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAmB;IACtD,MAAM,GAAG,GAAG,MAAM,CAA0B,IAAI,CAAC,CAAA;IACjD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;QAClB,GAAG,CAAC,OAAO,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,CAAA;IAC5C,CAAC;IAED,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAA;IACpC,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,OAAO,GAAG,CAAC,OAAO,CAAA;AACnB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,cAAc,CAC7B,OAAmB,EACnB,OAAuB;IAEvB,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAE5B,0CAA0C;IAC1C,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACjC,mBAAmB,EAAE,EAAE,CAAA;QACxB,CAAC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAER,MAAM,GAAG,GAAG,WAAW,CACtB,CAAC,KAAiB,EAAE,EAAE;QACrB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC,EACD,CAAC,EAAE,CAAC,CACJ,CAAA;IAED,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,mBAAmB,CAClC,OAAmB,EACnB,OAAuB;IAEvB,MAAM,EAAE,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IACvC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;IAClD,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAE5B,qDAAqD;IACrD,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,EAAE,CAAC,kBAAkB,CAAC,GAAG,EAAE;YACjC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,CAAA;QACnB,CAAC,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAER,MAAM,GAAG,GAAG,WAAW,CACtB,CAAC,KAAiB,EAAE,EAAE;QACrB,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;IAClC,CAAC,EACD,CAAC,EAAE,CAAC,CACJ,CAAA;IAED,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;AACpB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  export { useAnimationFrame } from "./frame.js";
2
2
  export type { ColorInput, MotionValue, RGBA, SpringOptions } from "./motion-value.js";
3
- export { ColorMotionValue, motionValue, useColorMotionValue, useColorSpring, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./motion-value.js";
3
+ export { COLOR_MOTION_VALUE_BRAND, ColorMotionValue, MOTION_VALUE_BRAND, motionValue, useColorMotionValue, useColorSpring, useColorSpringState, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./motion-value.js";
4
4
  export { useSequence, type SequenceOptions } from "./use-sequence.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/motion/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAEN,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/motion/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9C,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACrF,OAAO,EAEN,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,mBAAmB,CAAA"}
@@ -3,6 +3,6 @@
3
3
  export { useAnimationFrame } from "./frame.js";
4
4
  export {
5
5
  // Color springs
6
- ColorMotionValue, motionValue, useColorMotionValue, useColorSpring, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./motion-value.js";
6
+ COLOR_MOTION_VALUE_BRAND, ColorMotionValue, MOTION_VALUE_BRAND, motionValue, useColorMotionValue, useColorSpring, useColorSpringState, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./motion-value.js";
7
7
  export { useSequence } from "./use-sequence.js";
8
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/motion/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,kFAAkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO;AACN,gBAAgB;AAChB,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/motion/index.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,kFAAkF;AAElF,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAE9C,OAAO;AACN,gBAAgB;AAChB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,WAAW,EAAwB,MAAM,mBAAmB,CAAA"}
@@ -2,14 +2,18 @@
2
2
  * MotionValue - tracks animated values with spring physics.
3
3
  * Inspired by framer-motion's MotionValue.
4
4
  */
5
+ import { MOTION_VALUE_BRAND } from "./brands.js";
5
6
  import { EventEmitter } from "./event-emitter.js";
6
7
  import { type SpringOptions } from "./types.js";
8
+ export { MOTION_VALUE_BRAND } from "./brands.js";
7
9
  /** Create a MotionValue. Factory function like Motion's motionValue(). */
8
10
  export declare function motionValue<T>(initial: T): MotionValue<T>;
9
11
  /**
10
12
  * MotionValue tracks a value and its velocity, supporting spring animations.
11
13
  */
12
14
  export declare class MotionValue<T = number> extends EventEmitter<T> {
15
+ /** @internal Brand for safe type detection */
16
+ readonly [MOTION_VALUE_BRAND] = true;
13
17
  private current;
14
18
  private target;
15
19
  private velocity;
@@ -32,9 +36,9 @@ export declare class MotionValue<T = number> extends EventEmitter<T> {
32
36
  private animateSpring;
33
37
  }
34
38
  export type { ColorInput, RGBA } from "./color.js";
35
- export { ColorMotionValue } from "./color-motion-value.js";
39
+ export { COLOR_MOTION_VALUE_BRAND, ColorMotionValue } from "./color-motion-value.js";
36
40
  export type { EventName, Subscriber } from "./event-emitter.js";
37
- export { useColorMotionValue, useColorSpring, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./hooks.js";
41
+ export { useColorMotionValue, useColorSpring, useColorSpringState, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./hooks.js";
38
42
  export { createSpringResolver, isSpringSettled, springFromVisualDuration } from "./spring-math.js";
39
43
  export { DEFAULT_SPRING_OPTIONS, type SpringOptions } from "./types.js";
40
44
  //# sourceMappingURL=motion-value.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"motion-value.d.ts","sourceRoot":"","sources":["../../../src/motion/motion-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAEvE,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEzD;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IAC3D,OAAO,CAAC,OAAO,CAAG;IAClB,OAAO,CAAC,MAAM,CAAG;IACjB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,SAAS,CAAoC;gBAEzC,OAAO,EAAE,CAAC;IAMtB,4BAA4B;IAC5B,GAAG,IAAI,CAAC;IAIR,2CAA2C;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;IAQb,yCAAyC;IACzC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa;IAUrC,2BAA2B;IAC3B,WAAW,IAAI,MAAM;IAIrB,mCAAmC;IACnC,WAAW,IAAI,OAAO;IAItB,gCAAgC;IAChC,IAAI;IAOJ,2BAA2B;IAC3B,OAAO;IAKP,OAAO,CAAC,aAAa;CA4CrB;AAED,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACN,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAElG,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA"}
1
+ {"version":3,"file":"motion-value.d.ts","sourceRoot":"","sources":["../../../src/motion/motion-value.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EAA0B,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA;AAEvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEhD,0EAA0E;AAC1E,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAEzD;AAED;;GAEG;AACH,qBAAa,WAAW,CAAC,CAAC,GAAG,MAAM,CAAE,SAAQ,YAAY,CAAC,CAAC,CAAC;IAC3D,8CAA8C;IAC9C,QAAQ,CAAC,CAAC,kBAAkB,CAAC,QAAO;IAEpC,OAAO,CAAC,OAAO,CAAG;IAClB,OAAO,CAAC,MAAM,CAAG;IACjB,OAAO,CAAC,QAAQ,CAAI;IACpB,OAAO,CAAC,SAAS,CAAoC;gBAEzC,OAAO,EAAE,CAAC;IAMtB,4BAA4B;IAC5B,GAAG,IAAI,CAAC;IAIR,2CAA2C;IAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;IAQb,yCAAyC;IACzC,GAAG,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,aAAa;IAUrC,2BAA2B;IAC3B,WAAW,IAAI,MAAM;IAIrB,mCAAmC;IACnC,WAAW,IAAI,OAAO;IAItB,gCAAgC;IAChC,IAAI;IAOJ,2BAA2B;IAC3B,OAAO;IAKP,OAAO,CAAC,aAAa;CA4CrB;AAED,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AACpF,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACN,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,mBAAmB,EACnB,SAAS,EACT,iBAAiB,EACjB,UAAU,GACV,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAA;AAElG,OAAO,EAAE,sBAAsB,EAAE,KAAK,aAAa,EAAE,MAAM,YAAY,CAAA"}
@@ -2,10 +2,12 @@
2
2
  * MotionValue - tracks animated values with spring physics.
3
3
  * Inspired by framer-motion's MotionValue.
4
4
  */
5
+ import { MOTION_VALUE_BRAND } from "./brands.js";
5
6
  import { EventEmitter } from "./event-emitter.js";
6
7
  import { subscribeFrame } from "./frame.js";
7
8
  import { createSpringResolver, springFromVisualDuration } from "./spring-math.js";
8
9
  import { DEFAULT_SPRING_OPTIONS } from "./types.js";
10
+ export { MOTION_VALUE_BRAND } from "./brands.js";
9
11
  /** Create a MotionValue. Factory function like Motion's motionValue(). */
10
12
  export function motionValue(initial) {
11
13
  return new MotionValue(initial);
@@ -14,6 +16,8 @@ export function motionValue(initial) {
14
16
  * MotionValue tracks a value and its velocity, supporting spring animations.
15
17
  */
16
18
  export class MotionValue extends EventEmitter {
19
+ /** @internal Brand for safe type detection */
20
+ [MOTION_VALUE_BRAND] = true;
17
21
  current;
18
22
  target;
19
23
  velocity = 0;
@@ -101,8 +105,8 @@ export class MotionValue extends EventEmitter {
101
105
  this.animation = { stop: unsubscribe };
102
106
  }
103
107
  }
104
- export { ColorMotionValue } from "./color-motion-value.js";
105
- export { useColorMotionValue, useColorSpring, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./hooks.js";
108
+ export { COLOR_MOTION_VALUE_BRAND, ColorMotionValue } from "./color-motion-value.js";
109
+ export { useColorMotionValue, useColorSpring, useColorSpringState, useMotionValue, useMotionValueEvent, useSpring, useSpringRenderer, useSprings, } from "./hooks.js";
106
110
  export { createSpringResolver, isSpringSettled, springFromVisualDuration } from "./spring-math.js";
107
111
  // Re-export everything for backwards compatibility
108
112
  export { DEFAULT_SPRING_OPTIONS } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"motion-value.js","sourceRoot":"","sources":["../../../src/motion/motion-value.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"motion-value.js","sourceRoot":"","sources":["../../../src/motion/motion-value.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,20 @@
1
1
  export interface SequenceOptions<T> {
2
2
  /** Array of values to animate through */
3
3
  keyframes: T[];
4
- /** Position of each keyframe as 0-1 fraction (must match keyframes length) */
5
- times: number[];
4
+ /** Position of each keyframe as 0-1 fraction (defaults to evenly spaced) */
5
+ times?: number[];
6
6
  /** Total duration in milliseconds */
7
7
  duration: number;
8
+ /** Initial delay before starting (ms) */
9
+ delay?: number;
8
10
  /** Start automatically (default: true) */
9
11
  autoPlay?: boolean;
12
+ /** Change this value to replay the sequence */
13
+ playKey?: unknown;
14
+ /** Optional callback when the sequence finishes */
15
+ onComplete?: () => void;
16
+ /** Optional callback for each keyframe change */
17
+ onUpdate?: (value: T, index: number) => void;
10
18
  }
11
19
  /**
12
20
  * Animate through a sequence of discrete values with precise timing.
@@ -1 +1 @@
1
- {"version":3,"file":"use-sequence.d.ts","sourceRoot":"","sources":["../../../src/motion/use-sequence.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe,CAAC,CAAC;IACjC,yCAAyC;IACzC,SAAS,EAAE,CAAC,EAAE,CAAA;IACd,8EAA8E;IAC9E,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAmB7D"}
1
+ {"version":3,"file":"use-sequence.d.ts","sourceRoot":"","sources":["../../../src/motion/use-sequence.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,eAAe,CAAC,CAAC;IACjC,yCAAyC;IACzC,SAAS,EAAE,CAAC,EAAE,CAAA;IACd,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,EAAE,CAAA;IAChB,qCAAqC;IACrC,QAAQ,EAAE,MAAM,CAAA;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,mDAAmD;IACnD,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,iDAAiD;IACjD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAC5C;AA4BD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAqF7D"}
@@ -1,6 +1,34 @@
1
1
  // useSequence - Timed discrete state sequences (motion.dev-style keyframes)
2
2
  // For animating through discrete values like emojis, strings, or any non-numeric state
3
- import { useEffect, useState } from "react";
3
+ import { useCallback, useEffect, useRef, useState } from "react";
4
+ function clamp01(value) {
5
+ if (!Number.isFinite(value))
6
+ return 0;
7
+ if (value < 0)
8
+ return 0;
9
+ if (value > 1)
10
+ return 1;
11
+ return value;
12
+ }
13
+ function resolveTimes(count, times) {
14
+ if (count <= 0)
15
+ return [];
16
+ if (!times || times.length !== count) {
17
+ if (count === 1)
18
+ return [0];
19
+ const step = 1 / (count - 1);
20
+ return Array.from({ length: count }, (_, i) => i * step);
21
+ }
22
+ const resolved = new Array(count);
23
+ let prev = 0;
24
+ resolved[0] = 0;
25
+ for (let i = 1; i < count; i++) {
26
+ const next = Math.max(prev, clamp01(times[i] ?? 0));
27
+ resolved[i] = next;
28
+ prev = next;
29
+ }
30
+ return resolved;
31
+ }
4
32
  /**
5
33
  * Animate through a sequence of discrete values with precise timing.
6
34
  *
@@ -17,19 +45,81 @@ import { useEffect, useState } from "react";
17
45
  * ```
18
46
  */
19
47
  export function useSequence(options) {
20
- const { keyframes, times, duration, autoPlay = true } = options;
48
+ const { keyframes, autoPlay = true, playKey } = options;
21
49
  const [index, setIndex] = useState(0);
22
- useEffect(() => {
23
- if (!autoPlay || keyframes.length <= 1)
50
+ const optionsRef = useRef(options);
51
+ optionsRef.current = options;
52
+ const timersRef = useRef([]);
53
+ const runIdRef = useRef(0);
54
+ const prevPlayKeyRef = useRef(playKey);
55
+ const hasInitializedRef = useRef(false);
56
+ const clearTimers = useCallback(() => {
57
+ for (const timer of timersRef.current) {
58
+ clearTimeout(timer);
59
+ }
60
+ timersRef.current = [];
61
+ }, []);
62
+ const play = useCallback(() => {
63
+ const { keyframes, times, duration, delay = 0, onComplete, onUpdate } = optionsRef.current;
64
+ clearTimers();
65
+ runIdRef.current += 1;
66
+ const runId = runIdRef.current;
67
+ if (keyframes.length === 0)
24
68
  return;
25
- const timers = [];
26
- // Schedule each keyframe transition
69
+ setIndex((prev) => (prev === 0 ? prev : 0));
70
+ onUpdate?.(keyframes[0], 0);
71
+ if (keyframes.length === 1) {
72
+ onComplete?.();
73
+ return;
74
+ }
75
+ const resolvedTimes = resolveTimes(keyframes.length, times);
76
+ const durationMs = Number.isFinite(duration) ? Math.max(0, duration) : 0;
77
+ const delayMs = Number.isFinite(delay) ? Math.max(0, delay) : 0;
27
78
  for (let i = 1; i < keyframes.length; i++) {
28
- const delayMs = times[i] * duration;
29
- timers.push(setTimeout(() => setIndex(i), delayMs));
79
+ const targetDelay = delayMs + resolvedTimes[i] * durationMs;
80
+ const timer = setTimeout(() => {
81
+ if (runId !== runIdRef.current)
82
+ return;
83
+ setIndex(i);
84
+ onUpdate?.(keyframes[i], i);
85
+ if (i === keyframes.length - 1) {
86
+ onComplete?.();
87
+ }
88
+ }, targetDelay);
89
+ timersRef.current.push(timer);
90
+ }
91
+ }, [clearTimers]);
92
+ // Handle autoPlay on initial mount
93
+ useEffect(() => {
94
+ if (hasInitializedRef.current)
95
+ return;
96
+ hasInitializedRef.current = true;
97
+ if (autoPlay) {
98
+ play();
99
+ }
100
+ return () => clearTimers();
101
+ }, [autoPlay, play, clearTimers]);
102
+ // Handle playKey changes - ALWAYS replay regardless of autoPlay
103
+ useEffect(() => {
104
+ if (playKey !== prevPlayKeyRef.current) {
105
+ prevPlayKeyRef.current = playKey;
106
+ play();
107
+ }
108
+ }, [playKey, play]);
109
+ useEffect(() => {
110
+ return () => clearTimers();
111
+ }, [clearTimers]);
112
+ useEffect(() => {
113
+ if (keyframes.length === 0)
114
+ return;
115
+ if (index >= keyframes.length) {
116
+ setIndex(keyframes.length - 1);
30
117
  }
31
- return () => timers.forEach(clearTimeout);
32
- }, [keyframes, times, duration, autoPlay]);
33
- return keyframes[index];
118
+ }, [index, keyframes.length]);
119
+ if (keyframes.length === 0) {
120
+ return undefined;
121
+ }
122
+ const safeIndex = Math.min(index, keyframes.length - 1);
123
+ return keyframes[safeIndex];
34
124
  }
35
125
  //# sourceMappingURL=use-sequence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-sequence.js","sourceRoot":"","sources":["../../../src/motion/use-sequence.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uFAAuF;AAEvF,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAa3C;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAI,OAA2B;IACzD,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAA;IAC/D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IAErC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;YAAE,OAAM;QAE9C,MAAM,MAAM,GAAqB,EAAE,CAAA;QAEnC,oCAAoC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAE,GAAG,QAAQ,CAAA;YACpC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;QACpD,CAAC;QAED,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC1C,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAE1C,OAAO,SAAS,CAAC,KAAK,CAAE,CAAA;AACzB,CAAC"}
1
+ {"version":3,"file":"use-sequence.js","sourceRoot":"","sources":["../../../src/motion/use-sequence.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uFAAuF;AAEvF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAqBhE,SAAS,OAAO,CAAC,KAAa;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,CAAA;IACrC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IACvB,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,CAAC,CAAA;IACvB,OAAO,KAAK,CAAA;AACb,CAAC;AAED,SAAS,YAAY,CAAC,KAAa,EAAE,KAAgB;IACpD,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IACzB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QACtC,IAAI,KAAK,KAAK,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC,CAAA;QAC3B,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAC5B,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,KAAK,CAAS,KAAK,CAAC,CAAA;IACzC,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACnD,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAA;QAClB,IAAI,GAAG,IAAI,CAAA;IACZ,CAAC;IACD,OAAO,QAAQ,CAAA;AAChB,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,WAAW,CAAI,OAA2B;IACzD,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,OAAO,CAAA;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;IAClC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAA;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAmB,EAAE,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1B,MAAM,cAAc,GAAG,MAAM,CAAU,OAAO,CAAC,CAAA;IAC/C,MAAM,iBAAiB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;IAEvC,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;YACvC,YAAY,CAAC,KAAK,CAAC,CAAA;QACpB,CAAC;QACD,SAAS,CAAC,OAAO,GAAG,EAAE,CAAA;IACvB,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,GAAG,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,UAAU,CAAC,OAAO,CAAA;QAC1F,WAAW,EAAE,CAAA;QACb,QAAQ,CAAC,OAAO,IAAI,CAAC,CAAA;QACrB,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAA;QAE9B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAElC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;QAE3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,UAAU,EAAE,EAAE,CAAA;YACd,OAAM;QACP,CAAC;QAED,MAAM,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;QAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACxE,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAE/D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,WAAW,GAAG,OAAO,GAAG,aAAa,CAAC,CAAC,CAAE,GAAG,UAAU,CAAA;YAC5D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC7B,IAAI,KAAK,KAAK,QAAQ,CAAC,OAAO;oBAAE,OAAM;gBACtC,QAAQ,CAAC,CAAC,CAAC,CAAA;gBACX,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC,CAAE,EAAE,CAAC,CAAC,CAAA;gBAC5B,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,UAAU,EAAE,EAAE,CAAA;gBACf,CAAC;YACF,CAAC,EAAE,WAAW,CAAC,CAAA;YACf,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC9B,CAAC;IACF,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,mCAAmC;IACnC,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,iBAAiB,CAAC,OAAO;YAAE,OAAM;QACrC,iBAAiB,CAAC,OAAO,GAAG,IAAI,CAAA;QAChC,IAAI,QAAQ,EAAE,CAAC;YACd,IAAI,EAAE,CAAA;QACP,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAA;IAEjC,gEAAgE;IAChE,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,OAAO,KAAK,cAAc,CAAC,OAAO,EAAE,CAAC;YACxC,cAAc,CAAC,OAAO,GAAG,OAAO,CAAA;YAChC,IAAI,EAAE,CAAA;QACP,CAAC;IACF,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAA;IAEnB,SAAS,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,EAAE,CAAC,WAAW,EAAE,CAAA;IAC3B,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAA;IAEjB,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAM;QAClC,IAAI,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YAC/B,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QAC/B,CAAC;IACF,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC,CAAA;IAE7B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAc,CAAA;IACtB,CAAC;IACD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IACvD,OAAO,SAAS,CAAC,SAAS,CAAE,CAAA;AAC7B,CAAC"}
@@ -105,7 +105,30 @@ export interface CommonProps {
105
105
  minHeight?: number;
106
106
  /** Maximum height - natural size won't exceed this */
107
107
  maxHeight?: number;
108
- /** Index signature for Record<string, unknown> compatibility */
108
+ /**
109
+ * Called after layout with the element's final dimensions.
110
+ * Fires only when size changes (deduplicated).
111
+ *
112
+ * @example
113
+ * ```tsx
114
+ * const [size, setSize] = useState({ width: 0, height: 0 })
115
+ * <vstack greedy onLayout={setSize}>
116
+ * <text>Width: {size.width}</text>
117
+ * </vstack>
118
+ * ```
119
+ */
120
+ onLayout?: (size: {
121
+ width: number;
122
+ height: number;
123
+ x: number;
124
+ y: number;
125
+ }) => void;
126
+ /** React key prop for list reconciliation */
127
+ key?: string | number;
128
+ /**
129
+ * Index signature for Record<string, unknown> compatibility.
130
+ * TODO: Remove this and properly type all props to catch typos like "grow" instead of "greedy"
131
+ */
109
132
  [key: string]: unknown;
110
133
  }
111
134
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reconciler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAGvE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAE1B,MAAM,WAAW,YAAY;IAC5B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IAEZ,qBAAqB;IACrB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,YAAY,EAAE,CAAA;IAExB,qDAAqD;IACrD,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IAEjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,6CAA6C;IAC7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAEzC,4CAA4C;IAC5C,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IAExB,uBAAuB;IACvB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAElD,8BAA8B;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAEjD,yBAAyB;IACzB,OAAO,IAAI,IAAI,CAAA;IAEf,gBAAgB;IAChB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAEtC,mBAAmB;IACnB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAEtC,kCAAkC;IAClC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;CAC7D;AAED,MAAM,WAAW,WAAW;IAC3B,aAAa,IAAI,IAAI,CAAA;IACrB,kFAAkF;IAClF,sBAAsB,CAAC,IAAI,IAAI,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAMzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,gEAAgE;IAChE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/reconciler/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAGvE,YAAY,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;AAE1B,MAAM,WAAW,YAAY;IAC5B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAA;IACV,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAA;IAEZ,qBAAqB;IACrB,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,uBAAuB;IACvB,QAAQ,EAAE,YAAY,EAAE,CAAA;IAExB,qDAAqD;IACrD,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IAEjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB,6CAA6C;IAC7C,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IAEzC,4CAA4C;IAC5C,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;IAExB,uBAAuB;IACvB,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;IAElD,8BAA8B;IAC9B,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAEjD,yBAAyB;IACzB,OAAO,IAAI,IAAI,CAAA;IAEf,gBAAgB;IAChB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAEtC,mBAAmB;IACnB,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAAA;IAEtC,kCAAkC;IAClC,YAAY,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;CAC7D;AAED,MAAM,WAAW,WAAW;IAC3B,aAAa,IAAI,IAAI,CAAA;IACrB,kFAAkF;IAClF,sBAAsB,CAAC,IAAI,IAAI,CAAA;CAC/B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,MAAM,WAAW,WAAW;IAC3B;;;;;;;OAOG;IACH,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;IAMzB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IAEf,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,qDAAqD;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB,wDAAwD;IACxD,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAElF,6CAA6C;IAC7C,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAErB;;;OAGG;IACH,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAA;CACtB"}