@ssgoi/core 7.2.0 → 7.3.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/animation/animation.d.ts +21 -0
- package/dist/animation/animation.d.ts.map +1 -1
- package/dist/animation/host-animation.d.ts +28 -19
- package/dist/animation/host-animation.d.ts.map +1 -1
- package/dist/animation/multi-animation.d.ts +13 -2
- package/dist/animation/multi-animation.d.ts.map +1 -1
- package/dist/animation/web-animation.d.ts +76 -4
- package/dist/animation/web-animation.d.ts.map +1 -1
- package/dist/animation/web-presentation.d.ts +25 -0
- package/dist/animation/web-presentation.d.ts.map +1 -0
- package/dist/index.cjs +3 -3
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1206 -1184
- package/dist/internal.cjs +1 -1
- package/dist/internal.js +924 -631
- package/dist/{page-motion-MEazegOU.js → page-motion-CoPTk-Gd.js} +1 -1
- package/dist/{page-motion-DF3fFkOw.cjs → page-motion-Dhj3UfzO.cjs} +1 -1
- package/dist/provider-BLf6XeXT.js +291 -0
- package/dist/provider-JDtJ5Jzf.cjs +1 -0
- package/dist/retain-opacity-C5ajTKSI.cjs +1 -0
- package/dist/retain-opacity-ChyA_fg_.js +1142 -0
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/motion-matching.d.ts +31 -0
- package/dist/runtime/motion-matching.d.ts.map +1 -0
- package/dist/runtime/timeline.d.ts +6 -2
- package/dist/runtime/timeline.d.ts.map +1 -1
- package/dist/runtime.cjs +1 -1
- package/dist/runtime.js +29 -25
- package/dist/ssgoi-transition/create-ssgoi-transition-context.d.ts.map +1 -1
- package/dist/transitions/blind/transition.d.ts.map +1 -1
- package/dist/transitions/crossfade.d.ts +1 -6
- package/dist/transitions/crossfade.d.ts.map +1 -1
- package/dist/transitions/film/transition.d.ts.map +1 -1
- package/dist/transitions/hero/in-place.d.ts +5 -2
- package/dist/transitions/hero/in-place.d.ts.map +1 -1
- package/dist/transitions/hero/provider/chrome/fade.d.ts.map +1 -1
- package/dist/transitions/hero/provider/chrome/static.d.ts.map +1 -1
- package/dist/transitions/hero/transition.d.ts.map +1 -1
- package/dist/transitions/hero/types.d.ts +2 -1
- package/dist/transitions/hero/types.d.ts.map +1 -1
- package/dist/transitions/shared-visibility.d.ts +2 -0
- package/dist/transitions/shared-visibility.d.ts.map +1 -0
- package/dist/transitions/sheet/transition.d.ts.map +1 -1
- package/dist/transitions/zoom/crossfade.d.ts.map +1 -1
- package/dist/transitions/zoom/provider/blur.d.ts.map +1 -1
- package/dist/transitions/zoom/transition.d.ts.map +1 -1
- package/dist/transitions/zoom/types.d.ts +2 -1
- package/dist/transitions/zoom/types.d.ts.map +1 -1
- package/dist/types/index.d.ts +4 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/retain-opacity.d.ts +7 -0
- package/dist/utils/retain-opacity.d.ts.map +1 -0
- package/package.json +1 -1
- package/dist/multi-animation-Du9W3ZS_.js +0 -503
- package/dist/multi-animation-hDUcfD7W.cjs +0 -1
- package/dist/provider-Cea0Pfm1.js +0 -232
- package/dist/provider-D9Q2URox.cjs +0 -1
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { Animation as RuntimeAnimation } from '../runtime/animation';
|
|
2
2
|
import { StyleObject } from '../runtime/motion-state';
|
|
3
|
+
import { WebAnimation } from './web-animation';
|
|
3
4
|
import { Integrator } from './integrator/types';
|
|
5
|
+
export interface AnimationDisposal {
|
|
6
|
+
reason: "finished" | "interrupted" | "disposed";
|
|
7
|
+
/** Cleanup may touch a persistent target only while this execution owns it. */
|
|
8
|
+
owns: (element: HTMLElement) => boolean;
|
|
9
|
+
}
|
|
10
|
+
export declare const finishedDisposal: AnimationDisposal;
|
|
4
11
|
/** A start dependency between siblings in the same composite. */
|
|
5
12
|
export interface AnimationStart<TTarget = HTMLElement, TStyle = StyleObject> {
|
|
6
13
|
after: Animation<TTarget, TStyle>;
|
|
@@ -16,6 +23,20 @@ export interface AnimationPatch<TTarget = HTMLElement, TStyle = StyleObject> {
|
|
|
16
23
|
/** Web-compatible default; platform-neutral consumers use @ssgoi/core/runtime. */
|
|
17
24
|
export declare abstract class Animation<TTarget = HTMLElement, TStyle = StyleObject> extends RuntimeAnimation<TTarget, TStyle> {
|
|
18
25
|
private _startCondition;
|
|
26
|
+
/** Resource cleanup is separate from successfully reaching the authored goal. */
|
|
27
|
+
onDispose?: (context: AnimationDisposal) => void;
|
|
28
|
+
/** A composite retains child resources until all participating motion settles. */
|
|
29
|
+
deferDisposal: boolean;
|
|
30
|
+
/** Custom wrappers can expose their web tracks without host type checks. */
|
|
31
|
+
getMotionTracks(): readonly WebAnimation[];
|
|
32
|
+
/** Validate authored scheduling before a host transfers ownership. */
|
|
33
|
+
validate(): void;
|
|
34
|
+
/** Opaque custom drivers retain the explicit legacy finish-on-interrupt fallback. */
|
|
35
|
+
get supportsInterruption(): boolean;
|
|
36
|
+
/** Invalidate execution without disposing its retained resources. */
|
|
37
|
+
stop(): void;
|
|
38
|
+
/** Stop without seeking to an endpoint. Built-in drivers override this. */
|
|
39
|
+
cancel(context: AnimationDisposal): void;
|
|
19
40
|
/** Scheduling metadata read by the parent immediately before playback. */
|
|
20
41
|
get startCondition(): Readonly<AnimationStart<TTarget, TStyle>> | undefined;
|
|
21
42
|
/** Retune this animation before playback; omitted values stay unchanged. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,iEAAiE;AACjE,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,WAAW,EAAE,MAAM,GAAG,WAAW;IACzE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,2EAA2E;IAC3E,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,WAAW,EAAE,MAAM,GAAG,WAAW;IACzE,2EAA2E;IAC3E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qEAAqE;IACrE,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,kFAAkF;AAClF,8BAAsB,SAAS,CAC7B,OAAO,GAAG,WAAW,EACrB,MAAM,GAAG,WAAW,CACpB,SAAQ,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;IACzC,OAAO,CAAC,eAAe,CAA8C;IAErE,0EAA0E;IAC1E,IAAI,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAE1E;IAED,4EAA4E;IAC5E,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAyBjD,+EAA+E;IAC/E,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI;CAGvD"}
|
|
1
|
+
{"version":3,"file":"animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/animation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,GAAG,aAAa,GAAG,UAAU,CAAC;IAChD,+EAA+E;IAC/E,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,OAAO,CAAC;CACzC;AAED,eAAO,MAAM,gBAAgB,EAAE,iBAG9B,CAAC;AAEF,iEAAiE;AACjE,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,WAAW,EAAE,MAAM,GAAG,WAAW;IACzE,KAAK,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAClC,2EAA2E;IAC3E,EAAE,EAAE,MAAM,GAAG,SAAS,CAAC;CACxB;AAED,MAAM,WAAW,cAAc,CAAC,OAAO,GAAG,WAAW,EAAE,MAAM,GAAG,WAAW;IACzE,2EAA2E;IAC3E,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,qEAAqE;IACrE,OAAO,CAAC,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CAClD;AAED,kFAAkF;AAClF,8BAAsB,SAAS,CAC7B,OAAO,GAAG,WAAW,EACrB,MAAM,GAAG,WAAW,CACpB,SAAQ,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC;IACzC,OAAO,CAAC,eAAe,CAA8C;IAErE,iFAAiF;IACjF,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACjD,kFAAkF;IAClF,aAAa,UAAS;IAEtB,4EAA4E;IAC5E,eAAe,IAAI,SAAS,YAAY,EAAE;IAI1C,sEAAsE;IACtE,QAAQ,IAAI,IAAI;IAEhB,qFAAqF;IACrF,IAAI,oBAAoB,IAAI,OAAO,CAElC;IAED,qEAAqE;IACrE,IAAI,IAAI,IAAI;IAIZ,2EAA2E;IAC3E,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAKxC,0EAA0E;IAC1E,IAAI,cAAc,IAAI,QAAQ,CAAC,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAE1E;IAED,4EAA4E;IAC5E,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAyBjD,+EAA+E;IAC/E,SAAS,CAAC,aAAa,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI;CAGvD"}
|
|
@@ -1,30 +1,40 @@
|
|
|
1
1
|
import { Pose, Timeline } from '../types/index.ts';
|
|
2
|
-
import { Animation } from './animation';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* The host is also a valid `Animation` itself — its lifecycle methods delegate
|
|
16
|
-
* to the active child while preserving state when no child is attached.
|
|
17
|
-
*/
|
|
2
|
+
import { Animation, AnimationDisposal } from './animation';
|
|
3
|
+
export interface HandoffEvent {
|
|
4
|
+
kind: "element" | "key" | "enter" | "ambiguous" | "release" | "fallback";
|
|
5
|
+
target?: HTMLElement;
|
|
6
|
+
key?: string;
|
|
7
|
+
channels?: readonly string[];
|
|
8
|
+
fallback?: "crossfade" | "finish";
|
|
9
|
+
}
|
|
10
|
+
export interface HostAttachOptions {
|
|
11
|
+
/** Presence is independent of tracks: blind/static hero can leave pages unanimated. */
|
|
12
|
+
targets?: readonly HTMLElement[];
|
|
13
|
+
}
|
|
14
|
+
/** A transition scope owns live presentation, replaceable choreography, and retirement. */
|
|
18
15
|
export declare class HostAnimation extends Animation {
|
|
19
16
|
private child;
|
|
17
|
+
private run;
|
|
18
|
+
private retiring;
|
|
19
|
+
private owners;
|
|
20
|
+
private epoch;
|
|
21
|
+
private prepared;
|
|
20
22
|
private _state;
|
|
21
23
|
private _settled;
|
|
22
24
|
private listeners;
|
|
23
|
-
|
|
25
|
+
onHandoff?: (events: readonly HandoffEvent[]) => void;
|
|
26
|
+
/** Called before effect prepare mutates reused elements or measures anchors. */
|
|
27
|
+
prepareHandoff(): void;
|
|
28
|
+
attach(next: Animation, options?: HostAttachOptions): void;
|
|
29
|
+
private sceneSnapshots;
|
|
30
|
+
private disposal;
|
|
31
|
+
private retire;
|
|
32
|
+
private disposeRetiring;
|
|
24
33
|
play(): void;
|
|
25
34
|
reverse(): void;
|
|
26
35
|
pause(): void;
|
|
27
36
|
complete(): void;
|
|
37
|
+
cancel(context: AnimationDisposal): void;
|
|
28
38
|
get isAnimating(): boolean;
|
|
29
39
|
get isPaused(): boolean;
|
|
30
40
|
get isComplete(): boolean;
|
|
@@ -36,9 +46,8 @@ export declare class HostAnimation extends Animation {
|
|
|
36
46
|
getPose(): Pose[];
|
|
37
47
|
getTimeline(): Timeline[];
|
|
38
48
|
matchInto(poses: Pose[]): void;
|
|
39
|
-
/** Currently attached child, or null when nothing is playing. */
|
|
40
49
|
get activeChild(): Animation | null;
|
|
41
|
-
|
|
50
|
+
get retiringCount(): number;
|
|
42
51
|
subscribe(fn: () => void): () => void;
|
|
43
52
|
private notify;
|
|
44
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/host-animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"host-animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/host-animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAiBhE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,SAAS,GAAG,UAAU,CAAC;IACzE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,QAAQ,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;CACnC;AACD,MAAM,WAAW,iBAAiB;IAChC,uFAAuF;IACvF,OAAO,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;CAClC;AAMD,2FAA2F;AAC3F,qBAAa,aAAc,SAAQ,SAAS;IAC1C,OAAO,CAAC,KAAK,CAA0B;IACvC,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAA8C;IAC9D,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAyB;IAC1C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,KAAK,IAAI,CAAC;IAEtD,gFAAgF;IAChF,cAAc,IAAI,IAAI;IAQtB,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,GAAE,iBAAsB,GAAG,IAAI;IAuL9D,OAAO,CAAC,cAAc;IA+BtB,OAAO,CAAC,QAAQ;IAQhB,OAAO,CAAC,MAAM;IA4Fd,OAAO,CAAC,eAAe;IAUvB,IAAI,IAAI,IAAI;IAQZ,OAAO,IAAI,IAAI;IAMf,KAAK,IAAI,IAAI;IAOb,QAAQ,IAAI,IAAI;IAMhB,MAAM,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI;IAWxC,IAAI,WAAW,IAAI,OAAO,CAKzB;IACD,IAAI,QAAQ,IAAI,OAAO,CAEtB;IACD,IAAI,UAAU,IAAI,OAAO,CAExB;IACD,IAAI,WAAW,IAAI,OAAO,CAEzB;IACD,IAAI,QAAQ,IAAI,MAAM,CAErB;IACD,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAGrD,IAAI,YAAY,IAAI,MAAM,CAEzB;IACD,IAAI,YAAY,CAAC,IAAI,EAAE,MAAM,EAM5B;IACD,OAAO,IAAI,IAAI,EAAE;IAGjB,WAAW,IAAI,QAAQ,EAAE;IAGzB,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAG9B,IAAI,WAAW,IAAI,SAAS,GAAG,IAAI,CAElC;IACD,IAAI,aAAa,IAAI,MAAM,CAE1B;IACD,SAAS,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAMrC,OAAO,CAAC,MAAM;CAGf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { PhysicsOptions, Pose, Timeline } from '../types/index.ts';
|
|
2
|
-
import { Animation, AnimationPatch } from './animation';
|
|
2
|
+
import { Animation, AnimationPatch, AnimationDisposal } from './animation';
|
|
3
3
|
import { Integrator } from './integrator';
|
|
4
4
|
import { WebAnimation } from './web-animation';
|
|
5
5
|
export interface TrackPatch {
|
|
@@ -40,6 +40,11 @@ export declare class MultiAnimation<Name extends string = string> extends Animat
|
|
|
40
40
|
private runId;
|
|
41
41
|
private pendingComplete;
|
|
42
42
|
private running;
|
|
43
|
+
private disposed;
|
|
44
|
+
private settled;
|
|
45
|
+
private startedChildren;
|
|
46
|
+
private lastMethod;
|
|
47
|
+
private pausedRun;
|
|
43
48
|
private pendingStartObservers;
|
|
44
49
|
constructor(children: readonly Animation[] | Record<Name, Animation>, opts?: MultiAnimationOptions);
|
|
45
50
|
/** Child animations in play order. */
|
|
@@ -52,6 +57,8 @@ export declare class MultiAnimation<Name extends string = string> extends Animat
|
|
|
52
57
|
set startAt(value: number[]);
|
|
53
58
|
/** Every `WebAnimation` in this composite, nested composites included. */
|
|
54
59
|
tracks(): WebAnimation[];
|
|
60
|
+
getMotionTracks(): readonly WebAnimation[];
|
|
61
|
+
validate(): void;
|
|
55
62
|
/** Select a registered child, which may itself be a composite. */
|
|
56
63
|
select(name: Name): Animation;
|
|
57
64
|
set(patch: AnimationPatch): this;
|
|
@@ -63,10 +70,14 @@ export declare class MultiAnimation<Name extends string = string> extends Animat
|
|
|
63
70
|
reverse(): void;
|
|
64
71
|
pause(): void;
|
|
65
72
|
complete(): void;
|
|
73
|
+
get supportsInterruption(): boolean;
|
|
74
|
+
stop(): void;
|
|
75
|
+
cancel(context: AnimationDisposal): void;
|
|
76
|
+
private disposeResources;
|
|
66
77
|
get progress(): number;
|
|
67
78
|
getPose(): Pose[];
|
|
68
79
|
getTimeline(): Timeline[];
|
|
69
|
-
matchInto(
|
|
80
|
+
matchInto(poses: Pose[]): void;
|
|
70
81
|
get isAnimating(): boolean;
|
|
71
82
|
get isPaused(): boolean;
|
|
72
83
|
get isComplete(): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multi-animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/multi-animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EACL,SAAS,EACT,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"multi-animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/multi-animation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,27 @@
|
|
|
1
1
|
import { Pose, StyleObject, Timeline } from '../types/index.ts';
|
|
2
2
|
import { Integrator } from './integrator';
|
|
3
|
-
import { Animation } from './animation';
|
|
3
|
+
import { Animation, AnimationDisposal } from './animation';
|
|
4
|
+
import { MotionSnapshot } from '../runtime/motion-matching';
|
|
5
|
+
import { PresentationCodec } from './web-presentation';
|
|
6
|
+
export interface WebMotionOptions {
|
|
7
|
+
/** Semantic identity, scoped by HostAnimation; never inferred from array position. */
|
|
8
|
+
key?: string;
|
|
9
|
+
role?: string;
|
|
10
|
+
space?: unknown;
|
|
11
|
+
lifetime?: "persistent" | "temporary";
|
|
12
|
+
codec?: PresentationCodec;
|
|
13
|
+
/** Time allowed for the old path's residual to disappear, in milliseconds. */
|
|
14
|
+
handoffDuration?: number;
|
|
15
|
+
/** Default for disappearing targets is a short fade. */
|
|
16
|
+
release?: "fade" | "remove" | ((snapshot: MotionSnapshot<HTMLElement>) => WebAnimation);
|
|
17
|
+
/** Opaque/incompatible CSS can crossfade a frozen copy, or explicitly finish. */
|
|
18
|
+
fallback?: "crossfade" | "finish";
|
|
19
|
+
}
|
|
20
|
+
export interface WebMotionSnapshot extends MotionSnapshot<HTMLElement> {
|
|
21
|
+
displayStyle: StyleObject;
|
|
22
|
+
inlineStyle: string;
|
|
23
|
+
frame?: PresentationCodec["frame"];
|
|
24
|
+
}
|
|
4
25
|
export interface WebAnimationOptions {
|
|
5
26
|
element: HTMLElement;
|
|
6
27
|
integrator: Integrator;
|
|
@@ -17,6 +38,8 @@ export interface WebAnimationOptions {
|
|
|
17
38
|
* identity so user overrides can address tracks by role.
|
|
18
39
|
*/
|
|
19
40
|
label?: string;
|
|
41
|
+
motion?: WebMotionOptions;
|
|
42
|
+
onDispose?: (context: AnimationDisposal) => void;
|
|
20
43
|
}
|
|
21
44
|
/**
|
|
22
45
|
* Single-element animation driven by an Integrator simulation, played through
|
|
@@ -38,8 +61,8 @@ export interface WebAnimationOptions {
|
|
|
38
61
|
* using WAAPI's `currentTime`, so browser setup latency is not counted as
|
|
39
62
|
* animation progress.
|
|
40
63
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
64
|
+
* Scalar matchInto is a legacy, same-coordinate operation. Host handoff uses
|
|
65
|
+
* scoped target identities and typed presentation channels instead.
|
|
43
66
|
*/
|
|
44
67
|
export declare class WebAnimation extends Animation {
|
|
45
68
|
private readonly _element;
|
|
@@ -51,6 +74,10 @@ export declare class WebAnimation extends Animation {
|
|
|
51
74
|
private upperBound;
|
|
52
75
|
private currentValue;
|
|
53
76
|
private currentVelocity;
|
|
77
|
+
private solverState;
|
|
78
|
+
private solverTarget;
|
|
79
|
+
private presentationTime;
|
|
80
|
+
private renderedStyles;
|
|
54
81
|
private frames;
|
|
55
82
|
private waapi;
|
|
56
83
|
private runId;
|
|
@@ -63,6 +90,18 @@ export declare class WebAnimation extends Animation {
|
|
|
63
90
|
private paused;
|
|
64
91
|
private settled;
|
|
65
92
|
private reversing;
|
|
93
|
+
private disposed;
|
|
94
|
+
private readonly legacyCompletionCleanup;
|
|
95
|
+
readonly motion: WebMotionOptions;
|
|
96
|
+
private codec;
|
|
97
|
+
private adopted;
|
|
98
|
+
private presentationFrames;
|
|
99
|
+
private hold;
|
|
100
|
+
private fallbackCopy;
|
|
101
|
+
private fallbackChannels;
|
|
102
|
+
private fallbackMode;
|
|
103
|
+
get handoffFallbackMode(): "crossfade" | "finish" | undefined;
|
|
104
|
+
get handoffFallbacks(): readonly string[];
|
|
66
105
|
constructor(opts: WebAnimationOptions);
|
|
67
106
|
/** The DOM node this track drives. */
|
|
68
107
|
get element(): HTMLElement;
|
|
@@ -78,6 +117,26 @@ export declare class WebAnimation extends Animation {
|
|
|
78
117
|
reverse(): void;
|
|
79
118
|
pause(): void;
|
|
80
119
|
complete(): void;
|
|
120
|
+
validate(): void;
|
|
121
|
+
getMotionTracks(): readonly WebAnimation[];
|
|
122
|
+
get supportsInterruption(): boolean;
|
|
123
|
+
stop(): void;
|
|
124
|
+
cancel(context: AnimationDisposal): void;
|
|
125
|
+
private disposeResources;
|
|
126
|
+
private finish;
|
|
127
|
+
get motionIdentity(): {
|
|
128
|
+
target: HTMLElement;
|
|
129
|
+
key: string | undefined;
|
|
130
|
+
role: string | undefined;
|
|
131
|
+
space: unknown;
|
|
132
|
+
lifetime: "persistent" | "temporary" | undefined;
|
|
133
|
+
};
|
|
134
|
+
/** Final output, including any earlier residual, is the next handoff's source. */
|
|
135
|
+
getMotionSnapshot(): WebMotionSnapshot;
|
|
136
|
+
adopt(snapshot: MotionSnapshot<HTMLElement>): void;
|
|
137
|
+
/** Presentation channels of frame `index`, corrected when a handoff applied. */
|
|
138
|
+
private channelsAt;
|
|
139
|
+
private samplePresentation;
|
|
81
140
|
/**
|
|
82
141
|
* Drop the WAAPI forwards-fill after the run has settled, letting inline
|
|
83
142
|
* styles govern the resting visual. Call only from `onComplete` (the run is
|
|
@@ -98,10 +157,23 @@ export declare class WebAnimation extends Animation {
|
|
|
98
157
|
getTimeline(): Timeline[];
|
|
99
158
|
matchInto(poses: Pose[]): void;
|
|
100
159
|
private runToward;
|
|
160
|
+
/**
|
|
161
|
+
* Bake the residual correction into the keyframes: each authored frame is
|
|
162
|
+
* decoded through the codec, offset by the decaying residual, and encoded
|
|
163
|
+
* back. `presentationFrames` records the corrected output so a later
|
|
164
|
+
* interruption samples what is actually displayed.
|
|
165
|
+
*/
|
|
166
|
+
private bridgeKeyframes;
|
|
101
167
|
private clearWaapi;
|
|
102
168
|
private captureLiveState;
|
|
103
|
-
private startWhenReady;
|
|
104
169
|
private startFramePacedPlayback;
|
|
170
|
+
/**
|
|
171
|
+
* Inline start styles are cleared in the same rendering update as the first
|
|
172
|
+
* seek, after the paused 0 ms WAAPI frame has had its own frame. Clearing
|
|
173
|
+
* earlier can expose the underlying, unanimated style while the animation is
|
|
174
|
+
* still pending.
|
|
175
|
+
*/
|
|
176
|
+
private clearStartStyles;
|
|
105
177
|
private advanceFramePacedStartup;
|
|
106
178
|
private handOffToWaapi;
|
|
107
179
|
private finishFramePacedRun;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"web-animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/web-animation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAiB,MAAM,QAAQ,CAAC;AACzE,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"web-animation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/web-animation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { StyleObject } from '../runtime/motion-state';
|
|
2
|
+
import { MotionChannel } from '../runtime/motion-matching';
|
|
3
|
+
export interface PresentationCodec {
|
|
4
|
+
readonly frame?: {
|
|
5
|
+
left: number;
|
|
6
|
+
top: number;
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
};
|
|
10
|
+
/** Codecs must use stable schemas and physical units across effects. */
|
|
11
|
+
read(style: StyleObject): Record<string, MotionChannel>;
|
|
12
|
+
write(channels: Readonly<Record<string, MotionChannel>>): StyleObject;
|
|
13
|
+
}
|
|
14
|
+
type Matrix = [number, number, number, number, number, number];
|
|
15
|
+
/** Normalize the 2D transform vocabulary used by page/shared-media effects. */
|
|
16
|
+
export declare function readTransform(value: string, width: number, height: number): Matrix | null;
|
|
17
|
+
/**
|
|
18
|
+
* A planar homography maps a normalized element box into viewport coordinates.
|
|
19
|
+
* Affine translation/rotation/scale/shear and perspective are separate channels:
|
|
20
|
+
* this preserves rotation instead of linearly collapsing a rotation matrix.
|
|
21
|
+
* 3D surfaces are supported as projected planes, not arbitrary 3D scenes.
|
|
22
|
+
*/
|
|
23
|
+
export declare function createWebPresentationCodec(element: HTMLElement): PresentationCodec;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=web-presentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-presentation.d.ts","sourceRoot":"","sources":["../../src/lib/animation/web-presentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,wEAAwE;IACxE,IAAI,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IACxD,KAAK,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,GAAG,WAAW,CAAC;CACvE;AAED,KAAK,MAAM,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;AAyB/D,+EAA+E;AAC/E,wBAAgB,aAAa,CAC3B,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,MAAM,GAAG,IAAI,CAkDf;AAiFD;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,WAAW,GACnB,iBAAiB,CA+InB"}
|