@rafaelaugusto/jolt 0.1.0-rc.12.1 → 0.1.0-rc.13

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 (180) hide show
  1. package/README.md +2 -2
  2. package/dist/core/circle-math.d.ts.map +1 -1
  3. package/dist/core/easing.d.ts +8 -0
  4. package/dist/core/easing.d.ts.map +1 -1
  5. package/dist/core/easing.js +12 -4
  6. package/dist/core/easing.js.map +1 -1
  7. package/dist/core/gesture-math.d.ts.map +1 -1
  8. package/dist/core/inspection-plot.d.ts +11 -0
  9. package/dist/core/inspection-plot.d.ts.map +1 -0
  10. package/dist/core/inspection-plot.js +57 -0
  11. package/dist/core/inspection-plot.js.map +1 -0
  12. package/dist/core/numeric-map.js.map +1 -1
  13. package/dist/core/particle-motion.d.ts +8 -0
  14. package/dist/core/particle-motion.d.ts.map +1 -0
  15. package/dist/core/particle-motion.js +11 -0
  16. package/dist/core/particle-motion.js.map +1 -0
  17. package/dist/core/pointer.d.ts +1 -1
  18. package/dist/core/preset-recipe.d.ts +20 -0
  19. package/dist/core/preset-recipe.d.ts.map +1 -0
  20. package/dist/core/preset-recipe.js +79 -0
  21. package/dist/core/preset-recipe.js.map +1 -0
  22. package/dist/core/reorder.d.ts +5 -0
  23. package/dist/core/reorder.d.ts.map +1 -1
  24. package/dist/core/reorder.js +17 -0
  25. package/dist/core/reorder.js.map +1 -1
  26. package/dist/core/rig.d.ts +8 -8
  27. package/dist/core/rig.d.ts.map +1 -1
  28. package/dist/core/scroll-header.js.map +1 -1
  29. package/dist/core/sensor-kinds.d.ts +1 -1
  30. package/dist/core/sensor-kinds.d.ts.map +1 -1
  31. package/dist/core/sensor-replay.d.ts +10 -0
  32. package/dist/core/sensor-replay.d.ts.map +1 -0
  33. package/dist/core/sensor-replay.js +32 -0
  34. package/dist/core/sensor-replay.js.map +1 -0
  35. package/dist/index.d.ts +2 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/inspector/plot.d.ts +1 -3
  40. package/dist/inspector/plot.d.ts.map +1 -1
  41. package/dist/inspector/plot.js +1 -22
  42. package/dist/inspector/plot.js.map +1 -1
  43. package/dist/testing/sensors.d.ts +2 -9
  44. package/dist/testing/sensors.d.ts.map +1 -1
  45. package/dist/testing/sensors.js +3 -21
  46. package/dist/testing/sensors.js.map +1 -1
  47. package/dist/web/angular/index.d.ts +62 -0
  48. package/dist/web/angular/index.d.ts.map +1 -0
  49. package/dist/web/angular/index.js +190 -0
  50. package/dist/web/angular/index.js.map +1 -0
  51. package/dist/web/bottom-sheet.js.map +1 -1
  52. package/dist/web/compose.js.map +1 -1
  53. package/dist/web/curve.js.map +1 -1
  54. package/dist/web/decay.js.map +1 -1
  55. package/dist/web/diagnostics.d.ts +1 -1
  56. package/dist/web/diagnostics.d.ts.map +1 -1
  57. package/dist/web/diagnostics.js.map +1 -1
  58. package/dist/web/drag.d.ts +11 -11
  59. package/dist/web/drag.d.ts.map +1 -1
  60. package/dist/web/effect.d.ts.map +1 -1
  61. package/dist/web/effect.js.map +1 -1
  62. package/dist/web/frameworks/binding.d.ts +39 -0
  63. package/dist/web/frameworks/binding.d.ts.map +1 -0
  64. package/dist/web/frameworks/binding.js +356 -0
  65. package/dist/web/frameworks/binding.js.map +1 -0
  66. package/dist/web/gestures.js.map +1 -1
  67. package/dist/web/gradient.js.map +1 -1
  68. package/dist/web/image-surface.d.ts.map +1 -1
  69. package/dist/web/image-surface.js.map +1 -1
  70. package/dist/web/inspector.d.ts +24 -0
  71. package/dist/web/inspector.d.ts.map +1 -1
  72. package/dist/web/inspector.js +76 -5
  73. package/dist/web/inspector.js.map +1 -1
  74. package/dist/web/interaction.d.ts +2 -0
  75. package/dist/web/interaction.d.ts.map +1 -1
  76. package/dist/web/interaction.js.map +1 -1
  77. package/dist/web/keyboard.js.map +1 -1
  78. package/dist/web/layout.d.ts +75 -75
  79. package/dist/web/layout.d.ts.map +1 -1
  80. package/dist/web/layout.js.map +1 -1
  81. package/dist/web/particles.d.ts.map +1 -1
  82. package/dist/web/particles.js +5 -6
  83. package/dist/web/particles.js.map +1 -1
  84. package/dist/web/press.js.map +1 -1
  85. package/dist/web/progress.d.ts.map +1 -1
  86. package/dist/web/properties.d.ts +4 -4
  87. package/dist/web/properties.d.ts.map +1 -1
  88. package/dist/web/property.d.ts.map +1 -1
  89. package/dist/web/property.js.map +1 -1
  90. package/dist/web/public.d.ts +2 -0
  91. package/dist/web/public.d.ts.map +1 -1
  92. package/dist/web/public.js +1 -0
  93. package/dist/web/public.js.map +1 -1
  94. package/dist/web/react/index.d.ts +12 -0
  95. package/dist/web/react/index.d.ts.map +1 -0
  96. package/dist/web/react/index.js +119 -0
  97. package/dist/web/react/index.js.map +1 -0
  98. package/dist/web/reorder.d.ts.map +1 -1
  99. package/dist/web/reorder.js +23 -2
  100. package/dist/web/reorder.js.map +1 -1
  101. package/dist/web/runtime.d.ts +22 -22
  102. package/dist/web/runtime.d.ts.map +1 -1
  103. package/dist/web/runtime.js +15 -5
  104. package/dist/web/runtime.js.map +1 -1
  105. package/dist/web/scheduler.d.ts.map +1 -1
  106. package/dist/web/scheduler.js.map +1 -1
  107. package/dist/web/scroll-header.js.map +1 -1
  108. package/dist/web/scroll-range.d.ts.map +1 -1
  109. package/dist/web/scroll-range.js.map +1 -1
  110. package/dist/web/scroll.d.ts +1 -1
  111. package/dist/web/scroll.d.ts.map +1 -1
  112. package/dist/web/scroll.js.map +1 -1
  113. package/dist/web/sensor-replay-bridge.d.ts +16 -0
  114. package/dist/web/sensor-replay-bridge.d.ts.map +1 -0
  115. package/dist/web/sensor-replay-bridge.js +12 -0
  116. package/dist/web/sensor-replay-bridge.js.map +1 -0
  117. package/dist/web/sensor-replay.d.ts +22 -0
  118. package/dist/web/sensor-replay.d.ts.map +1 -0
  119. package/dist/web/sensor-replay.js +124 -0
  120. package/dist/web/sensor-replay.js.map +1 -0
  121. package/dist/web/sensors.d.ts +3 -1
  122. package/dist/web/sensors.d.ts.map +1 -1
  123. package/dist/web/sensors.js +100 -8
  124. package/dist/web/sensors.js.map +1 -1
  125. package/dist/web/shared-layout.js.map +1 -1
  126. package/dist/web/size.d.ts.map +1 -1
  127. package/dist/web/size.js.map +1 -1
  128. package/dist/web/solid/index.d.ts +16 -0
  129. package/dist/web/solid/index.d.ts.map +1 -0
  130. package/dist/web/solid/index.js +89 -0
  131. package/dist/web/solid/index.js.map +1 -0
  132. package/dist/web/spring-value.d.ts.map +1 -1
  133. package/dist/web/spring-value.js.map +1 -1
  134. package/dist/web/stroke.d.ts.map +1 -1
  135. package/dist/web/stroke.js.map +1 -1
  136. package/dist/web/style.d.ts.map +1 -1
  137. package/dist/web/style.js.map +1 -1
  138. package/dist/web/surface-effect.d.ts.map +1 -1
  139. package/dist/web/surface-effect.js.map +1 -1
  140. package/dist/web/svelte/index.d.ts +50 -0
  141. package/dist/web/svelte/index.d.ts.map +1 -0
  142. package/dist/web/svelte/index.js +68 -0
  143. package/dist/web/svelte/index.js.map +1 -0
  144. package/dist/web/testing.d.ts +1 -0
  145. package/dist/web/testing.d.ts.map +1 -1
  146. package/dist/web/testing.js +1 -0
  147. package/dist/web/testing.js.map +1 -1
  148. package/dist/web/timers.d.ts.map +1 -1
  149. package/dist/web/timers.js.map +1 -1
  150. package/dist/web/types.d.ts.map +1 -1
  151. package/dist/web/value-playback.d.ts +17 -17
  152. package/dist/web/value-playback.js.map +1 -1
  153. package/dist/web/value.d.ts.map +1 -1
  154. package/dist/web/value.js.map +1 -1
  155. package/dist/web/viewport.js.map +1 -1
  156. package/package.json +32 -6
  157. package/src/core/easing.ts +12 -4
  158. package/src/core/inspection-plot.ts +74 -0
  159. package/src/core/particle-motion.ts +20 -0
  160. package/src/core/preset-recipe.ts +111 -0
  161. package/src/core/reorder.ts +23 -0
  162. package/src/core/sensor-replay.ts +48 -0
  163. package/src/index.ts +6 -0
  164. package/src/inspector/plot.ts +1 -27
  165. package/src/testing/sensors.ts +4 -36
  166. package/src/web/angular/index.ts +171 -0
  167. package/src/web/frameworks/binding.ts +408 -0
  168. package/src/web/inspector.ts +80 -5
  169. package/src/web/interaction.ts +2 -0
  170. package/src/web/particles.ts +15 -9
  171. package/src/web/public.ts +6 -0
  172. package/src/web/react/index.ts +208 -0
  173. package/src/web/reorder.ts +21 -3
  174. package/src/web/runtime.ts +13 -4
  175. package/src/web/sensor-replay-bridge.ts +23 -0
  176. package/src/web/sensor-replay.ts +140 -0
  177. package/src/web/sensors.ts +103 -9
  178. package/src/web/solid/index.ts +102 -0
  179. package/src/web/svelte/index.ts +88 -0
  180. package/src/web/testing.ts +6 -0
package/README.md CHANGED
@@ -31,7 +31,7 @@ NativeScript's `view.animate()` covers the basics and stops there: one curve for
31
31
 
32
32
  Jolt computes the motion once, in JavaScript, when the animation starts, and hands it to the platform as keyframes: Core Animation on iOS, `ObjectAnimator` on Android. Those default view tracks play without per-frame JavaScript. Real-size layout, opt-in subscribers, gesture input and timeline step activation retain their documented [execution limits](https://jolt.rafaelaugusto.dev/guide/how-it-works). Springs follow real physics, and an animation that interrupts another one starts from where the view is, at the speed it was going.
33
33
 
34
- The [0.1.0-rc.12.1 release candidate](https://github.com/rafaelaugustos/jolt/blob/v0.1.0-rc.12.1/CHANGELOG.md) adds [portable composition](https://github.com/rafaelaugustos/jolt/blob/v0.1.0-rc.12.1/docs/guide/portable-composition.md): retained Web resources and Vue shapes, behavior priorities, gradient text, articulated 2D rigs, shared helpers and runtime-aware reduced-motion observation. Browser vector adapters include explicit availability; physical browser sensor validation remains open in #385. The guide includes reviewed native/browser recordings and platform limits. Install `@rafaelaugusto/jolt@0.1.0-rc.12.1` and rebuild native apps; external native properties also need matching `@rafaelaugusto/jolt-native@0.1.0-rc.12.1`. Web APIs remain experimental; performance investigations remain open.
34
+ The [0.1.0-rc.13 release candidate](https://github.com/rafaelaugustos/jolt/blob/v0.1.0-rc.13/CHANGELOG.md) adds standalone [SwiftUI for iOS 17+/macOS 14+](https://jolt.rafaelaugusto.dev/guide/swiftui), [React/Angular/Svelte/Solid Web adapters](https://jolt.rafaelaugusto.dev/guide/web-frameworks), portable inspection/replay and the motion, interaction and geometry contracts from #436. SwiftUI uses the repository's Swift Package; npm supplies the JavaScript packages. Install matching core/native versions and rebuild NativeScript apps. Web and SwiftUI remain experimental; physical sensor and performance acceptance remains separate.
35
35
 
36
36
  For the browser, import **`@rafaelaugusto/jolt/web`**. It installs without NativeScript, Vue or React; **`@rafaelaugusto/jolt/web/vue`** optionally integrates Vue 3.5 DOM refs and enter/leave. Both entries are experimental and use the same motion compiler as native playback. See [installation](https://jolt.rafaelaugusto.dev/guide/install#experimental-web-candidate), [finite Web playback](https://jolt.rafaelaugusto.dev/guide/web-runtime) and [Vue Web motion](https://jolt.rafaelaugusto.dev/guide/web-vue). Mavis integration and its shared application proof continue separately.
37
37
 
@@ -101,7 +101,7 @@ For the browser, import **`@rafaelaugusto/jolt/web`**. It installs without Nativ
101
101
  npm install @rafaelaugusto/jolt@next
102
102
  ```
103
103
 
104
- The current release candidate is **0.1.0-rc.12.1**, published under the `next` tag. Requires `@nativescript/core` 8.9 or later. It doesn't depend on a framework: it takes a view, or an element that holds one. Rebuild the native app after installing or upgrading Jolt. See [release status and limits](https://jolt.rafaelaugusto.dev/guide/not-there-yet) for the remaining stable-release acceptance work.
104
+ The current release candidate is **0.1.0-rc.13**, published under the `next` tag. Requires `@nativescript/core` 8.9 or later. It doesn't depend on a framework: it takes a view, or an element that holds one. Rebuild the native app after installing or upgrading Jolt. See [release status and limits](https://jolt.rafaelaugusto.dev/guide/not-there-yet) for the remaining stable-release acceptance work.
105
105
 
106
106
  On iOS 15+, Jolt requests up to 120 Hz on ProMotion displays. Set `CADisableMinimumFrameDurationOnPhone` to `true` in the app's `App_Resources/iOS/Info.plist` and rebuild to enable higher rates on iPhone. See the [iOS setup](https://jolt.rafaelaugusto.dev/guide/install#promotion-on-ios); the system still chooses the actual refresh rate.
107
107
 
@@ -1 +1 @@
1
- {"version":3,"file":"circle-math.d.ts","sourceRoot":"","sources":["../../src/core/circle-math.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"circle-math.d.ts","sourceRoot":"","sources":["../../src/core/circle-math.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,13 @@ export declare const linear: EasingFunction;
6
6
  /** Internal sampler hint. Arbitrary callbacks are never assumed to be band limited. */
7
7
  export declare const isBuiltinEasing: (ease: EasingFunction) => boolean;
8
8
  export declare function cubicBezier(x1: number, y1: number, x2: number, y2: number): EasingFunction;
9
+ /** Canonical control points also consumed by the standalone SwiftUI adapter generator. */
10
+ export declare const timingCurves: {
11
+ readonly linear: readonly [0, 0, 1, 1];
12
+ readonly ease: readonly [0.25, 0.1, 0.25, 1];
13
+ readonly easeIn: readonly [0.42, 0, 1, 1];
14
+ readonly easeOut: readonly [0, 0, 0.58, 1];
15
+ readonly easeInOut: readonly [0.42, 0, 0.58, 1];
16
+ };
9
17
  export declare function resolveEasing(easing: Easing): EasingFunction;
10
18
  //# sourceMappingURL=easing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"easing.d.ts","sourceRoot":"","sources":["../../src/core/easing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;AAEzD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;AAEnF,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,WAAW,GACX,YAAY,GACZ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,EAAE,CAAA;AAExF,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,CAAA;AAE9D,eAAO,MAAM,MAAM,EAAE,cAAyB,CAAA;AAE9C,uFAAuF;AACvF,eAAO,MAAM,eAAe,GAAI,MAAM,cAAc,YAAuB,CAAA;AAE3E,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAwCzE;AA6CD,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAQ5D"}
1
+ {"version":3,"file":"easing.d.ts","sourceRoot":"","sources":["../../src/core/easing.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAA;AAEzD,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,CAAA;AAEnF,MAAM,MAAM,UAAU,GAClB,QAAQ,GACR,MAAM,GACN,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,SAAS,GACT,WAAW,GACX,YAAY,GACZ,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,EAAE,CAAA;AAExF,MAAM,MAAM,MAAM,GAAG,UAAU,GAAG,WAAW,GAAG,cAAc,CAAA;AAE9D,eAAO,MAAM,MAAM,EAAE,cAAyB,CAAA;AAE9C,uFAAuF;AACvF,eAAO,MAAM,eAAe,GAAI,MAAM,cAAc,YAAuB,CAAA;AAE3E,wBAAgB,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,kBAwCzE;AAsBD,0FAA0F;AAC1F,eAAO,MAAM,YAAY;;;;;;CAMf,CAAA;AAwBV,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAQ5D"}
@@ -53,12 +53,20 @@ const family = (name, easeIn) => ({
53
53
  [`${name}Out`]: reverse(easeIn),
54
54
  [`${name}InOut`]: mirror(easeIn),
55
55
  });
56
+ /** Canonical control points also consumed by the standalone SwiftUI adapter generator. */
57
+ export const timingCurves = {
58
+ linear: [0, 0, 1, 1],
59
+ ease: [0.25, 0.1, 0.25, 1],
60
+ easeIn: [0.42, 0, 1, 1],
61
+ easeOut: [0, 0, 0.58, 1],
62
+ easeInOut: [0.42, 0, 0.58, 1],
63
+ };
56
64
  const easings = {
57
65
  linear,
58
- ease: cubicBezier(0.25, 0.1, 0.25, 1),
59
- easeIn: cubicBezier(0.42, 0, 1, 1),
60
- easeOut: cubicBezier(0, 0, 0.58, 1),
61
- easeInOut: cubicBezier(0.42, 0, 0.58, 1),
66
+ ease: cubicBezier(...timingCurves.ease),
67
+ easeIn: cubicBezier(...timingCurves.easeIn),
68
+ easeOut: cubicBezier(...timingCurves.easeOut),
69
+ easeInOut: cubicBezier(...timingCurves.easeInOut),
62
70
  circIn,
63
71
  circOut: reverse(circIn),
64
72
  circInOut: mirror(circIn),
@@ -1 +1 @@
1
- {"version":3,"file":"easing.js","sourceRoot":"","sources":["../../src/core/easing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"easing.js","sourceRoot":"","sources":["../../src/core/easing.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"gesture-math.d.ts","sourceRoot":"","sources":["../../src/core/gesture-math.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE;;;;;EAa9D;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAExD;AACD,eAAO,MAAM,SAAS,UAAW,MAAM,OAAO,MAAM,OAAO,MAAM,WAC5B,CAAA;AACrC,iFAAiF;AACjF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,OAAO,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE;;;;EAwBtD"}
1
+ {"version":3,"file":"gesture-math.d.ts","sourceRoot":"","sources":["../../src/core/gesture-math.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AACD,wBAAgB,eAAe,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE;;;;;EAa9D;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAExD;AACD,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,MAAM,WAC5B,CAAA;AACrC,iFAAiF;AACjF,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EACjC,OAAO,EAAE,SAAS;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,EAAE;;;;EAwBtD"}
@@ -0,0 +1,11 @@
1
+ export type PlotEvent = 'start' | 'replace' | 'pause' | 'play' | 'stop' | 'complete' | 'seek';
2
+ export interface PlotSample {
3
+ at: number;
4
+ expected: number | null;
5
+ observed: number | null;
6
+ event?: PlotEvent;
7
+ }
8
+ export declare function validatePlotSample(sample: PlotSample): void;
9
+ /** Bounded portable SVG. Missing observations break the line; they are never interpolated. */
10
+ export declare function inspectorPlot(samples: readonly PlotSample[]): string;
11
+ //# sourceMappingURL=inspection-plot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection-plot.d.ts","sourceRoot":"","sources":["../../src/core/inspection-plot.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACnB,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAA;AACvE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAUD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU,QAWpD;AACD,8FAA8F;AAC9F,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,GAAG,MAAM,CA2CpE"}
@@ -0,0 +1,57 @@
1
+ const events = [
2
+ 'start',
3
+ 'replace',
4
+ 'pause',
5
+ 'play',
6
+ 'stop',
7
+ 'complete',
8
+ 'seek',
9
+ ];
10
+ export function validatePlotSample(sample) {
11
+ if (!sample ||
12
+ !Number.isFinite(sample.at) ||
13
+ sample.at < 0 ||
14
+ [sample.expected, sample.observed].some((v) => v !== null && !Number.isFinite(v)) ||
15
+ (sample.event !== undefined && !events.includes(sample.event)))
16
+ throw new TypeError('Plot samples need finite timestamps/values, null gaps and known events.');
17
+ }
18
+ /** Bounded portable SVG. Missing observations break the line; they are never interpolated. */
19
+ export function inspectorPlot(samples) {
20
+ if (!Array.isArray(samples) || samples.length > 4096)
21
+ throw new RangeError('Plot at most 4096 samples.');
22
+ let previous = -1;
23
+ for (const sample of samples) {
24
+ validatePlotSample(sample);
25
+ if (sample.at < previous)
26
+ throw new RangeError('Plot timestamps must be ordered.');
27
+ previous = sample.at;
28
+ }
29
+ const values = samples
30
+ .flatMap((s) => [s.expected, s.observed])
31
+ .filter((v) => v !== null);
32
+ const min = Math.min(0, ...values), max = Math.max(1, ...values);
33
+ // Normalize before subtraction so finite extreme values cannot overflow.
34
+ const scale = Math.max(Math.abs(min), Math.abs(max));
35
+ const low = min / scale, range = max / scale - low;
36
+ const first = samples[0]?.at ?? 0, span = Math.max(1, (samples.at(-1)?.at ?? 1) - first);
37
+ const x = (at) => (12 + ((at - first) / span) * 296).toFixed(2);
38
+ const path = (key) => {
39
+ let drawing = false, result = '';
40
+ for (const sample of samples) {
41
+ const value = sample[key];
42
+ if (value === null) {
43
+ drawing = false;
44
+ continue;
45
+ }
46
+ result += `${drawing ? 'L' : 'M'}${x(sample.at)},${(88 - ((value / scale - low) / range) * 72).toFixed(2)} `;
47
+ drawing = true;
48
+ }
49
+ return result;
50
+ };
51
+ const markers = samples
52
+ .filter((s) => s.event)
53
+ .map((s) => `<path d="M${x(s.at)} 12V92" stroke="#8EA6FF" stroke-dasharray="2 3"><title>${s.event}</title></path>`)
54
+ .join('');
55
+ return `<svg xmlns="http://www.w3.org/2000/svg" width="320" height="104" viewBox="0 0 320 104" role="img" aria-label="Expected and observed motion; gaps indicate unavailable observations"><rect width="320" height="104" rx="14" fill="#252A34"/><path d="M12 16H308M12 52H308M12 88H308" stroke="#444956" stroke-width=".5"/>${markers}<path d="${path('expected')}" fill="none" stroke="#DFFF69" stroke-width="2.5"/><path d="${path('observed')}" fill="none" stroke="#F0ABCE" stroke-width="2" stroke-dasharray="4 2"/></svg>`;
56
+ }
57
+ //# sourceMappingURL=inspection-plot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inspection-plot.js","sourceRoot":"","sources":["../../src/core/inspection-plot.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"numeric-map.js","sourceRoot":"","sources":["../../src/core/numeric-map.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"numeric-map.js","sourceRoot":"","sources":["../../src/core/numeric-map.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /** Shared ballistic sampling. Time/lifetime are milliseconds; spin is radians/second. */
2
+ export declare function sampleParticle(x: number, y: number, vx: number, vy: number, gravity: number, spin: number, lifetime: number, milliseconds: number, fadeOut?: boolean): {
3
+ x: number;
4
+ y: number;
5
+ rotation: number;
6
+ opacity: number;
7
+ };
8
+ //# sourceMappingURL=particle-motion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"particle-motion.d.ts","sourceRoot":"","sources":["../../src/core/particle-motion.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,wBAAgB,cAAc,CAC5B,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,EAAE,EAAE,MAAM,EACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,OAAO,UAAO;;;;;EASf"}
@@ -0,0 +1,11 @@
1
+ /** Shared ballistic sampling. Time/lifetime are milliseconds; spin is radians/second. */
2
+ export function sampleParticle(x, y, vx, vy, gravity, spin, lifetime, milliseconds, fadeOut = true) {
3
+ const age = Math.max(0, milliseconds) / 1000;
4
+ return {
5
+ x: x + vx * age,
6
+ y: y + vy * age + (gravity * age * age) / 2,
7
+ rotation: spin * age,
8
+ opacity: fadeOut ? Math.max(0, 1 - (age * 1000) / lifetime) : 1,
9
+ };
10
+ }
11
+ //# sourceMappingURL=particle-motion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"particle-motion.js","sourceRoot":"","sources":["../../src/core/particle-motion.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAC5B,CAAS,EACT,CAAS,EACT,EAAU,EACV,EAAU,EACV,OAAe,EACf,IAAY,EACZ,QAAgB,EAChB,YAAoB,EACpB,OAAO,GAAG,IAAI;IAEd,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,GAAG,IAAI,CAAA;IAC5C,OAAO;QACL,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG;QACf,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC;QAC3C,QAAQ,EAAE,IAAI,GAAG,GAAG;QACpB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KAChE,CAAA;AACH,CAAC"}
@@ -12,7 +12,7 @@ export interface PointerCoordinatesOptions {
12
12
  disabled?: boolean;
13
13
  }
14
14
  export declare function resolvePointerOptions(input: PointerCoordinatesOptions): {
15
- axis: "x" | "y" | "both";
15
+ axis: "both" | "x" | "y";
16
16
  coordinates: "normalized" | "pixels";
17
17
  range: {
18
18
  x: number[] | undefined;
@@ -0,0 +1,20 @@
1
+ import type { Transition } from './transition.js';
2
+ /** The finite two-endpoint recipes supported by all three execution adapters. */
3
+ export type PortablePresetName = 'fadeIn' | 'fadeInUp' | 'fadeInDown' | 'fadeInLeft' | 'fadeInRight' | 'zoomIn' | 'popIn' | 'fadeOut' | 'fadeOutUp' | 'fadeOutDown' | 'fadeOutLeft' | 'fadeOutRight' | 'zoomOut';
4
+ export interface PresetParameters {
5
+ /** Points on Apple, DIP in NativeScript, CSS pixels on Web. */
6
+ distance?: number;
7
+ scale?: number;
8
+ direction?: 'up' | 'down' | 'left' | 'right';
9
+ /** Override all channels with a finite tween in milliseconds (including zero). */
10
+ duration?: number;
11
+ }
12
+ type Channel = 'x' | 'y' | 'scale' | 'opacity';
13
+ export interface PresetRecipe {
14
+ keyframes: Partial<Record<Channel, number | readonly number[]>>;
15
+ transition: Transition & Partial<Record<Channel, Transition>>;
16
+ }
17
+ /** Pure recipe construction; registration and resource ownership stay in the runtime. */
18
+ export declare function createPreset(name: PortablePresetName, parameters?: PresetParameters): PresetRecipe;
19
+ export {};
20
+ //# sourceMappingURL=preset-recipe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-recipe.d.ts","sourceRoot":"","sources":["../../src/core/preset-recipe.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,iFAAiF;AACjF,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,YAAY,GACZ,aAAa,GACb,QAAQ,GACR,OAAO,GACP,SAAS,GACT,WAAW,GACX,aAAa,GACb,aAAa,GACb,cAAc,GACd,SAAS,CAAA;AACb,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAA;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AACD,KAAK,OAAO,GAAG,GAAG,GAAG,GAAG,GAAG,OAAO,GAAG,SAAS,CAAA;AAC9C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAAC,CAAC,CAAA;IAC/D,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAA;CAC9D;AAiBD,yFAAyF;AACzF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,kBAAkB,EACxB,UAAU,GAAE,gBAAqB,GAChC,YAAY,CA2Dd"}
@@ -0,0 +1,79 @@
1
+ import { presets } from './presets.js';
2
+ const names = new Set([
3
+ 'fadeIn',
4
+ 'fadeInUp',
5
+ 'fadeInDown',
6
+ 'fadeInLeft',
7
+ 'fadeInRight',
8
+ 'zoomIn',
9
+ 'popIn',
10
+ 'fadeOut',
11
+ 'fadeOutUp',
12
+ 'fadeOutDown',
13
+ 'fadeOutLeft',
14
+ 'fadeOutRight',
15
+ 'zoomOut',
16
+ ]);
17
+ /** Pure recipe construction; registration and resource ownership stay in the runtime. */
18
+ export function createPreset(name, parameters = {}) {
19
+ if (!names.has(name))
20
+ throw new TypeError('Expected a portable finite preset name.');
21
+ if (!parameters || typeof parameters !== 'object' || Array.isArray(parameters))
22
+ throw new TypeError('Preset parameters must be an object.');
23
+ for (const [key, value] of Object.entries(parameters)) {
24
+ if (!['distance', 'scale', 'direction', 'duration'].includes(key))
25
+ throw new TypeError(`Unknown preset parameter "${key}".`);
26
+ if (value === undefined)
27
+ continue;
28
+ if (key === 'direction') {
29
+ if (!['up', 'down', 'left', 'right'].includes(value))
30
+ throw new TypeError('Invalid preset direction.');
31
+ }
32
+ else if (typeof value !== 'number' ||
33
+ !Number.isFinite(value) ||
34
+ value < 0 ||
35
+ value > (key === 'duration' ? 60_000 : key === 'scale' ? 100 : 1_000_000))
36
+ throw new RangeError(`Invalid preset ${key}.`);
37
+ }
38
+ const original = presets[name];
39
+ const keyframes = Object.fromEntries(Object.entries(original.keyframes).map(([key, value]) => [
40
+ key,
41
+ Array.isArray(value) ? [...value] : value,
42
+ ]));
43
+ const transition = { ...original.transition };
44
+ for (const channel of ['x', 'y', 'scale', 'opacity'])
45
+ if (transition[channel])
46
+ transition[channel] = { ...transition[channel] };
47
+ const entering = !name.includes('Out');
48
+ const direction = parameters.direction;
49
+ if (direction) {
50
+ delete keyframes.x;
51
+ delete keyframes.y;
52
+ const horizontal = direction === 'left' || direction === 'right';
53
+ const sign = direction === 'left' || direction === 'up' ? -1 : 1;
54
+ const amount = (parameters.distance ?? 24) * sign * (!horizontal && entering ? -1 : 1);
55
+ keyframes[horizontal ? 'x' : 'y'] = entering ? [amount, 0] : amount;
56
+ }
57
+ else if (parameters.distance !== undefined) {
58
+ for (const channel of ['x', 'y']) {
59
+ const value = keyframes[channel];
60
+ if (typeof value === 'number')
61
+ keyframes[channel] = Math.sign(value) * parameters.distance;
62
+ else if (value)
63
+ keyframes[channel] = value.map((n) => Math.sign(n) * parameters.distance);
64
+ }
65
+ }
66
+ if (parameters.scale !== undefined)
67
+ keyframes.scale = entering ? [parameters.scale, 1] : parameters.scale;
68
+ if (parameters.duration !== undefined)
69
+ return {
70
+ keyframes,
71
+ transition: {
72
+ type: 'tween',
73
+ duration: parameters.duration,
74
+ ease: entering ? 'easeOut' : 'easeIn',
75
+ },
76
+ };
77
+ return { keyframes, transition };
78
+ }
79
+ //# sourceMappingURL=preset-recipe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-recipe.js","sourceRoot":"","sources":["../../src/core/preset-recipe.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,9 @@ export declare function itemKeys<T, K extends ReorderKey>(items: readonly T[], k
9
9
  export declare function sameKeys<K>(a: readonly K[], b: readonly K[]): boolean;
10
10
  /** toIndex is the final position, after removing the dragged item. */
11
11
  export declare function moveAt<K extends ReorderKey>(keys: readonly K[], fromIndex: number, toIndex: number): ReorderMove<K> | undefined;
12
+ /** Destination in a measured, realized layout. The caller supplies the dragged row's center. */
13
+ export declare function reorderDestination(rows: readonly {
14
+ start: number;
15
+ size: number;
16
+ }[], from: number, center: number): number | undefined;
12
17
  //# sourceMappingURL=reorder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AACxC,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC5D,GAAG,EAAE,CAAC,CAAA;IACN,SAAS,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,EAC9C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,EAAE,CAaL;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,CAErE;AAED,sEAAsE;AACtE,wBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,EACzC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAiB5B"}
1
+ {"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,CAAA;AACxC,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,GAAG,UAAU;IAC5D,GAAG,EAAE,CAAC,CAAA;IACN,SAAS,EAAE,CAAC,GAAG,IAAI,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,UAAU,EAC9C,KAAK,EAAE,SAAS,CAAC,EAAE,EACnB,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAClB,CAAC,EAAE,CAaL;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,OAAO,CAErE;AAED,sEAAsE;AACtE,wBAAgB,MAAM,CAAC,CAAC,SAAS,UAAU,EACzC,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,WAAW,CAAC,CAAC,CAAC,GAAG,SAAS,CAiB5B;AAED,gGAAgG;AAChG,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,SAAS;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,EAAE,EAChD,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,SAAS,CAgBpB"}
@@ -27,4 +27,21 @@ export function moveAt(keys, fromIndex, toIndex) {
27
27
  toIndex,
28
28
  };
29
29
  }
30
+ /** Destination in a measured, realized layout. The caller supplies the dragged row's center. */
31
+ export function reorderDestination(rows, from, center) {
32
+ if (!Number.isInteger(from) ||
33
+ from < 0 ||
34
+ from >= rows.length ||
35
+ !Number.isFinite(center))
36
+ return undefined;
37
+ let destination = 0;
38
+ for (let i = 0; i < rows.length; i++) {
39
+ const row = rows[i];
40
+ if (!Number.isFinite(row.start) || !Number.isFinite(row.size) || row.size < 0)
41
+ return undefined;
42
+ if (i !== from && center > row.start + row.size / 2)
43
+ destination++;
44
+ }
45
+ return destination;
46
+ }
30
47
  //# sourceMappingURL=reorder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"reorder.js","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,QAAQ,CACtB,KAAmB,EACnB,GAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,IACE,IAAI,CAAC,IAAI,CACP,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACxD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACzD;QAED,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAA;IACxE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;QACpC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,CAAe,EAAE,CAAe;IAC1D,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CACpB,IAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1B,SAAS,GAAG,CAAC;QACb,OAAO,GAAG,CAAC;QACX,SAAS,IAAI,IAAI,CAAC,MAAM;QACxB,OAAO,IAAI,IAAI,CAAC,MAAM;QACtB,SAAS,KAAK,OAAO;QAErB,OAAO,SAAS,CAAA;IAClB,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAE;QACrB,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI;QACpE,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"reorder.js","sourceRoot":"","sources":["../../src/core/reorder.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,QAAQ,CACtB,KAAmB,EACnB,GAAmB;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,IACE,IAAI,CAAC,IAAI,CACP,CAAC,KAAK,EAAE,EAAE,CACR,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC;QACxD,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACzD;QAED,MAAM,IAAI,SAAS,CAAC,iDAAiD,CAAC,CAAA;IACxE,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,MAAM;QACpC,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,QAAQ,CAAI,CAAe,EAAE,CAAe;IAC1D,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAA;AAC3E,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,MAAM,CACpB,IAAkB,EAClB,SAAiB,EACjB,OAAe;IAEf,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5B,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;QAC1B,SAAS,GAAG,CAAC;QACb,OAAO,GAAG,CAAC;QACX,SAAS,IAAI,IAAI,CAAC,MAAM;QACxB,OAAO,IAAI,IAAI,CAAC,MAAM;QACtB,SAAS,KAAK,OAAO;QAErB,OAAO,SAAS,CAAA;IAClB,OAAO;QACL,GAAG,EAAE,IAAI,CAAC,SAAS,CAAE;QACrB,SAAS,EAAE,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,IAAI;QACpE,SAAS;QACT,OAAO;KACR,CAAA;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,UAAU,kBAAkB,CAChC,IAAgD,EAChD,IAAY,EACZ,MAAc;IAEd,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;QACvB,IAAI,GAAG,CAAC;QACR,IAAI,IAAI,IAAI,CAAC,MAAM;QACnB,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAExB,OAAO,SAAS,CAAA;IAClB,IAAI,WAAW,GAAG,CAAC,CAAA;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAE,CAAA;QACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,CAAC;YAC3E,OAAO,SAAS,CAAA;QAClB,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,GAAG,CAAC;YAAE,WAAW,EAAE,CAAA;IACpE,CAAC;IACD,OAAO,WAAW,CAAA;AACpB,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import type { Track } from './track.js';
2
- export declare const rigChannels: readonly ['x', 'y', 'scaleX', 'scaleY', 'rotate'];
2
+ export declare const rigChannels: readonly ["x", "y", "scaleX", "scaleY", "rotate"];
3
3
  export type RigChannel = (typeof rigChannels)[number];
4
4
  export type RigTransform = Partial<Record<RigChannel, number>>;
5
5
  export interface RigPart {
@@ -32,27 +32,27 @@ export interface RigPoseLayer {
32
32
  }
33
33
  export declare function resolveRigDefinition(definition: RigDefinition): {
34
34
  parts: Map<string, {
35
- parent?: string;
36
35
  pivot: {
37
36
  x: number;
38
37
  y: number;
39
38
  } | undefined;
40
39
  rest: {
40
+ x?: number | undefined;
41
+ y?: number | undefined;
41
42
  rotate?: number | undefined;
42
43
  scaleX?: number | undefined;
43
44
  scaleY?: number | undefined;
44
- x?: number | undefined;
45
- y?: number | undefined;
46
45
  };
47
46
  rotation: [number, number] | undefined;
47
+ parent?: string;
48
48
  }>;
49
49
  poses: Map<string, {
50
50
  [k: string]: {
51
+ x?: number | undefined;
52
+ y?: number | undefined;
51
53
  rotate?: number | undefined;
52
54
  scaleX?: number | undefined;
53
55
  scaleY?: number | undefined;
54
- x?: number | undefined;
55
- y?: number | undefined;
56
56
  };
57
57
  }>;
58
58
  sockets: Map<string, {
@@ -60,9 +60,9 @@ export declare function resolveRigDefinition(definition: RigDefinition): {
60
60
  /** Local logical units (native DIPs / CSS pixels), or fractions when relative. */
61
61
  x: number;
62
62
  y: number;
63
- units?: 'dip' | 'relative';
63
+ units?: "dip" | "relative";
64
64
  }>;
65
- used: Map<string, Set<"rotate" | "scaleX" | "scaleY" | "x" | "y">>;
65
+ used: Map<string, Set<"x" | "y" | "rotate" | "scaleX" | "scaleY">>;
66
66
  select: (layers: readonly {
67
67
  pose: string;
68
68
  weight: number;
@@ -1 +1 @@
1
- {"version":3,"file":"rig.d.ts","sourceRoot":"","sources":["../../src/core/rig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,eAAO,MAAM,WAAW,YAAI,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAA;AAC5E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAC9D,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AACD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAA;CAC3B;AACD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACpC;AAED,eAAO,MAAM,gBAAgB,UAAW,MAAM,WACD,CAAA;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;CACf;AACD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,aAAa;;iBA1BnD,MAAM;;eAEF,MAAM;eAAK,MAAM;;;;;;;;;;;;;;;;;;;;;cAMxB,MAAM;QACZ,kFAAkF;WAC/E,MAAM;WACN,MAAM;gBACD,KAAK,GAAG,UAAU;;;qBAgFhB,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,KAClD,YAAY,EAAE;EAQlB;AACD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,YAAY,EAAE,UAiBlC;AACD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,KAAK,EACf,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,KAAK,CAcP"}
1
+ {"version":3,"file":"rig.d.ts","sourceRoot":"","sources":["../../src/core/rig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACvC,eAAO,MAAM,WAAW,mDAAoD,CAAA;AAC5E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAC9D,MAAM,WAAW,OAAO;IACtB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,+CAA+C;IAC/C,KAAK,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAChC,IAAI,CAAC,EAAE,YAAY,CAAA;IACnB,oFAAoF;IACpF,QAAQ,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACrC;AACD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,KAAK,CAAC,EAAE,KAAK,GAAG,UAAU,CAAA;CAC3B;AACD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CACpC;AAED,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,WACD,CAAA;AAC7C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAClC,MAAM,EAAE,MAAM,CAAA;CACf;AACD,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,aAAa;;;eAxB/C,MAAM;eAAK,MAAM;;;;;;;;;;iBAFrB,MAAM;;;;;;;;;;;;cAQT,MAAM;QACZ,kFAAkF;WAC/E,MAAM;WACN,MAAM;gBACD,KAAK,GAAG,UAAU;;;qBAgFhB,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,KAClD,YAAY,EAAE;EAQlB;AACD,wBAAgB,cAAc,CAC5B,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,UAAU,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,SAAS,YAAY,EAAE,UAiBlC;AACD,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,KAAK,EACf,MAAM,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GACjC,KAAK,CAcP"}
@@ -1 +1 @@
1
- {"version":3,"file":"scroll-header.js","sourceRoot":"","sources":["../../src/core/scroll-header.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scroll-header.js","sourceRoot":"","sources":["../../src/core/scroll-header.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,OAAe,EACf,OAAe,EACf,SAAiB,EACjB,QAAgB,EAChB,OAAO,GAAG,CAAC,EACX,YAAuC,CAAC,CAAC,EAAE,GAAG,CAAC,EAC/C,cAAyC,CAAC,IAAI,EAAE,IAAI,CAAC;IAErD,IACE,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClF,OAAO,GAAG,CAAC;QACX,OAAO,IAAI,CAAC;QACZ,QAAQ,IAAI,OAAO;QACnB,OAAO,GAAG,CAAC;QACX,SAAS,IAAI,CAAC;QACd,QAAQ,GAAG,CAAC;QACZ,QAAQ,GAAG,QAAQ,GAAG,OAAO;QAE7B,MAAM,IAAI,UAAU,CAClB,0GAA0G,CAC3G,CAAA;IACH,KAAK,MAAM,QAAQ,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QAChD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;YACxB,QAAQ,CAAC,MAAM,KAAK,CAAC;YACrB,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;YAChC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;YACf,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;YACf,QAAQ,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;YAE1B,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAA;IACvE,CAAC;IACD,OAAO;QACL,OAAO;QACP,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,sEAAsE;QACtE,4EAA4E;QAC5E,YAAY,EACV,SAAS,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAC/D,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3C,SAAS,EAAE,CAAC,GAAG,SAAS,CAAC;QACzB,WAAW,EAAE,CAAC,GAAG,WAAW,CAAC;QAC7B,QAAQ;QACR,OAAO;QACP,OAAO;QACP,SAAS;QACT,QAAQ;QACR,KAAK,EAAE,QAAQ,GAAG,OAAO;QACzB,MAAM,EAAE,QAAQ,GAAG,OAAO;KAC3B,CAAA;AACH,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,aAAa,CAC3B,MAAc,EACd,MAA4B,EAC5B,KAA2B;IAE3B,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IACzB,+EAA+E;IAC/E,+EAA+E;IAC/E,MAAM,KAAK,GACT,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IACpF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,MAA4B,EAC5B,KAA2B,EAC3B,aAAqB,EACrB,SAAiB;IAEjB,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,CAAC,CAAA;IACzB,OAAO,IAAI,CAAC,GAAG,CACb,CAAC,EACD,MAAM;QACJ,KAAK,CAAC,MAAM;QACZ,MAAM,CAAC,MAAM;QACb,CAAC,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAClE,CAAA;AACH,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /** Canonical sensor names shared by native drivers and browser adapters. */
2
- export declare const sensorKinds: readonly ['rotation', 'gravity', 'acceleration', 'linearAcceleration', 'gyroscope', 'magneticField'];
2
+ export declare const sensorKinds: readonly ["rotation", "gravity", "acceleration", "linearAcceleration", "gyroscope", "magneticField"];
3
3
  export type SensorKind = (typeof sensorKinds)[number];
4
4
  export type VectorSensorKind = Exclude<SensorKind, 'rotation'>;
5
5
  export type SensorUnit = 'rad' | 'm/s²' | 'rad/s' | 'µT';
@@ -1 +1 @@
1
- {"version":3,"file":"sensor-kinds.d.ts","sourceRoot":"","sources":["../../src/core/sensor-kinds.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,WAAW,YACtB,UAAU,EACV,SAAS,EACT,cAAc,EACd,oBAAoB,EACpB,WAAW,EACX,eAAe,CACP,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC9D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AACxD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAOhE,CAAA"}
1
+ {"version":3,"file":"sensor-kinds.d.ts","sourceRoot":"","sources":["../../src/core/sensor-kinds.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,eAAO,MAAM,WAAW,sGAOd,CAAA;AACV,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AACrD,MAAM,MAAM,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;AAC9D,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;AACxD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAOhE,CAAA"}
@@ -0,0 +1,10 @@
1
+ import { type SensorKind } from './sensor-kinds.js';
2
+ /** Canonical, explicitly synthetic input; timestamps are relative milliseconds. */
3
+ export interface SensorSample {
4
+ time: number;
5
+ /** Quaternion xyzw for rotation; canonical device-coordinate xyz for vectors. */
6
+ values: readonly number[];
7
+ orientation?: 0 | 90 | 180 | 270;
8
+ }
9
+ export declare function validateSensorSamples(kind: SensorKind, samples: readonly SensorSample[]): SensorSample[];
10
+ //# sourceMappingURL=sensor-replay.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensor-replay.d.ts","sourceRoot":"","sources":["../../src/core/sensor-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEhE,mFAAmF;AACnF,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,iFAAiF;IACjF,MAAM,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,CAAA;CACjC;AAED,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,YAAY,EAAE,CAkChB"}
@@ -0,0 +1,32 @@
1
+ import { sensorKinds } from './sensor-kinds.js';
2
+ export function validateSensorSamples(kind, samples) {
3
+ if (!sensorKinds.includes(kind))
4
+ throw new TypeError('Unknown sensor kind.');
5
+ if (!Array.isArray(samples) || samples.length < 2 || samples.length > 10000)
6
+ throw new RangeError('Use 2–10000 sensor samples.');
7
+ let previous = -1;
8
+ return samples.map((sample) => {
9
+ if (!sample ||
10
+ !Number.isFinite(sample.time) ||
11
+ sample.time <= previous ||
12
+ sample.time > 60000 ||
13
+ sample.time < 0)
14
+ throw new RangeError('Sensor times must increase within 0–60000 milliseconds.');
15
+ previous = sample.time;
16
+ if (!Array.isArray(sample.values) ||
17
+ sample.values.length !== (kind === 'rotation' ? 4 : 3) ||
18
+ sample.values.some((v) => !Number.isFinite(v)))
19
+ throw new TypeError('Invalid canonical sensor sample.');
20
+ if (kind === 'rotation' && Math.hypot(...sample.values) < 1e-8)
21
+ throw new RangeError('A quaternion cannot be zero.');
22
+ if (sample.orientation !== undefined &&
23
+ ![0, 90, 180, 270].includes(sample.orientation))
24
+ throw new RangeError('Invalid interface orientation.');
25
+ return {
26
+ time: sample.time,
27
+ values: [...sample.values],
28
+ ...(sample.orientation === undefined ? {} : { orientation: sample.orientation }),
29
+ };
30
+ });
31
+ }
32
+ //# sourceMappingURL=sensor-replay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sensor-replay.js","sourceRoot":"","sources":["../../src/core/sensor-replay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAmB,MAAM,mBAAmB,CAAA;AAUhE,MAAM,UAAU,qBAAqB,CACnC,IAAgB,EAChB,OAAgC;IAEhC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC,CAAA;IAC5E,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK;QACzE,MAAM,IAAI,UAAU,CAAC,6BAA6B,CAAC,CAAA;IACrD,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAA;IACjB,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;QAC5B,IACE,CAAC,MAAM;YACP,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7B,MAAM,CAAC,IAAI,IAAI,QAAQ;YACvB,MAAM,CAAC,IAAI,GAAG,KAAK;YACnB,MAAM,CAAC,IAAI,GAAG,CAAC;YAEf,MAAM,IAAI,UAAU,CAAC,yDAAyD,CAAC,CAAA;QACjF,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;QACtB,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;YAC7B,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAEtD,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAA;QACzD,IAAI,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI;YAC5D,MAAM,IAAI,UAAU,CAAC,8BAA8B,CAAC,CAAA;QACtD,IACE,MAAM,CAAC,WAAW,KAAK,SAAS;YAChC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC;YAE/C,MAAM,IAAI,UAAU,CAAC,gCAAgC,CAAC,CAAA;QACxD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC;YAC1B,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;SACjF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -53,6 +53,8 @@ export type { Gradient, GradientOptions, GradientType, GradientValues, GradientB
53
53
  export { configure, onReducedMotion, reducedMotion } from './config.js';
54
54
  export type { JoltConfig } from './config.js';
55
55
  export { definePreset, presets } from './presets.js';
56
+ export { createPreset } from './core/preset-recipe.js';
57
+ export type { PortablePresetName, PresetParameters, PresetRecipe, } from './core/preset-recipe.js';
56
58
  export type { Preset, PresetName, Presets } from './presets.js';
57
59
  export { origamiSpring, springs } from './transition.js';
58
60
  export type { OrigamiSpring, Gravity, RepeatDelayRange, Spring, SpringName, Timing, Transition, Tween, } from './transition.js';