@rafaelaugusto/jolt 0.1.0-rc.6 → 0.1.0-rc.8
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/arrival.d.ts +19 -0
- package/dist/core/arrival.d.ts.map +1 -0
- package/dist/core/arrival.js +19 -0
- package/dist/core/arrival.js.map +1 -0
- package/dist/core/playback.d.ts +5 -0
- package/dist/core/playback.d.ts.map +1 -1
- package/dist/core/playback.js +23 -0
- package/dist/core/playback.js.map +1 -1
- package/dist/core/sequence.d.ts +32 -0
- package/dist/core/sequence.d.ts.map +1 -0
- package/dist/core/sequence.js +367 -0
- package/dist/core/sequence.js.map +1 -0
- package/dist/core/shape-path.d.ts +10 -0
- package/dist/core/shape-path.d.ts.map +1 -0
- package/dist/core/shape-path.js +106 -0
- package/dist/core/shape-path.js.map +1 -0
- package/dist/core/state-transition.d.ts +16 -0
- package/dist/core/state-transition.d.ts.map +1 -0
- package/dist/core/state-transition.js +66 -0
- package/dist/core/state-transition.js.map +1 -0
- package/dist/core/svg-path.d.ts +32 -0
- package/dist/core/svg-path.d.ts.map +1 -0
- package/dist/core/svg-path.js +282 -0
- package/dist/core/svg-path.js.map +1 -0
- package/dist/engine.d.ts +1 -18
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +2 -18
- package/dist/engine.js.map +1 -1
- package/dist/motion-states.d.ts +2 -7
- package/dist/motion-states.d.ts.map +1 -1
- package/dist/motion-states.js +79 -107
- package/dist/motion-states.js.map +1 -1
- package/dist/playback.d.ts +1 -7
- package/dist/playback.d.ts.map +1 -1
- package/dist/playback.js +1 -24
- package/dist/playback.js.map +1 -1
- package/dist/sequence.d.ts.map +1 -1
- package/dist/sequence.js +8 -349
- package/dist/sequence.js.map +1 -1
- package/dist/shapes/path.d.ts +1 -9
- package/dist/shapes/path.d.ts.map +1 -1
- package/dist/shapes/path.js +1 -105
- package/dist/shapes/path.js.map +1 -1
- package/dist/svg-path.d.ts +1 -31
- package/dist/svg-path.d.ts.map +1 -1
- package/dist/svg-path.js +1 -281
- package/dist/svg-path.js.map +1 -1
- package/dist/web/compose.d.ts +4 -1
- package/dist/web/compose.d.ts.map +1 -1
- package/dist/web/compose.js +26 -4
- package/dist/web/compose.js.map +1 -1
- package/dist/web/curve.d.ts +2 -1
- package/dist/web/curve.d.ts.map +1 -1
- package/dist/web/curve.js +6 -2
- package/dist/web/curve.js.map +1 -1
- package/dist/web/decay.d.ts +14 -0
- package/dist/web/decay.d.ts.map +1 -0
- package/dist/web/decay.js +62 -0
- package/dist/web/decay.js.map +1 -0
- package/dist/web/diagnostics.d.ts +59 -0
- package/dist/web/diagnostics.d.ts.map +1 -0
- package/dist/web/diagnostics.js +72 -0
- package/dist/web/diagnostics.js.map +1 -0
- package/dist/web/drag.d.ts +1 -1
- package/dist/web/drag.d.ts.map +1 -1
- package/dist/web/drag.js +6 -11
- package/dist/web/drag.js.map +1 -1
- package/dist/web/geometry.d.ts +6 -0
- package/dist/web/geometry.d.ts.map +1 -0
- package/dist/web/geometry.js +36 -0
- package/dist/web/geometry.js.map +1 -0
- package/dist/web/items.d.ts +28 -0
- package/dist/web/items.d.ts.map +1 -0
- package/dist/web/items.js +110 -0
- package/dist/web/items.js.map +1 -0
- package/dist/web/layout.d.ts +129 -0
- package/dist/web/layout.d.ts.map +1 -0
- package/dist/web/layout.js +157 -0
- package/dist/web/layout.js.map +1 -0
- package/dist/web/motion-states.d.ts +43 -0
- package/dist/web/motion-states.d.ts.map +1 -0
- package/dist/web/motion-states.js +243 -0
- package/dist/web/motion-states.js.map +1 -0
- package/dist/web/plan.d.ts +3 -1
- package/dist/web/plan.d.ts.map +1 -1
- package/dist/web/plan.js +25 -13
- package/dist/web/plan.js.map +1 -1
- package/dist/web/pointer.d.ts +43 -0
- package/dist/web/pointer.d.ts.map +1 -0
- package/dist/web/pointer.js +295 -0
- package/dist/web/pointer.js.map +1 -0
- package/dist/web/press.d.ts.map +1 -1
- package/dist/web/press.js +5 -11
- package/dist/web/press.js.map +1 -1
- package/dist/web/progress.d.ts +17 -0
- package/dist/web/progress.d.ts.map +1 -0
- package/dist/web/progress.js +69 -0
- package/dist/web/progress.js.map +1 -0
- package/dist/web/properties.d.ts +25 -0
- package/dist/web/properties.d.ts.map +1 -0
- package/dist/web/properties.js +62 -0
- package/dist/web/properties.js.map +1 -0
- package/dist/web/public.d.ts +53 -5
- package/dist/web/public.d.ts.map +1 -1
- package/dist/web/public.js +15 -0
- package/dist/web/public.js.map +1 -1
- package/dist/web/runtime.d.ts +115 -9
- package/dist/web/runtime.d.ts.map +1 -1
- package/dist/web/runtime.js +1162 -54
- package/dist/web/runtime.js.map +1 -1
- package/dist/web/scene.d.ts +28 -0
- package/dist/web/scene.d.ts.map +1 -0
- package/dist/web/scene.js +41 -0
- package/dist/web/scene.js.map +1 -0
- package/dist/web/scope.d.ts +31 -0
- package/dist/web/scope.d.ts.map +1 -0
- package/dist/web/scope.js +278 -0
- package/dist/web/scope.js.map +1 -0
- package/dist/web/scroll.d.ts +18 -9
- package/dist/web/scroll.d.ts.map +1 -1
- package/dist/web/scroll.js +44 -9
- package/dist/web/scroll.js.map +1 -1
- package/dist/web/sequence.d.ts +26 -0
- package/dist/web/sequence.d.ts.map +1 -0
- package/dist/web/sequence.js +28 -0
- package/dist/web/sequence.js.map +1 -0
- package/dist/web/shared-layout.d.ts +46 -0
- package/dist/web/shared-layout.d.ts.map +1 -0
- package/dist/web/shared-layout.js +441 -0
- package/dist/web/shared-layout.js.map +1 -0
- package/dist/web/size.d.ts +59 -0
- package/dist/web/size.d.ts.map +1 -0
- package/dist/web/size.js +312 -0
- package/dist/web/size.js.map +1 -0
- package/dist/web/stroke.d.ts +118 -0
- package/dist/web/stroke.d.ts.map +1 -0
- package/dist/web/stroke.js +470 -0
- package/dist/web/stroke.js.map +1 -0
- package/dist/web/style.d.ts +12 -0
- package/dist/web/style.d.ts.map +1 -0
- package/dist/web/style.js +131 -0
- package/dist/web/style.js.map +1 -0
- package/dist/web/timers.d.ts +14 -0
- package/dist/web/timers.d.ts.map +1 -0
- package/dist/web/timers.js +57 -0
- package/dist/web/timers.js.map +1 -0
- package/dist/web/types.d.ts +6 -5
- package/dist/web/types.d.ts.map +1 -1
- package/dist/web/types.js +2 -8
- package/dist/web/types.js.map +1 -1
- package/dist/web/value-playback.d.ts +44 -0
- package/dist/web/value-playback.d.ts.map +1 -0
- package/dist/web/value-playback.js +64 -0
- package/dist/web/value-playback.js.map +1 -0
- package/dist/web/value.d.ts +49 -1
- package/dist/web/value.d.ts.map +1 -1
- package/dist/web/value.js +115 -0
- package/dist/web/value.js.map +1 -1
- package/dist/web/viewport.d.ts +36 -0
- package/dist/web/viewport.d.ts.map +1 -0
- package/dist/web/viewport.js +297 -0
- package/dist/web/viewport.js.map +1 -0
- package/dist/web/vue/attachment.d.ts +7 -0
- package/dist/web/vue/attachment.d.ts.map +1 -0
- package/dist/web/vue/attachment.js +50 -0
- package/dist/web/vue/attachment.js.map +1 -0
- package/dist/web/vue/index.d.ts +10 -2
- package/dist/web/vue/index.d.ts.map +1 -1
- package/dist/web/vue/index.js +245 -29
- package/dist/web/vue/index.js.map +1 -1
- package/dist/web/vue/viewport-directive.d.ts +12 -0
- package/dist/web/vue/viewport-directive.d.ts.map +1 -0
- package/dist/web/vue/viewport-directive.js +85 -0
- package/dist/web/vue/viewport-directive.js.map +1 -0
- package/package.json +15 -2
- package/src/core/arrival.ts +30 -0
- package/src/core/playback.ts +30 -0
- package/src/core/sequence.ts +380 -0
- package/src/core/shape-path.ts +127 -0
- package/src/core/state-transition.ts +97 -0
- package/src/core/svg-path.ts +360 -0
- package/src/engine.ts +8 -29
- package/src/motion-states.ts +86 -132
- package/src/playback.ts +1 -39
- package/src/sequence.ts +10 -332
- package/src/shapes/path.ts +1 -127
- package/src/svg-path.ts +1 -360
- package/src/web/compose.ts +38 -6
- package/src/web/curve.ts +6 -1
- package/src/web/decay.ts +76 -0
- package/src/web/diagnostics.ts +121 -0
- package/src/web/drag.ts +8 -13
- package/src/web/geometry.ts +40 -0
- package/src/web/items.ts +173 -0
- package/src/web/layout.ts +207 -0
- package/src/web/motion-states.ts +304 -0
- package/src/web/plan.ts +44 -17
- package/src/web/pointer.ts +336 -0
- package/src/web/press.ts +8 -11
- package/src/web/progress.ts +71 -0
- package/src/web/properties.ts +76 -0
- package/src/web/public.ts +137 -2
- package/src/web/runtime.ts +1472 -65
- package/src/web/scene.ts +76 -0
- package/src/web/scope.ts +344 -0
- package/src/web/scroll.ts +68 -17
- package/src/web/sequence.ts +60 -0
- package/src/web/shared-layout.ts +551 -0
- package/src/web/size.ts +368 -0
- package/src/web/stroke.ts +547 -0
- package/src/web/style.ts +170 -0
- package/src/web/timers.ts +51 -0
- package/src/web/types.ts +14 -12
- package/src/web/value-playback.ts +91 -0
- package/src/web/value.ts +146 -4
- package/src/web/viewport.ts +341 -0
- package/src/web/vue/attachment.ts +47 -0
- package/src/web/vue/index.ts +245 -31
- package/src/web/vue/viewport-directive.ts +99 -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.
|
|
34
|
+
The [0.1.0-rc.8 release candidate](https://github.com/rafaelaugustos/jolt/releases/tag/v0.1.0-rc.8) adds Web value playback, decay, progress, sequences, timelines, motion states and SVG drawing, plus deferred Vue/Nuxt attachment, keyed item entrances and horizontal LTR/RTL scroll. Native motion states now resume replacement views correctly after a paused detach/unload. The preview has **74 examples in English, Portuguese, Spanish and Simplified Chinese**. Install `@rafaelaugusto/jolt@0.1.0-rc.8` and rebuild native apps; external native properties also need matching `@rafaelaugusto/jolt-native@0.1.0-rc.8`. [Stable-release acceptance](https://jolt.rafaelaugusto.dev/guide/not-there-yet) remains in progress.
|
|
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.8**, 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
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Animation } from './playback.js';
|
|
2
|
+
/** Internal forecast for starting a timeline step before another one arrives. */
|
|
3
|
+
export interface ArrivalTiming {
|
|
4
|
+
read(): {
|
|
5
|
+
remaining: number | undefined;
|
|
6
|
+
paused: boolean;
|
|
7
|
+
arrived: boolean;
|
|
8
|
+
};
|
|
9
|
+
subscribe(callback: () => void): () => void;
|
|
10
|
+
}
|
|
11
|
+
export declare function arrivalTimingOf(animation: Animation): ArrivalTiming | undefined;
|
|
12
|
+
export declare function setArrivalTiming(animation: Animation, timing: ArrivalTiming): void;
|
|
13
|
+
/**
|
|
14
|
+
* Resolves once the animation looks done, which for a spring is well before
|
|
15
|
+
* `finished`. Sequences move on to the next step then.
|
|
16
|
+
*/
|
|
17
|
+
export declare function arrivalOf(animation: Animation): Promise<unknown>;
|
|
18
|
+
export declare function setArrival(animation: Animation, arrival: Promise<unknown>): void;
|
|
19
|
+
//# sourceMappingURL=arrival.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrival.d.ts","sourceRoot":"","sources":["../../src/core/arrival.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAI9C,iFAAiF;AACjF,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI;QAAE,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;IAC5E,SAAS,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CAC5C;AAGD,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,6BAEnD;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,QAE3E;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CAEhE;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,QAEzE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
const arrivals = new WeakMap();
|
|
2
|
+
const arrivalTimings = new WeakMap();
|
|
3
|
+
export function arrivalTimingOf(animation) {
|
|
4
|
+
return arrivalTimings.get(animation);
|
|
5
|
+
}
|
|
6
|
+
export function setArrivalTiming(animation, timing) {
|
|
7
|
+
arrivalTimings.set(animation, timing);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Resolves once the animation looks done, which for a spring is well before
|
|
11
|
+
* `finished`. Sequences move on to the next step then.
|
|
12
|
+
*/
|
|
13
|
+
export function arrivalOf(animation) {
|
|
14
|
+
return arrivals.get(animation) ?? animation.finished;
|
|
15
|
+
}
|
|
16
|
+
export function setArrival(animation, arrival) {
|
|
17
|
+
arrivals.set(animation, arrival);
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=arrival.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arrival.js","sourceRoot":"","sources":["../../src/core/arrival.ts"],"names":[],"mappings":"AAEA,MAAM,QAAQ,GAAG,IAAI,OAAO,EAA+B,CAAA;AAO3D,MAAM,cAAc,GAAG,IAAI,OAAO,EAA4B,CAAA;AAE9D,MAAM,UAAU,eAAe,CAAC,SAAoB;IAClD,OAAO,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,SAAoB,EAAE,MAAqB;IAC1E,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,SAAS,CAAC,SAAoB;IAC5C,OAAO,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,SAAoB,EAAE,OAAyB;IACxE,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AAClC,CAAC"}
|
package/dist/core/playback.d.ts
CHANGED
|
@@ -41,4 +41,9 @@ export interface PlaybackState {
|
|
|
41
41
|
/** Read only on user commands; there is no frame loop in JavaScript. */
|
|
42
42
|
export declare function createClock(now: () => number, initial?: number): PlaybackClock;
|
|
43
43
|
export declare function validateProgress(value: number, duration: number): void;
|
|
44
|
+
export declare function registerPlayback(animation: Animation, read: () => PlaybackState): () => void;
|
|
45
|
+
export declare function playbackSource(animation: Animation): {
|
|
46
|
+
read: () => PlaybackState;
|
|
47
|
+
subscribe(listener: () => void): () => void;
|
|
48
|
+
};
|
|
44
49
|
//# sourceMappingURL=playback.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/core/playback.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAU,SAAQ,WAAW,CAAC,OAAO,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,+FAA+F;IAC/F,IAAI,IAAI,IAAI,CAAA;CACb;AAED,qFAAqF;AACrF,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,0DAA0D;IAC1D,KAAK,IAAI,IAAI,CAAA;IACb,yFAAyF;IACzF,IAAI,IAAI,IAAI,CAAA;IACZ,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvD,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,MAAM,CAAA;IACd,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,IAAI,IAAI,CAAA;CACf;AAED,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,OAAO,SAAI,GAAG,aAAa,CA0BzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAO/D"}
|
|
1
|
+
{"version":3,"file":"playback.d.ts","sourceRoot":"","sources":["../../src/core/playback.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,SAAU,SAAQ,WAAW,CAAC,OAAO,CAAC;IACrD;;;;OAIG;IACH,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;IACnC,+FAA+F;IAC/F,IAAI,IAAI,IAAI,CAAA;CACb;AAED,qFAAqF;AACrF,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,0DAA0D;IAC1D,KAAK,IAAI,IAAI,CAAA;IACb,yFAAyF;IACzF,IAAI,IAAI,IAAI,CAAA;IACZ,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,oFAAoF;IACpF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,yFAAyF;IACzF,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvD,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,MAAM,CAAA;IACd,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,IAAI,IAAI,CAAA;CACf;AAED,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;IACvB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED,wEAAwE;AACxE,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,MAAM,EAAE,OAAO,SAAI,GAAG,aAAa,CA0BzE;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,QAO/D;AAUD,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,aAAa,cAM/E;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,SAAS;IAI/C,IAAI,QAjBI,aAAa;IAkBrB,SAAS,WAAW,MAAM,IAAI;EAOjC"}
|
package/dist/core/playback.js
CHANGED
|
@@ -32,4 +32,27 @@ export function validateProgress(value, duration) {
|
|
|
32
32
|
if (!Number.isFinite(duration))
|
|
33
33
|
throw new RangeError('Progress requires a finite animation; endless loops can pause and play.');
|
|
34
34
|
}
|
|
35
|
+
const sources = new WeakMap();
|
|
36
|
+
export function registerPlayback(animation, read) {
|
|
37
|
+
const source = { read, listeners: new Set() };
|
|
38
|
+
sources.set(animation, source);
|
|
39
|
+
return () => {
|
|
40
|
+
for (const listener of [...source.listeners])
|
|
41
|
+
listener();
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function playbackSource(animation) {
|
|
45
|
+
const source = sources.get(animation);
|
|
46
|
+
if (!source)
|
|
47
|
+
throw new TypeError('This animation does not expose a playback clock.');
|
|
48
|
+
return {
|
|
49
|
+
read: source.read,
|
|
50
|
+
subscribe(listener) {
|
|
51
|
+
source.listeners.add(listener);
|
|
52
|
+
return () => {
|
|
53
|
+
source.listeners.delete(listener);
|
|
54
|
+
};
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
}
|
|
35
58
|
//# sourceMappingURL=playback.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"playback.js","sourceRoot":"","sources":["../../src/core/playback.ts"],"names":[],"mappings":"AA6CA,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,GAAiB,EAAE,OAAO,GAAG,CAAC;IACxD,IAAI,MAAM,GAAG,OAAO,CAAA;IACpB,IAAI,MAAM,GAAG,GAAG,EAAE,CAAA;IAClB,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAA;IACzD,OAAO;QACL,IAAI;QACJ,KAAK;YACH,MAAM,GAAG,IAAI,EAAE,CAAA;YACf,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;QACD,IAAI;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,EAAE,CAAA;gBACd,MAAM,GAAG,KAAK,CAAA;YAChB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,EAAE;YACL,MAAM,GAAG,EAAE,CAAA;YACX,MAAM,GAAG,GAAG,EAAE,CAAA;QAChB,CAAC;QACD,MAAM;YACJ,MAAM,GAAG,IAAI,EAAE,CAAA;YACf,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;QACnD,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAA;IACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5B,MAAM,IAAI,UAAU,CAClB,yEAAyE,CAC1E,CAAA;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"playback.js","sourceRoot":"","sources":["../../src/core/playback.ts"],"names":[],"mappings":"AA6CA,wEAAwE;AACxE,MAAM,UAAU,WAAW,CAAC,GAAiB,EAAE,OAAO,GAAG,CAAC;IACxD,IAAI,MAAM,GAAG,OAAO,CAAA;IACpB,IAAI,MAAM,GAAG,GAAG,EAAE,CAAA;IAClB,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,CAAA;IACzD,OAAO;QACL,IAAI;QACJ,KAAK;YACH,MAAM,GAAG,IAAI,EAAE,CAAA;YACf,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;QACD,IAAI;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,GAAG,EAAE,CAAA;gBACd,MAAM,GAAG,KAAK,CAAA;YAChB,CAAC;QACH,CAAC;QACD,IAAI,CAAC,EAAE;YACL,MAAM,GAAG,EAAE,CAAA;YACX,MAAM,GAAG,GAAG,EAAE,CAAA;QAChB,CAAC;QACD,MAAM;YACJ,MAAM,GAAG,IAAI,EAAE,CAAA;YACf,MAAM,GAAG,IAAI,CAAA;QACf,CAAC;KACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,QAAgB;IAC9D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC;QACnD,MAAM,IAAI,UAAU,CAAC,6CAA6C,CAAC,CAAA;IACrE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC5B,MAAM,IAAI,UAAU,CAClB,yEAAyE,CAC1E,CAAA;AACL,CAAC;AAED,MAAM,OAAO,GAAG,IAAI,OAAO,EAMxB,CAAA;AAEH,MAAM,UAAU,gBAAgB,CAAC,SAAoB,EAAE,IAAyB;IAC9E,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,GAAG,EAAc,EAAE,CAAA;IACzD,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC9B,OAAO,GAAG,EAAE;QACV,KAAK,MAAM,QAAQ,IAAI,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;YAAE,QAAQ,EAAE,CAAA;IAC1D,CAAC,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,SAAoB;IACjD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IACrC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,SAAS,CAAC,kDAAkD,CAAC,CAAA;IACpF,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,CAAC,QAAoB;YAC5B,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC9B,OAAO,GAAG,EAAE;gBACV,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACnC,CAAC,CAAA;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type Animation, type PlaybackClock } from './playback.js';
|
|
2
|
+
export type SequencePosition = number | '<' | `${'+' | '-'}${number}`;
|
|
3
|
+
export interface PlayableAnimation extends Animation {
|
|
4
|
+
pause(): void;
|
|
5
|
+
play(): void;
|
|
6
|
+
readonly paused: boolean;
|
|
7
|
+
readonly duration?: number;
|
|
8
|
+
}
|
|
9
|
+
export interface TimelineAnimation extends PlayableAnimation {
|
|
10
|
+
readonly duration: number | undefined;
|
|
11
|
+
}
|
|
12
|
+
export interface SequenceHost {
|
|
13
|
+
driver: {
|
|
14
|
+
now(): number;
|
|
15
|
+
after(ms: number, callback: () => void): () => void;
|
|
16
|
+
clock?(duration: number): PlaybackClock;
|
|
17
|
+
};
|
|
18
|
+
slowdown: number;
|
|
19
|
+
active?(): boolean;
|
|
20
|
+
cancelled?(): boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface PreparedStep {
|
|
23
|
+
step: () => Animation;
|
|
24
|
+
position: Position;
|
|
25
|
+
}
|
|
26
|
+
/** Platform adapters resolve targets/initial values; scheduling semantics live here. */
|
|
27
|
+
export declare function composePrepared(prepared: readonly PreparedStep[], controlled: boolean, host: SequenceHost): Animation;
|
|
28
|
+
export type Position = number | '<' | {
|
|
29
|
+
offset: number;
|
|
30
|
+
} | undefined;
|
|
31
|
+
export declare function parsePosition(at: SequencePosition | undefined): Position;
|
|
32
|
+
//# sourceMappingURL=sequence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequence.d.ts","sourceRoot":"","sources":["../../src/core/sequence.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,aAAa,EACnB,MAAM,eAAe,CAAA;AAGtB,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,MAAM,EAAE,CAAA;AACrE,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,KAAK,IAAI,IAAI,CAAA;IACb,IAAI,IAAI,IAAI,CAAA;IACZ,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAC3B;AACD,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CACtC;AACD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE;QACN,GAAG,IAAI,MAAM,CAAA;QACb,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;QACnD,KAAK,CAAC,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,CAAA;KACxC,CAAA;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,CAAC,IAAI,OAAO,CAAA;IAClB,SAAS,CAAC,IAAI,OAAO,CAAA;CACtB;AACD,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,SAAS,CAAA;IACrB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,wFAAwF;AACxF,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,SAAS,YAAY,EAAE,EACjC,UAAU,EAAE,OAAO,EACnB,IAAI,EAAE,YAAY,GACjB,SAAS,CAsTX;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,GAAG,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAAA;AACpE,wBAAgB,aAAa,CAAC,EAAE,EAAE,gBAAgB,GAAG,SAAS,GAAG,QAAQ,CAYxE"}
|
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
import { createClock, registerPlayback, playbackSource, } from './playback.js';
|
|
2
|
+
import { arrivalOf, arrivalTimingOf, setArrival } from './arrival.js';
|
|
3
|
+
/** Platform adapters resolve targets/initial values; scheduling semantics live here. */
|
|
4
|
+
export function composePrepared(prepared, controlled, host) {
|
|
5
|
+
const { driver, slowdown } = host;
|
|
6
|
+
// Absolute positions share the platform clock, including Android duration scale.
|
|
7
|
+
const clock = controlled || prepared.some(({ position }) => typeof position === 'number')
|
|
8
|
+
? (driver.clock?.(Infinity) ?? createClock(() => driver.now()))
|
|
9
|
+
: undefined;
|
|
10
|
+
const started = [];
|
|
11
|
+
const cancellations = new Set();
|
|
12
|
+
let stopped = false;
|
|
13
|
+
let paused = false;
|
|
14
|
+
let settled = false;
|
|
15
|
+
let completed = false;
|
|
16
|
+
let changed = () => { };
|
|
17
|
+
const resumeChildren = new Set();
|
|
18
|
+
const waits = new Set();
|
|
19
|
+
const time = () => clock?.time() ?? 0;
|
|
20
|
+
let resolveScheduled;
|
|
21
|
+
let rejectScheduled;
|
|
22
|
+
const scheduled = new Promise((resolve, reject) => {
|
|
23
|
+
resolveScheduled = resolve;
|
|
24
|
+
rejectScheduled = reject;
|
|
25
|
+
});
|
|
26
|
+
let pending = prepared.length;
|
|
27
|
+
const states = prepared.map(({ step, position }) => {
|
|
28
|
+
return {
|
|
29
|
+
step,
|
|
30
|
+
position,
|
|
31
|
+
onStart: new Set(),
|
|
32
|
+
animation: undefined,
|
|
33
|
+
start: undefined,
|
|
34
|
+
};
|
|
35
|
+
});
|
|
36
|
+
const cancelSchedule = () => {
|
|
37
|
+
for (const cancel of cancellations)
|
|
38
|
+
cancel();
|
|
39
|
+
cancellations.clear();
|
|
40
|
+
for (const wait of waits)
|
|
41
|
+
wait.cancel();
|
|
42
|
+
waits.clear();
|
|
43
|
+
if (!controlled || stopped || settled)
|
|
44
|
+
clock?.cancel();
|
|
45
|
+
};
|
|
46
|
+
const fail = (error) => {
|
|
47
|
+
if (stopped)
|
|
48
|
+
return;
|
|
49
|
+
stopped = true;
|
|
50
|
+
settled = true;
|
|
51
|
+
cancelSchedule();
|
|
52
|
+
states.forEach((state) => state.onStart.clear());
|
|
53
|
+
started.forEach((child) => child.stop());
|
|
54
|
+
changed();
|
|
55
|
+
rejectScheduled(error);
|
|
56
|
+
};
|
|
57
|
+
const stop = () => {
|
|
58
|
+
if (stopped)
|
|
59
|
+
return;
|
|
60
|
+
stopped = true;
|
|
61
|
+
settled = true;
|
|
62
|
+
cancelSchedule();
|
|
63
|
+
states.forEach((state) => state.onStart.clear());
|
|
64
|
+
resolveScheduled();
|
|
65
|
+
started.forEach((animation) => animation.stop());
|
|
66
|
+
resumeChildren.clear();
|
|
67
|
+
changed();
|
|
68
|
+
};
|
|
69
|
+
const launch = (index) => {
|
|
70
|
+
const state = states[index];
|
|
71
|
+
if (host.cancelled?.())
|
|
72
|
+
stop();
|
|
73
|
+
if (stopped || state.animation)
|
|
74
|
+
return;
|
|
75
|
+
if (host.active && !host.active()) {
|
|
76
|
+
let off = () => { };
|
|
77
|
+
off = driver.after(0, () => {
|
|
78
|
+
cancellations.delete(off);
|
|
79
|
+
launch(index);
|
|
80
|
+
});
|
|
81
|
+
cancellations.add(off);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
if (paused) {
|
|
85
|
+
wait(0, () => launch(index));
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const step = state.step;
|
|
90
|
+
const child = step();
|
|
91
|
+
if (controlled && !isPlayable(child)) {
|
|
92
|
+
child?.stop?.();
|
|
93
|
+
throw new TypeError('A timeline participant must expose pause(), play() and paused; use sequence() for non-playable effects.');
|
|
94
|
+
}
|
|
95
|
+
if (host.cancelled?.()) {
|
|
96
|
+
child.stop();
|
|
97
|
+
stop();
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
state.animation = child;
|
|
101
|
+
state.start = time();
|
|
102
|
+
if (controlled) {
|
|
103
|
+
try {
|
|
104
|
+
const playback = playbackSource(child).read();
|
|
105
|
+
if (playback.ready)
|
|
106
|
+
state.start = Math.max(0, time() - playback.time);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
/* A custom playable participant can omit a clock. */
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
started.push(child);
|
|
113
|
+
// Observe setup failures immediately, even while other steps are still
|
|
114
|
+
// scheduled. Nested sequences can reject before this one reaches arrival.
|
|
115
|
+
void child.finished.catch(fail);
|
|
116
|
+
pending--;
|
|
117
|
+
for (const callback of [...state.onStart])
|
|
118
|
+
callback();
|
|
119
|
+
state.onStart.clear();
|
|
120
|
+
if (pending === 0) {
|
|
121
|
+
cancelSchedule();
|
|
122
|
+
resolveScheduled();
|
|
123
|
+
}
|
|
124
|
+
changed();
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
fail(error);
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
const wait = (ms, callback) => {
|
|
131
|
+
if (stopped)
|
|
132
|
+
return;
|
|
133
|
+
if (!controlled) {
|
|
134
|
+
if (ms <= 0) {
|
|
135
|
+
callback();
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
let cancel = () => { };
|
|
139
|
+
let fired = false;
|
|
140
|
+
const off = driver.after(ms, () => {
|
|
141
|
+
fired = true;
|
|
142
|
+
cancellations.delete(cancel);
|
|
143
|
+
if (!stopped)
|
|
144
|
+
callback();
|
|
145
|
+
});
|
|
146
|
+
cancel = off;
|
|
147
|
+
if (!fired)
|
|
148
|
+
cancellations.add(cancel);
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
let off = () => { };
|
|
152
|
+
const waiting = {
|
|
153
|
+
at: time() + Math.max(0, ms),
|
|
154
|
+
fire() {
|
|
155
|
+
off();
|
|
156
|
+
waits.delete(waiting);
|
|
157
|
+
if (!stopped)
|
|
158
|
+
callback();
|
|
159
|
+
},
|
|
160
|
+
cancel() {
|
|
161
|
+
off();
|
|
162
|
+
off = () => { };
|
|
163
|
+
},
|
|
164
|
+
schedule() {
|
|
165
|
+
waiting.cancel();
|
|
166
|
+
if (paused || stopped)
|
|
167
|
+
return;
|
|
168
|
+
const remaining = waiting.at - time();
|
|
169
|
+
if (remaining <= 0)
|
|
170
|
+
waiting.fire();
|
|
171
|
+
else
|
|
172
|
+
off = driver.after(remaining, waiting.fire);
|
|
173
|
+
},
|
|
174
|
+
};
|
|
175
|
+
waits.add(waiting);
|
|
176
|
+
waiting.schedule();
|
|
177
|
+
};
|
|
178
|
+
for (let index = 0; index < states.length; index++) {
|
|
179
|
+
const { position } = states[index];
|
|
180
|
+
const begin = () => launch(index);
|
|
181
|
+
if (typeof position === 'number')
|
|
182
|
+
wait(position * slowdown - clock.time(), begin);
|
|
183
|
+
else if (index === 0)
|
|
184
|
+
wait(typeof position === 'object' ? Math.max(0, position.offset) * slowdown : 0, begin);
|
|
185
|
+
else {
|
|
186
|
+
const previous = states[index - 1];
|
|
187
|
+
const follow = () => {
|
|
188
|
+
if (stopped || !previous.animation)
|
|
189
|
+
return;
|
|
190
|
+
if (position === '<') {
|
|
191
|
+
begin();
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
const offset = (position?.offset ?? 0) * slowdown;
|
|
195
|
+
if (offset < 0) {
|
|
196
|
+
const timing = arrivalTimingOf(previous.animation);
|
|
197
|
+
if (!timing) {
|
|
198
|
+
fail(new TypeError('A negative at offset needs an animate() or decay() arrival forecast.'));
|
|
199
|
+
return;
|
|
200
|
+
}
|
|
201
|
+
let off = () => { };
|
|
202
|
+
let cancelTimer = () => { };
|
|
203
|
+
let fired = false;
|
|
204
|
+
let disposed = false;
|
|
205
|
+
let queued = false;
|
|
206
|
+
const dispose = () => {
|
|
207
|
+
disposed = true;
|
|
208
|
+
off();
|
|
209
|
+
cancelTimer();
|
|
210
|
+
cancellations.delete(dispose);
|
|
211
|
+
};
|
|
212
|
+
const update = () => {
|
|
213
|
+
cancelTimer();
|
|
214
|
+
if (stopped || fired || disposed)
|
|
215
|
+
return;
|
|
216
|
+
const state = timing.read();
|
|
217
|
+
if (!state.arrived && (state.paused || state.remaining === undefined))
|
|
218
|
+
return;
|
|
219
|
+
const remaining = state.arrived ? 0 : state.remaining + offset;
|
|
220
|
+
if (!Number.isFinite(remaining))
|
|
221
|
+
return;
|
|
222
|
+
const fire = () => {
|
|
223
|
+
if (stopped || fired || disposed)
|
|
224
|
+
return;
|
|
225
|
+
fired = true;
|
|
226
|
+
dispose();
|
|
227
|
+
begin();
|
|
228
|
+
};
|
|
229
|
+
if (remaining <= 0)
|
|
230
|
+
fire();
|
|
231
|
+
else {
|
|
232
|
+
const cancel = driver.after(remaining, fire);
|
|
233
|
+
if (disposed)
|
|
234
|
+
cancel();
|
|
235
|
+
else
|
|
236
|
+
cancelTimer = cancel;
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
off = timing.subscribe(() => {
|
|
240
|
+
cancelTimer();
|
|
241
|
+
// An interruption can notify from inside another animation's
|
|
242
|
+
// constructor. Start followers after its ownership changes finish.
|
|
243
|
+
if (queued || disposed)
|
|
244
|
+
return;
|
|
245
|
+
queued = true;
|
|
246
|
+
void Promise.resolve().then(() => {
|
|
247
|
+
queued = false;
|
|
248
|
+
update();
|
|
249
|
+
});
|
|
250
|
+
});
|
|
251
|
+
cancellations.add(dispose);
|
|
252
|
+
update();
|
|
253
|
+
}
|
|
254
|
+
else
|
|
255
|
+
void arrivalOf(previous.animation).then(() => wait(offset, begin), fail);
|
|
256
|
+
};
|
|
257
|
+
if (previous.animation)
|
|
258
|
+
follow();
|
|
259
|
+
else
|
|
260
|
+
previous.onStart.add(follow);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
if (pending === 0)
|
|
264
|
+
resolveScheduled();
|
|
265
|
+
const arrived = scheduled.then(() => Promise.all(started.map(arrivalOf)));
|
|
266
|
+
const finished = arrived.then(async () => {
|
|
267
|
+
const results = await Promise.all(started.map((animation) => animation.finished));
|
|
268
|
+
completed = !stopped && results.length === prepared.length && results.every(Boolean);
|
|
269
|
+
settled = true;
|
|
270
|
+
clock?.cancel();
|
|
271
|
+
changed();
|
|
272
|
+
return completed;
|
|
273
|
+
});
|
|
274
|
+
const animation = {
|
|
275
|
+
finished,
|
|
276
|
+
stop,
|
|
277
|
+
then: (onfulfilled, onrejected) => finished.then(onfulfilled, onrejected),
|
|
278
|
+
};
|
|
279
|
+
if (controlled) {
|
|
280
|
+
const duration = () => {
|
|
281
|
+
if (pending)
|
|
282
|
+
return undefined;
|
|
283
|
+
let total = 0;
|
|
284
|
+
for (const state of states) {
|
|
285
|
+
const child = state.animation;
|
|
286
|
+
if (!child || child.duration === undefined)
|
|
287
|
+
return undefined;
|
|
288
|
+
try {
|
|
289
|
+
if (!playbackSource(child).read().ready)
|
|
290
|
+
return undefined;
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
/* custom playable */
|
|
294
|
+
}
|
|
295
|
+
total = Math.max(total, (state.start ?? 0) + child.duration);
|
|
296
|
+
}
|
|
297
|
+
return total;
|
|
298
|
+
};
|
|
299
|
+
Object.defineProperties(animation, {
|
|
300
|
+
paused: { get: () => paused },
|
|
301
|
+
duration: { get: duration },
|
|
302
|
+
});
|
|
303
|
+
Object.assign(animation, {
|
|
304
|
+
pause() {
|
|
305
|
+
if (paused || settled)
|
|
306
|
+
return;
|
|
307
|
+
paused = true;
|
|
308
|
+
clock?.pause();
|
|
309
|
+
for (const wait of waits)
|
|
310
|
+
wait.cancel();
|
|
311
|
+
for (const child of started) {
|
|
312
|
+
if (!child.paused) {
|
|
313
|
+
resumeChildren.add(child);
|
|
314
|
+
child.pause();
|
|
315
|
+
}
|
|
316
|
+
}
|
|
317
|
+
changed();
|
|
318
|
+
},
|
|
319
|
+
play() {
|
|
320
|
+
if (!paused || settled)
|
|
321
|
+
return;
|
|
322
|
+
paused = false;
|
|
323
|
+
clock?.play();
|
|
324
|
+
for (const child of resumeChildren)
|
|
325
|
+
child.play();
|
|
326
|
+
resumeChildren.clear();
|
|
327
|
+
for (const wait of [...waits])
|
|
328
|
+
wait.schedule();
|
|
329
|
+
changed();
|
|
330
|
+
},
|
|
331
|
+
});
|
|
332
|
+
changed = registerPlayback(animation, () => ({
|
|
333
|
+
time: time(),
|
|
334
|
+
duration: duration() ?? Infinity,
|
|
335
|
+
paused,
|
|
336
|
+
ready: duration() !== undefined,
|
|
337
|
+
settled,
|
|
338
|
+
completed,
|
|
339
|
+
}));
|
|
340
|
+
}
|
|
341
|
+
setArrival(animation, arrived);
|
|
342
|
+
return animation;
|
|
343
|
+
}
|
|
344
|
+
export function parsePosition(at) {
|
|
345
|
+
if (at === undefined || at === '<')
|
|
346
|
+
return at;
|
|
347
|
+
if (typeof at === 'number' && Number.isFinite(at) && at >= 0)
|
|
348
|
+
return at;
|
|
349
|
+
if (typeof at === 'string' &&
|
|
350
|
+
/^[+-](?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?$/i.test(at) &&
|
|
351
|
+
Number.isFinite(Number(at)))
|
|
352
|
+
return { offset: Number(at) };
|
|
353
|
+
throw new RangeError('Sequence at must be a nonnegative finite time, "<", or a signed finite offset.');
|
|
354
|
+
}
|
|
355
|
+
function isPlayable(animation) {
|
|
356
|
+
const handle = animation;
|
|
357
|
+
return (!!handle &&
|
|
358
|
+
typeof handle.pause === 'function' &&
|
|
359
|
+
typeof handle.play === 'function' &&
|
|
360
|
+
typeof handle.paused === 'boolean' &&
|
|
361
|
+
typeof handle.stop === 'function' &&
|
|
362
|
+
typeof handle.finished?.then === 'function' &&
|
|
363
|
+
typeof handle.finished?.catch === 'function' &&
|
|
364
|
+
(handle.duration === undefined ||
|
|
365
|
+
(typeof handle.duration === 'number' && handle.duration >= 0)));
|
|
366
|
+
}
|
|
367
|
+
//# sourceMappingURL=sequence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sequence.js","sourceRoot":"","sources":["../../src/core/sequence.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Absolute M/L/C/Q/Z commands, shared by both native renderers. */
|
|
2
|
+
export interface ShapePath {
|
|
3
|
+
commands: string;
|
|
4
|
+
points: number[];
|
|
5
|
+
contours: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function shapePath(d: string, allowEmpty?: boolean): ShapePath;
|
|
8
|
+
export declare function compatible(a: ShapePath, b: ShapePath): void;
|
|
9
|
+
export declare function pathString(path: ShapePath): string;
|
|
10
|
+
//# sourceMappingURL=shape-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shape-path.d.ts","sourceRoot":"","sources":["../../src/core/shape-path.ts"],"names":[],"mappings":"AAEA,oEAAoE;AACpE,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AACD,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,UAAQ,GAAG,SAAS,CAuGlE;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,QAKpD;AACD,wBAAgB,UAAU,CAAC,IAAI,EAAE,SAAS,UAQzC"}
|