@rafaelaugusto/jolt 0.1.0-rc.12 → 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.
- package/README.md +2 -2
- package/dist/core/circle-math.d.ts.map +1 -1
- package/dist/core/easing.d.ts +8 -0
- package/dist/core/easing.d.ts.map +1 -1
- package/dist/core/easing.js +12 -4
- package/dist/core/easing.js.map +1 -1
- package/dist/core/gesture-math.d.ts.map +1 -1
- package/dist/core/gradient-text.d.ts +24 -0
- package/dist/core/gradient-text.d.ts.map +1 -0
- package/dist/core/gradient-text.js +30 -0
- package/dist/core/gradient-text.js.map +1 -0
- package/dist/core/inspection-plot.d.ts +11 -0
- package/dist/core/inspection-plot.d.ts.map +1 -0
- package/dist/core/inspection-plot.js +57 -0
- package/dist/core/inspection-plot.js.map +1 -0
- package/dist/core/motion-behaviors.d.ts +68 -0
- package/dist/core/motion-behaviors.d.ts.map +1 -0
- package/dist/core/motion-behaviors.js +276 -0
- package/dist/core/motion-behaviors.js.map +1 -0
- package/dist/core/numeric-map.js.map +1 -1
- package/dist/core/particle-motion.d.ts +8 -0
- package/dist/core/particle-motion.d.ts.map +1 -0
- package/dist/core/particle-motion.js +11 -0
- package/dist/core/particle-motion.js.map +1 -0
- package/dist/core/pointer.d.ts +1 -1
- package/dist/core/preset-recipe.d.ts +20 -0
- package/dist/core/preset-recipe.d.ts.map +1 -0
- package/dist/core/preset-recipe.js +79 -0
- package/dist/core/preset-recipe.js.map +1 -0
- package/dist/core/reorder.d.ts +5 -0
- package/dist/core/reorder.d.ts.map +1 -1
- package/dist/core/reorder.js +17 -0
- package/dist/core/reorder.js.map +1 -1
- package/dist/core/rig.d.ts +73 -0
- package/dist/core/rig.d.ts.map +1 -0
- package/dist/core/rig.js +99 -0
- package/dist/core/rig.js.map +1 -0
- package/dist/core/scroll-header.js.map +1 -1
- package/dist/core/sensor-kinds.d.ts +1 -1
- package/dist/core/sensor-kinds.d.ts.map +1 -1
- package/dist/core/sensor-replay.d.ts +10 -0
- package/dist/core/sensor-replay.d.ts.map +1 -0
- package/dist/core/sensor-replay.js +32 -0
- package/dist/core/sensor-replay.js.map +1 -0
- package/dist/gradient-text/index.d.ts +2 -10
- package/dist/gradient-text/index.d.ts.map +1 -1
- package/dist/gradient-text/index.js +2 -25
- package/dist/gradient-text/index.js.map +1 -1
- package/dist/gradient-text/native.d.ts +2 -8
- package/dist/gradient-text/native.d.ts.map +1 -1
- package/dist/gradient-text/native.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/inspector/plot.d.ts +1 -3
- package/dist/inspector/plot.d.ts.map +1 -1
- package/dist/inspector/plot.js +1 -22
- package/dist/inspector/plot.js.map +1 -1
- package/dist/motion-behaviors.d.ts +5 -54
- package/dist/motion-behaviors.d.ts.map +1 -1
- package/dist/motion-behaviors.js +18 -267
- package/dist/motion-behaviors.js.map +1 -1
- package/dist/rig/index.d.ts +2 -27
- package/dist/rig/index.d.ts.map +1 -1
- package/dist/rig/index.js +5 -89
- package/dist/rig/index.js.map +1 -1
- package/dist/testing/sensors.d.ts +2 -9
- package/dist/testing/sensors.d.ts.map +1 -1
- package/dist/testing/sensors.js +3 -21
- package/dist/testing/sensors.js.map +1 -1
- package/dist/web/angular/index.d.ts +62 -0
- package/dist/web/angular/index.d.ts.map +1 -0
- package/dist/web/angular/index.js +190 -0
- package/dist/web/angular/index.js.map +1 -0
- package/dist/web/behaviors.d.ts +5 -0
- package/dist/web/behaviors.d.ts.map +1 -0
- package/dist/web/behaviors.js +2 -0
- package/dist/web/behaviors.js.map +1 -0
- package/dist/web/bottom-sheet.js.map +1 -1
- package/dist/web/compose.js.map +1 -1
- package/dist/web/curve.js.map +1 -1
- package/dist/web/decay.js.map +1 -1
- package/dist/web/diagnostics.d.ts +1 -1
- package/dist/web/diagnostics.d.ts.map +1 -1
- package/dist/web/diagnostics.js.map +1 -1
- package/dist/web/drag.d.ts +11 -11
- package/dist/web/drag.d.ts.map +1 -1
- package/dist/web/effect.d.ts +2 -1
- package/dist/web/effect.d.ts.map +1 -1
- package/dist/web/effect.js +11 -4
- package/dist/web/effect.js.map +1 -1
- package/dist/web/frameworks/binding.d.ts +39 -0
- package/dist/web/frameworks/binding.d.ts.map +1 -0
- package/dist/web/frameworks/binding.js +356 -0
- package/dist/web/frameworks/binding.js.map +1 -0
- package/dist/web/gestures.js.map +1 -1
- package/dist/web/gradient-css.d.ts +2 -0
- package/dist/web/gradient-css.d.ts.map +1 -0
- package/dist/web/gradient-css.js +5 -0
- package/dist/web/gradient-css.js.map +1 -0
- package/dist/web/gradient-text.d.ts +24 -0
- package/dist/web/gradient-text.d.ts.map +1 -0
- package/dist/web/gradient-text.js +179 -0
- package/dist/web/gradient-text.js.map +1 -0
- package/dist/web/gradient.d.ts.map +1 -1
- package/dist/web/gradient.js +2 -1
- package/dist/web/gradient.js.map +1 -1
- package/dist/web/image-surface.d.ts.map +1 -1
- package/dist/web/image-surface.js.map +1 -1
- package/dist/web/inspector.d.ts +24 -0
- package/dist/web/inspector.d.ts.map +1 -1
- package/dist/web/inspector.js +76 -5
- package/dist/web/inspector.js.map +1 -1
- package/dist/web/interaction.d.ts +4 -0
- package/dist/web/interaction.d.ts.map +1 -1
- package/dist/web/interaction.js.map +1 -1
- package/dist/web/keyboard.js.map +1 -1
- package/dist/web/layout.d.ts +75 -75
- package/dist/web/layout.d.ts.map +1 -1
- package/dist/web/layout.js.map +1 -1
- package/dist/web/particles.d.ts.map +1 -1
- package/dist/web/particles.js +5 -6
- package/dist/web/particles.js.map +1 -1
- package/dist/web/plan.d.ts +2 -0
- package/dist/web/plan.d.ts.map +1 -1
- package/dist/web/plan.js.map +1 -1
- package/dist/web/press.js.map +1 -1
- package/dist/web/progress.d.ts.map +1 -1
- package/dist/web/properties.d.ts +4 -4
- package/dist/web/properties.d.ts.map +1 -1
- package/dist/web/property.d.ts.map +1 -1
- package/dist/web/property.js.map +1 -1
- package/dist/web/public.d.ts +19 -3
- package/dist/web/public.d.ts.map +1 -1
- package/dist/web/public.js +9 -0
- package/dist/web/public.js.map +1 -1
- package/dist/web/react/index.d.ts +12 -0
- package/dist/web/react/index.d.ts.map +1 -0
- package/dist/web/react/index.js +119 -0
- package/dist/web/react/index.js.map +1 -0
- package/dist/web/reorder.d.ts.map +1 -1
- package/dist/web/reorder.js +23 -2
- package/dist/web/reorder.js.map +1 -1
- package/dist/web/rig.d.ts +43 -0
- package/dist/web/rig.d.ts.map +1 -0
- package/dist/web/rig.js +307 -0
- package/dist/web/rig.js.map +1 -0
- package/dist/web/runtime.d.ts +37 -25
- package/dist/web/runtime.d.ts.map +1 -1
- package/dist/web/runtime.js +111 -8
- package/dist/web/runtime.js.map +1 -1
- package/dist/web/scheduler.d.ts.map +1 -1
- package/dist/web/scheduler.js.map +1 -1
- package/dist/web/scope.d.ts +7 -1
- package/dist/web/scope.d.ts.map +1 -1
- package/dist/web/scope.js +16 -2
- package/dist/web/scope.js.map +1 -1
- package/dist/web/scroll-header.js.map +1 -1
- package/dist/web/scroll-range.d.ts.map +1 -1
- package/dist/web/scroll-range.js.map +1 -1
- package/dist/web/scroll.d.ts +1 -1
- package/dist/web/scroll.d.ts.map +1 -1
- package/dist/web/scroll.js.map +1 -1
- package/dist/web/sensor-replay-bridge.d.ts +16 -0
- package/dist/web/sensor-replay-bridge.d.ts.map +1 -0
- package/dist/web/sensor-replay-bridge.js +12 -0
- package/dist/web/sensor-replay-bridge.js.map +1 -0
- package/dist/web/sensor-replay.d.ts +22 -0
- package/dist/web/sensor-replay.d.ts.map +1 -0
- package/dist/web/sensor-replay.js +124 -0
- package/dist/web/sensor-replay.js.map +1 -0
- package/dist/web/sensors.d.ts +14 -5
- package/dist/web/sensors.d.ts.map +1 -1
- package/dist/web/sensors.js +159 -41
- package/dist/web/sensors.js.map +1 -1
- package/dist/web/shape.d.ts +2 -0
- package/dist/web/shape.d.ts.map +1 -1
- package/dist/web/shape.js +44 -12
- package/dist/web/shape.js.map +1 -1
- package/dist/web/shared-layout.js.map +1 -1
- package/dist/web/size.d.ts.map +1 -1
- package/dist/web/size.js.map +1 -1
- package/dist/web/solid/index.d.ts +16 -0
- package/dist/web/solid/index.d.ts.map +1 -0
- package/dist/web/solid/index.js +89 -0
- package/dist/web/solid/index.js.map +1 -0
- package/dist/web/spring-value.d.ts.map +1 -1
- package/dist/web/spring-value.js.map +1 -1
- package/dist/web/stroke.d.ts.map +1 -1
- package/dist/web/stroke.js.map +1 -1
- package/dist/web/style.d.ts.map +1 -1
- package/dist/web/style.js.map +1 -1
- package/dist/web/surface-effect.d.ts.map +1 -1
- package/dist/web/surface-effect.js.map +1 -1
- package/dist/web/svelte/index.d.ts +50 -0
- package/dist/web/svelte/index.d.ts.map +1 -0
- package/dist/web/svelte/index.js +68 -0
- package/dist/web/svelte/index.js.map +1 -0
- package/dist/web/testing.d.ts +1 -0
- package/dist/web/testing.d.ts.map +1 -1
- package/dist/web/testing.js +1 -0
- package/dist/web/testing.js.map +1 -1
- package/dist/web/timers.d.ts.map +1 -1
- package/dist/web/timers.js.map +1 -1
- package/dist/web/types.d.ts.map +1 -1
- package/dist/web/value-playback.d.ts +17 -17
- package/dist/web/value-playback.js.map +1 -1
- package/dist/web/value.d.ts.map +1 -1
- package/dist/web/value.js.map +1 -1
- package/dist/web/viewport.js.map +1 -1
- package/dist/web/vue/index.d.ts +12 -3
- package/dist/web/vue/index.d.ts.map +1 -1
- package/dist/web/vue/index.js +115 -35
- package/dist/web/vue/index.js.map +1 -1
- package/package.json +35 -6
- package/src/core/easing.ts +12 -4
- package/src/core/gradient-text.ts +56 -0
- package/src/core/inspection-plot.ts +74 -0
- package/src/core/motion-behaviors.ts +337 -0
- package/src/core/particle-motion.ts +20 -0
- package/src/core/preset-recipe.ts +111 -0
- package/src/core/reorder.ts +23 -0
- package/src/core/rig.ts +149 -0
- package/src/core/sensor-replay.ts +48 -0
- package/src/gradient-text/index.ts +7 -43
- package/src/gradient-text/native.ts +2 -7
- package/src/index.ts +6 -0
- package/src/inspector/plot.ts +1 -27
- package/src/motion-behaviors.ts +34 -316
- package/src/rig/index.ts +25 -124
- package/src/testing/sensors.ts +4 -36
- package/src/web/angular/index.ts +171 -0
- package/src/web/behaviors.ts +12 -0
- package/src/web/effect.ts +10 -5
- package/src/web/frameworks/binding.ts +408 -0
- package/src/web/gradient-css.ts +8 -0
- package/src/web/gradient-text.ts +234 -0
- package/src/web/gradient.ts +2 -1
- package/src/web/inspector.ts +80 -5
- package/src/web/interaction.ts +4 -0
- package/src/web/particles.ts +15 -9
- package/src/web/plan.ts +2 -0
- package/src/web/public.ts +51 -4
- package/src/web/react/index.ts +208 -0
- package/src/web/reorder.ts +21 -3
- package/src/web/rig.ts +377 -0
- package/src/web/runtime.ts +128 -11
- package/src/web/scope.ts +32 -4
- package/src/web/sensor-replay-bridge.ts +23 -0
- package/src/web/sensor-replay.ts +140 -0
- package/src/web/sensors.ts +179 -57
- package/src/web/shape.ts +42 -9
- package/src/web/solid/index.ts +102 -0
- package/src/web/svelte/index.ts +88 -0
- package/src/web/testing.ts +6 -0
- package/src/web/vue/index.ts +122 -31
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.
|
|
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.
|
|
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":"AAAA,wFAAwF;AACxF,eAAO,MAAM,SAAS,QAAU,CAAA;AAChC,eAAO,MAAM,YAAY,OAAO,CAAA;AAChC,qBAAa,gBAAgB;IAC3B,OAAO,UAAQ;IACf,CAAC,SAAI;IACL,CAAC,SAAI;IACL,MAAM,SAAI;IACV,SAAS,SAAM;IACf,OAAO,SAAK;CACb;AACD,qBAAa,UAAU;IACrB,KAAK,SAAI;IACT,KAAK,SAAI;IACT,aAAa,SAAI;IACjB,MAAM,UAAQ;IACd,cAAc,UAAQ;IACtB,CAAC,EAAE,MAAM,EAAE,CAAK;IAChB,CAAC,EAAE,MAAM,EAAE,CAAK;IAChB,SAAS,SAAM;IACf,OAAO,SAAK;IACZ,UAAU,SAAO;CAClB;AACD,qBAAa,UAAU;IACrB,CAAC,SAAI;IACL,CAAC,SAAI;IACL,EAAE,SAAI;IACN,EAAE,SAAI;IACN,CAAC,SAAK;IACN,CAAC,SAAI;IACL,EAAE,SAAI;IACN,EAAE,SAAI;IACN,EAAE,SAAI;IACN,EAAE,SAAI;IACN,QAAQ,SAAI;IACZ,QAAQ,SAAI;IACZ,SAAS,SAAI;IACb,SAAS,SAAI;IACb,QAAQ,UAAQ;IAChB,IAAI,UAAQ;IACZ,SAAS,UAAQ;IACjB,MAAM,UAAQ;IACd,QAAQ,SAAI;IACZ,QAAQ,SAAI;IACZ,UAAU,mBAAyB;IACnC,IAAI,mBAAyB;IAC7B,IAAI,aAAmB;CACxB;AACD,qBAAa,YAAY;IACvB,OAAO,UAAQ;IACf,CAAC,SAAI;IACL,CAAC,SAAI;IACL,MAAM,SAAI;IACV,SAAS,SAAM;IACf,OAAO,SAAK;CACb;AACD,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"circle-math.d.ts","sourceRoot":"","sources":["../../src/core/circle-math.ts"],"names":[],"mappings":"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"}
|
package/dist/core/easing.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/core/easing.js
CHANGED
|
@@ -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(
|
|
59
|
-
easeIn: cubicBezier(
|
|
60
|
-
easeOut: cubicBezier(
|
|
61
|
-
easeInOut: cubicBezier(
|
|
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),
|
package/dist/core/easing.js.map
CHANGED
|
@@ -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,
|
|
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,24 @@
|
|
|
1
|
+
/** Plain text paint shared by native glyph masks and browser text clipping. */
|
|
2
|
+
export interface GradientTextDefinition<Color = string> {
|
|
3
|
+
colors: readonly Color[];
|
|
4
|
+
stops?: readonly number[];
|
|
5
|
+
/** Degrees clockwise from left-to-right. */
|
|
6
|
+
angle?: number;
|
|
7
|
+
sheen?: {
|
|
8
|
+
color?: Color;
|
|
9
|
+
width?: number;
|
|
10
|
+
direction?: 'left' | 'right';
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export interface TextPaint {
|
|
14
|
+
colors: number[];
|
|
15
|
+
stops: number[];
|
|
16
|
+
angle: number;
|
|
17
|
+
sheen: number;
|
|
18
|
+
width: number;
|
|
19
|
+
}
|
|
20
|
+
export declare function resolveGradientText<Color>(options: GradientTextDefinition<Color>, parse: (color: Color) => number): {
|
|
21
|
+
paint: TextPaint;
|
|
22
|
+
direction: "left" | "right";
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=gradient-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradient-text.d.ts","sourceRoot":"","sources":["../../src/core/gradient-text.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,MAAM,WAAW,sBAAsB,CAAC,KAAK,GAAG,MAAM;IACpD,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;IACxB,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,KAAK,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAA;CACxE;AACD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;CACd;AACD,wBAAgB,mBAAmB,CAAC,KAAK,EACvC,OAAO,EAAE,sBAAsB,CAAC,KAAK,CAAC,EACtC,KAAK,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,MAAM;;;EAsChC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export function resolveGradientText(options, parse) {
|
|
2
|
+
if (!Array.isArray(options.colors) ||
|
|
3
|
+
options.colors.length < 2 ||
|
|
4
|
+
options.colors.length > 8)
|
|
5
|
+
throw new TypeError('Gradient text needs 2..8 colors.');
|
|
6
|
+
const colors = Array.from(options.colors, parse);
|
|
7
|
+
const stops = options.stops
|
|
8
|
+
? Array.from(options.stops)
|
|
9
|
+
: colors.map((_, i) => i / (colors.length - 1));
|
|
10
|
+
if (stops.length !== colors.length ||
|
|
11
|
+
stops.some((stop, i) => !Number.isFinite(stop) || stop < 0 || stop > 1 || (i > 0 && stop < stops[i - 1])))
|
|
12
|
+
throw new TypeError('Gradient stops must be ordered in 0..1 and match colors.');
|
|
13
|
+
const paint = {
|
|
14
|
+
colors,
|
|
15
|
+
stops,
|
|
16
|
+
angle: options.angle ?? 0,
|
|
17
|
+
sheen: options.sheen?.color === undefined ? 0xbfffffff : parse(options.sheen.color),
|
|
18
|
+
width: options.sheen?.width ?? 0.3,
|
|
19
|
+
};
|
|
20
|
+
const direction = options.sheen?.direction ?? 'right';
|
|
21
|
+
if (direction !== 'left' && direction !== 'right')
|
|
22
|
+
throw new TypeError('Invalid text sheen direction.');
|
|
23
|
+
if (!Number.isFinite(paint.angle) ||
|
|
24
|
+
!Number.isFinite(paint.width) ||
|
|
25
|
+
paint.width <= 0 ||
|
|
26
|
+
paint.width > 1)
|
|
27
|
+
throw new TypeError('Invalid text gradient angle or sheen width.');
|
|
28
|
+
return { paint, direction };
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=gradient-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gradient-text.js","sourceRoot":"","sources":["../../src/core/gradient-text.ts"],"names":[],"mappings":"AAeA,MAAM,UAAU,mBAAmB,CACjC,OAAsC,EACtC,KAA+B;IAE/B,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAEzB,MAAM,IAAI,SAAS,CAAC,kCAAkC,CAAC,CAAA;IACzD,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAChD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QACzB,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;IACjD,IACE,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM;QAC9B,KAAK,CAAC,IAAI,CACR,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACV,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CACpF;QAED,MAAM,IAAI,SAAS,CAAC,0DAA0D,CAAC,CAAA;IACjF,MAAM,KAAK,GAAc;QACvB,MAAM;QACN,KAAK;QACL,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;QACzB,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACnF,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,IAAI,GAAG;KACnC,CAAA;IACD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,EAAE,SAAS,IAAI,OAAO,CAAA;IACrD,IAAI,SAAS,KAAK,MAAM,IAAI,SAAS,KAAK,OAAO;QAC/C,MAAM,IAAI,SAAS,CAAC,+BAA+B,CAAC,CAAA;IACtD,IACE,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;QAC7B,KAAK,CAAC,KAAK,IAAI,CAAC;QAChB,KAAK,CAAC,KAAK,GAAG,CAAC;QAEf,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAA;IACpE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;AAC7B,CAAC"}
|
|
@@ -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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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/** Platform execution is supplied by the native or browser scope adapter. */
|
|
2
|
+
export interface BehaviorScope {
|
|
3
|
+
suspend(): void;
|
|
4
|
+
resume(): void;
|
|
5
|
+
dispose(): void;
|
|
6
|
+
}
|
|
7
|
+
export interface BehaviorHost<S extends BehaviorScope> {
|
|
8
|
+
scope(): S;
|
|
9
|
+
hidden(): boolean;
|
|
10
|
+
visibility(callback: () => void): () => void;
|
|
11
|
+
disposed?(): void;
|
|
12
|
+
}
|
|
13
|
+
export type BehaviorStatus = 'completed' | 'interrupted' | 'cancelled' | 'failed' | 'blocked';
|
|
14
|
+
export interface BehaviorResult {
|
|
15
|
+
readonly status: BehaviorStatus;
|
|
16
|
+
readonly error?: unknown;
|
|
17
|
+
}
|
|
18
|
+
export interface BehaviorRun {
|
|
19
|
+
readonly id: number;
|
|
20
|
+
readonly name: string;
|
|
21
|
+
readonly finished: Promise<BehaviorResult>;
|
|
22
|
+
cancel(): void;
|
|
23
|
+
}
|
|
24
|
+
export interface BehaviorContext<S extends BehaviorScope> {
|
|
25
|
+
/** Private to this run; cancellation disposes it before the next run starts. */
|
|
26
|
+
readonly scope: S;
|
|
27
|
+
readonly id: number;
|
|
28
|
+
readonly active: boolean;
|
|
29
|
+
/** Check after an external await, before starting work or changing application state. */
|
|
30
|
+
checkpoint(): void;
|
|
31
|
+
/** Await work and check identity before continuing. False animation results cancel the run. */
|
|
32
|
+
wait<T>(work: PromiseLike<T>): Promise<T>;
|
|
33
|
+
/** Guard a callback that may arrive after interruption (e.g. a service response). */
|
|
34
|
+
guard<A extends unknown[]>(callback: (...args: A) => void): (...args: A) => void;
|
|
35
|
+
}
|
|
36
|
+
export interface MotionBehavior<S extends BehaviorScope> {
|
|
37
|
+
priority?: number;
|
|
38
|
+
/** Evaluated on each request. Domain state stays in the application. */
|
|
39
|
+
when?: () => boolean;
|
|
40
|
+
/** Explicit exclusions, including higher-priority requests. Defaults to none. */
|
|
41
|
+
blocks?: readonly string[];
|
|
42
|
+
/** Equal-priority requests, including the same name, reject by default. */
|
|
43
|
+
equal?: 'reject' | 'replace';
|
|
44
|
+
run(context: BehaviorContext<S>): void | PromiseLike<unknown>;
|
|
45
|
+
}
|
|
46
|
+
export interface MotionBehaviorsOptions<N extends string> {
|
|
47
|
+
/** Restart this declared rest behavior after success, cancellation or failure. No implicit resume. */
|
|
48
|
+
rest?: N;
|
|
49
|
+
/** Receive failure after cleanup. Throwing here does not strand another run. */
|
|
50
|
+
onError?: (error: unknown, name: N) => void;
|
|
51
|
+
}
|
|
52
|
+
export interface MotionBehaviors<N extends string = string> {
|
|
53
|
+
readonly current: N | undefined;
|
|
54
|
+
readonly disposed: boolean;
|
|
55
|
+
readonly paused: boolean;
|
|
56
|
+
can(name: N): boolean;
|
|
57
|
+
request(name: N): BehaviorRun;
|
|
58
|
+
/** Cancel the active run and restore the declared rest behavior. */
|
|
59
|
+
cancel(): void;
|
|
60
|
+
pause(): void;
|
|
61
|
+
play(): void;
|
|
62
|
+
/** Cancel without restoration; later requests may start again. */
|
|
63
|
+
stop(): void;
|
|
64
|
+
dispose(): void;
|
|
65
|
+
}
|
|
66
|
+
/** One exclusive interaction lane; other coordinators and unrelated input remain independent. */
|
|
67
|
+
export declare function createMotionBehaviors<S extends BehaviorScope, const D extends Record<string, MotionBehavior<S>>>(definitions: D, options: MotionBehaviorsOptions<Extract<keyof D, string>>, host: BehaviorHost<S>): MotionBehaviors<Extract<keyof D, string>>;
|
|
68
|
+
//# sourceMappingURL=motion-behaviors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-behaviors.d.ts","sourceRoot":"","sources":["../../src/core/motion-behaviors.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,MAAM,WAAW,aAAa;IAC5B,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,IAAI,CAAA;IACd,OAAO,IAAI,IAAI,CAAA;CAChB;AACD,MAAM,WAAW,YAAY,CAAC,CAAC,SAAS,aAAa;IACnD,KAAK,IAAI,CAAC,CAAA;IACV,MAAM,IAAI,OAAO,CAAA;IACjB,UAAU,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;IAC5C,QAAQ,CAAC,IAAI,IAAI,CAAA;CAClB;AAED,MAAM,MAAM,cAAc,GACxB,WAAW,GAAG,aAAa,GAAG,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAA;AAClE,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;IAC/B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACzB;AACD,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,CAAA;IAC1C,MAAM,IAAI,IAAI,CAAA;CACf;AACD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,aAAa;IACtD,gFAAgF;IAChF,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;IACjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,yFAAyF;IACzF,UAAU,IAAI,IAAI,CAAA;IAClB,+FAA+F;IAC/F,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IACzC,qFAAqF;IACrF,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;CACjF;AACD,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,aAAa;IACrD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,OAAO,CAAA;IACpB,iFAAiF;IACjF,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC5B,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;CAC9D;AACD,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,MAAM;IACtD,sGAAsG;IACtG,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,gFAAgF;IAChF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAA;CAC5C;AACD,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IACxD,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;IAC/B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO,CAAA;IACrB,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,WAAW,CAAA;IAC7B,oEAAoE;IACpE,MAAM,IAAI,IAAI,CAAA;IACd,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,kEAAkE;IAClE,IAAI,IAAI,IAAI,CAAA;IACZ,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,iGAAiG;AACjG,wBAAgB,qBAAqB,CACnC,CAAC,SAAS,aAAa,EACvB,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAEjD,WAAW,EAAE,CAAC,EACd,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,EACzD,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,GACpB,eAAe,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAoQ3C"}
|
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
/** One exclusive interaction lane; other coordinators and unrelated input remain independent. */
|
|
2
|
+
export function createMotionBehaviors(definitions, options, host) {
|
|
3
|
+
// Copy policy so changing the caller's object cannot silently change an active run.
|
|
4
|
+
const policies = new Map();
|
|
5
|
+
for (const [name, definition] of Object.entries(definitions)) {
|
|
6
|
+
if (!definition ||
|
|
7
|
+
typeof definition.run !== 'function' ||
|
|
8
|
+
!Number.isFinite(definition.priority ?? 0) ||
|
|
9
|
+
(definition.when !== undefined && typeof definition.when !== 'function') ||
|
|
10
|
+
(definition.equal !== undefined &&
|
|
11
|
+
!['reject', 'replace'].includes(definition.equal)) ||
|
|
12
|
+
(definition.blocks !== undefined &&
|
|
13
|
+
(!Array.isArray(definition.blocks) ||
|
|
14
|
+
definition.blocks.some((n) => !Object.hasOwn(definitions, n)))))
|
|
15
|
+
throw new TypeError(`Invalid motion behavior "${name}".`);
|
|
16
|
+
policies.set(name, { ...definition, blocks: [...(definition.blocks ?? [])] });
|
|
17
|
+
}
|
|
18
|
+
if (options.rest !== undefined && !policies.has(options.rest))
|
|
19
|
+
throw new TypeError('The rest behavior must be declared.');
|
|
20
|
+
const cancelled = Symbol('cancelled behavior');
|
|
21
|
+
let serial = 0, disposed = false, paused = false, changing = false, restPending = false;
|
|
22
|
+
let background = host.hidden();
|
|
23
|
+
let unlisten = () => { };
|
|
24
|
+
const isPaused = () => paused || background;
|
|
25
|
+
let active;
|
|
26
|
+
const policy = (name) => {
|
|
27
|
+
const definition = policies.get(name);
|
|
28
|
+
if (!definition)
|
|
29
|
+
throw new TypeError(`Unknown motion behavior "${name}".`);
|
|
30
|
+
return definition;
|
|
31
|
+
};
|
|
32
|
+
const report = (error, name) => {
|
|
33
|
+
try {
|
|
34
|
+
options.onError?.(error, name);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
/* Reporters cannot replace ownership. */
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
const finish = (run, status, error) => {
|
|
41
|
+
if (run.done)
|
|
42
|
+
return;
|
|
43
|
+
run.done = true;
|
|
44
|
+
run.wake?.();
|
|
45
|
+
if (active === run)
|
|
46
|
+
active = undefined;
|
|
47
|
+
try {
|
|
48
|
+
run.scope.dispose();
|
|
49
|
+
}
|
|
50
|
+
catch (cleanup) {
|
|
51
|
+
error =
|
|
52
|
+
error === undefined
|
|
53
|
+
? cleanup
|
|
54
|
+
: new AggregateError([error, cleanup], 'Behavior cleanup failed.');
|
|
55
|
+
status = 'failed';
|
|
56
|
+
}
|
|
57
|
+
run.resolve({ status, ...(error === undefined ? {} : { error }) });
|
|
58
|
+
if (error !== undefined)
|
|
59
|
+
report(error, run.name);
|
|
60
|
+
};
|
|
61
|
+
const restore = (previous) => {
|
|
62
|
+
if (!disposed && !active && options.rest !== undefined && previous !== options.rest) {
|
|
63
|
+
restPending = isPaused();
|
|
64
|
+
if (!isPaused()) {
|
|
65
|
+
try {
|
|
66
|
+
controller.request(options.rest);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
report(error, options.rest);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
const allowed = (name) => {
|
|
75
|
+
const candidate = policy(name);
|
|
76
|
+
if (disposed || isPaused() || changing)
|
|
77
|
+
return false;
|
|
78
|
+
let permitted;
|
|
79
|
+
changing = true;
|
|
80
|
+
try {
|
|
81
|
+
permitted = candidate.when?.() !== false;
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
changing = false;
|
|
85
|
+
}
|
|
86
|
+
if (!permitted || disposed || isPaused())
|
|
87
|
+
return false;
|
|
88
|
+
if (!active)
|
|
89
|
+
return true;
|
|
90
|
+
const current = policy(active.name);
|
|
91
|
+
if (current.blocks?.includes(name))
|
|
92
|
+
return false;
|
|
93
|
+
const delta = (candidate.priority ?? 0) - (current.priority ?? 0);
|
|
94
|
+
return delta > 0 || (delta === 0 && candidate.equal === 'replace');
|
|
95
|
+
};
|
|
96
|
+
const cancel = (restoreRest) => {
|
|
97
|
+
if (changing)
|
|
98
|
+
return;
|
|
99
|
+
restPending = false;
|
|
100
|
+
const previous = active?.name;
|
|
101
|
+
changing = true;
|
|
102
|
+
try {
|
|
103
|
+
if (active)
|
|
104
|
+
finish(active, 'cancelled');
|
|
105
|
+
}
|
|
106
|
+
finally {
|
|
107
|
+
changing = false;
|
|
108
|
+
}
|
|
109
|
+
if (restoreRest)
|
|
110
|
+
restore(previous);
|
|
111
|
+
};
|
|
112
|
+
const controller = {
|
|
113
|
+
get current() {
|
|
114
|
+
return active?.name;
|
|
115
|
+
},
|
|
116
|
+
get disposed() {
|
|
117
|
+
return disposed;
|
|
118
|
+
},
|
|
119
|
+
get paused() {
|
|
120
|
+
return isPaused();
|
|
121
|
+
},
|
|
122
|
+
can: allowed,
|
|
123
|
+
request(name) {
|
|
124
|
+
const id = ++serial;
|
|
125
|
+
if (!allowed(name))
|
|
126
|
+
return { id, name, finished: Promise.resolve({ status: 'blocked' }), cancel() { } };
|
|
127
|
+
// Guard/exclusion callbacks may have changed ownership; evaluate them before mutation.
|
|
128
|
+
const definition = policy(name);
|
|
129
|
+
changing = true;
|
|
130
|
+
try {
|
|
131
|
+
if (active)
|
|
132
|
+
finish(active, 'interrupted');
|
|
133
|
+
}
|
|
134
|
+
finally {
|
|
135
|
+
changing = false;
|
|
136
|
+
}
|
|
137
|
+
if (disposed || isPaused())
|
|
138
|
+
return {
|
|
139
|
+
id,
|
|
140
|
+
name,
|
|
141
|
+
finished: Promise.resolve({ status: 'cancelled' }),
|
|
142
|
+
cancel() { },
|
|
143
|
+
};
|
|
144
|
+
restPending = false;
|
|
145
|
+
let resolve;
|
|
146
|
+
const finished = new Promise((r) => {
|
|
147
|
+
resolve = r;
|
|
148
|
+
});
|
|
149
|
+
const run = { id, name, scope: host.scope(), done: false, resolve };
|
|
150
|
+
active = run;
|
|
151
|
+
const checkpoint = () => {
|
|
152
|
+
if (disposed || run.done || active !== run)
|
|
153
|
+
throw cancelled;
|
|
154
|
+
};
|
|
155
|
+
const context = {
|
|
156
|
+
id,
|
|
157
|
+
scope: run.scope,
|
|
158
|
+
get active() {
|
|
159
|
+
return !disposed && !run.done && active === run;
|
|
160
|
+
},
|
|
161
|
+
checkpoint,
|
|
162
|
+
async wait(work) {
|
|
163
|
+
checkpoint();
|
|
164
|
+
const result = await work;
|
|
165
|
+
checkpoint();
|
|
166
|
+
while (isPaused()) {
|
|
167
|
+
await new Promise((resolve) => {
|
|
168
|
+
const previous = run.wake;
|
|
169
|
+
run.wake = () => {
|
|
170
|
+
previous?.();
|
|
171
|
+
resolve();
|
|
172
|
+
};
|
|
173
|
+
});
|
|
174
|
+
checkpoint();
|
|
175
|
+
}
|
|
176
|
+
if (result === false)
|
|
177
|
+
throw cancelled;
|
|
178
|
+
return result;
|
|
179
|
+
},
|
|
180
|
+
guard(callback) {
|
|
181
|
+
return (...args) => {
|
|
182
|
+
if (context.active)
|
|
183
|
+
callback(...args);
|
|
184
|
+
};
|
|
185
|
+
},
|
|
186
|
+
};
|
|
187
|
+
const settle = (status, error) => {
|
|
188
|
+
if (run.done)
|
|
189
|
+
return;
|
|
190
|
+
changing = true;
|
|
191
|
+
try {
|
|
192
|
+
finish(run, status, error);
|
|
193
|
+
}
|
|
194
|
+
finally {
|
|
195
|
+
changing = false;
|
|
196
|
+
}
|
|
197
|
+
restore(name);
|
|
198
|
+
};
|
|
199
|
+
try {
|
|
200
|
+
const work = definition.run(context);
|
|
201
|
+
void Promise.resolve(work).then(() => settle('completed'), (error) => error === cancelled ? settle('cancelled') : settle('failed', error));
|
|
202
|
+
}
|
|
203
|
+
catch (error) {
|
|
204
|
+
settle(error === cancelled ? 'cancelled' : 'failed', error === cancelled ? undefined : error);
|
|
205
|
+
}
|
|
206
|
+
return {
|
|
207
|
+
id,
|
|
208
|
+
name,
|
|
209
|
+
finished,
|
|
210
|
+
cancel() {
|
|
211
|
+
if (active === run)
|
|
212
|
+
cancel(true);
|
|
213
|
+
},
|
|
214
|
+
};
|
|
215
|
+
},
|
|
216
|
+
cancel() {
|
|
217
|
+
cancel(true);
|
|
218
|
+
},
|
|
219
|
+
pause() {
|
|
220
|
+
if (paused || disposed)
|
|
221
|
+
return;
|
|
222
|
+
paused = true;
|
|
223
|
+
active?.scope.suspend();
|
|
224
|
+
},
|
|
225
|
+
play() {
|
|
226
|
+
if (!paused || disposed)
|
|
227
|
+
return;
|
|
228
|
+
paused = false;
|
|
229
|
+
if (!background)
|
|
230
|
+
active?.scope.resume();
|
|
231
|
+
wake();
|
|
232
|
+
},
|
|
233
|
+
stop() {
|
|
234
|
+
cancel(false);
|
|
235
|
+
},
|
|
236
|
+
dispose() {
|
|
237
|
+
if (disposed)
|
|
238
|
+
return;
|
|
239
|
+
disposed = true;
|
|
240
|
+
unlisten();
|
|
241
|
+
restPending = false;
|
|
242
|
+
// Guards and cleanup may dispose reentrantly. Invalidate the current run too.
|
|
243
|
+
const wasChanging = changing;
|
|
244
|
+
changing = true;
|
|
245
|
+
try {
|
|
246
|
+
if (active)
|
|
247
|
+
finish(active, 'cancelled');
|
|
248
|
+
}
|
|
249
|
+
finally {
|
|
250
|
+
changing = wasChanging;
|
|
251
|
+
host.disposed?.();
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
};
|
|
255
|
+
const wake = () => {
|
|
256
|
+
if (disposed || isPaused())
|
|
257
|
+
return;
|
|
258
|
+
active?.wake?.();
|
|
259
|
+
if (active)
|
|
260
|
+
active.wake = undefined;
|
|
261
|
+
if (restPending) {
|
|
262
|
+
restPending = false;
|
|
263
|
+
restore();
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
unlisten = host.visibility(() => {
|
|
267
|
+
background = host.hidden();
|
|
268
|
+
if (background)
|
|
269
|
+
active?.scope.suspend();
|
|
270
|
+
else if (!paused)
|
|
271
|
+
active?.scope.resume();
|
|
272
|
+
wake();
|
|
273
|
+
});
|
|
274
|
+
return controller;
|
|
275
|
+
}
|
|
276
|
+
//# sourceMappingURL=motion-behaviors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"motion-behaviors.js","sourceRoot":"","sources":["../../src/core/motion-behaviors.ts"],"names":[],"mappings":"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"}
|