tensum 0.1.0
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/CHANGELOG.md +38 -0
- package/LICENSE +21 -0
- package/README.md +340 -0
- package/dist/coupled-system.d.ts +50 -0
- package/dist/coupled-system.d.ts.map +1 -0
- package/dist/coupled-system.js +269 -0
- package/dist/coupled-system.js.map +1 -0
- package/dist/coupled.d.ts +3 -0
- package/dist/coupled.d.ts.map +1 -0
- package/dist/coupled.js +2 -0
- package/dist/coupled.js.map +1 -0
- package/dist/css-linear.d.ts +20 -0
- package/dist/css-linear.d.ts.map +1 -0
- package/dist/css-linear.js +95 -0
- package/dist/css-linear.js.map +1 -0
- package/dist/css.d.ts +3 -0
- package/dist/css.d.ts.map +1 -0
- package/dist/css.js +2 -0
- package/dist/css.js.map +1 -0
- package/dist/gsap/active-tracks.d.ts +32 -0
- package/dist/gsap/active-tracks.d.ts.map +1 -0
- package/dist/gsap/active-tracks.js +177 -0
- package/dist/gsap/active-tracks.js.map +1 -0
- package/dist/gsap/gsap-time.d.ts +10 -0
- package/dist/gsap/gsap-time.d.ts.map +1 -0
- package/dist/gsap/gsap-time.js +62 -0
- package/dist/gsap/gsap-time.js.map +1 -0
- package/dist/gsap/plugin-tween-coordinator.d.ts +30 -0
- package/dist/gsap/plugin-tween-coordinator.d.ts.map +1 -0
- package/dist/gsap/plugin-tween-coordinator.js +72 -0
- package/dist/gsap/plugin-tween-coordinator.js.map +1 -0
- package/dist/gsap/plugin.d.ts +84 -0
- package/dist/gsap/plugin.d.ts.map +1 -0
- package/dist/gsap/plugin.js +552 -0
- package/dist/gsap/plugin.js.map +1 -0
- package/dist/gsap/spring-to.d.ts +93 -0
- package/dist/gsap/spring-to.d.ts.map +1 -0
- package/dist/gsap/spring-to.js +569 -0
- package/dist/gsap/spring-to.js.map +1 -0
- package/dist/gsap/spring-track-policy.d.ts +24 -0
- package/dist/gsap/spring-track-policy.d.ts.map +1 -0
- package/dist/gsap/spring-track-policy.js +76 -0
- package/dist/gsap/spring-track-policy.js.map +1 -0
- package/dist/gsap/track-lifecycle.d.ts +16 -0
- package/dist/gsap/track-lifecycle.d.ts.map +1 -0
- package/dist/gsap/track-lifecycle.js +33 -0
- package/dist/gsap/track-lifecycle.js.map +1 -0
- package/dist/index.d.ts +28 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +16 -0
- package/dist/index.js.map +1 -0
- package/dist/math.d.ts +9 -0
- package/dist/math.d.ts.map +1 -0
- package/dist/math.js +38 -0
- package/dist/math.js.map +1 -0
- package/dist/model.d.ts +14 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +38 -0
- package/dist/model.js.map +1 -0
- package/dist/motion-compatibility.d.ts +18 -0
- package/dist/motion-compatibility.d.ts.map +1 -0
- package/dist/motion-compatibility.js +83 -0
- package/dist/motion-compatibility.js.map +1 -0
- package/dist/parameters.d.ts +52 -0
- package/dist/parameters.d.ts.map +1 -0
- package/dist/parameters.js +124 -0
- package/dist/parameters.js.map +1 -0
- package/dist/settling.d.ts +12 -0
- package/dist/settling.d.ts.map +1 -0
- package/dist/settling.js +107 -0
- package/dist/settling.js.map +1 -0
- package/dist/solver.d.ts +17 -0
- package/dist/solver.d.ts.map +1 -0
- package/dist/solver.js +190 -0
- package/dist/solver.js.map +1 -0
- package/dist/spring.d.ts +9 -0
- package/dist/spring.d.ts.map +1 -0
- package/dist/spring.js +91 -0
- package/dist/spring.js.map +1 -0
- package/dist/support/additive-spring-value.d.ts +39 -0
- package/dist/support/additive-spring-value.d.ts.map +1 -0
- package/dist/support/additive-spring-value.js +281 -0
- package/dist/support/additive-spring-value.js.map +1 -0
- package/dist/support/inertia.d.ts +34 -0
- package/dist/support/inertia.d.ts.map +1 -0
- package/dist/support/inertia.js +293 -0
- package/dist/support/inertia.js.map +1 -0
- package/dist/support/keyframes.d.ts +34 -0
- package/dist/support/keyframes.d.ts.map +1 -0
- package/dist/support/keyframes.js +117 -0
- package/dist/support/keyframes.js.map +1 -0
- package/dist/support/spring-value.d.ts +38 -0
- package/dist/support/spring-value.d.ts.map +1 -0
- package/dist/support/spring-value.js +289 -0
- package/dist/support/spring-value.js.map +1 -0
- package/dist/support/velocity.d.ts +14 -0
- package/dist/support/velocity.d.ts.map +1 -0
- package/dist/support/velocity.js +75 -0
- package/dist/support/velocity.js.map +1 -0
- package/dist/types.d.ts +61 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/vector.d.ts +32 -0
- package/dist/vector.d.ts.map +1 -0
- package/dist/vector.js +121 -0
- package/dist/vector.js.map +1 -0
- package/package.json +68 -0
- package/src/coupled-system.ts +383 -0
- package/src/coupled.ts +10 -0
- package/src/css-linear.ts +148 -0
- package/src/css.ts +6 -0
- package/src/gsap/active-tracks.ts +244 -0
- package/src/gsap/gsap-time.ts +91 -0
- package/src/gsap/plugin-tween-coordinator.ts +112 -0
- package/src/gsap/plugin.ts +861 -0
- package/src/gsap/spring-to.ts +836 -0
- package/src/gsap/spring-track-policy.ts +133 -0
- package/src/gsap/track-lifecycle.ts +53 -0
- package/src/index.ts +130 -0
- package/src/math.ts +46 -0
- package/src/model.ts +70 -0
- package/src/motion-compatibility.ts +131 -0
- package/src/parameters.ts +226 -0
- package/src/settling.ts +141 -0
- package/src/solver.ts +262 -0
- package/src/spring.ts +119 -0
- package/src/support/additive-spring-value.ts +343 -0
- package/src/support/inertia.ts +367 -0
- package/src/support/keyframes.ts +188 -0
- package/src/support/spring-value.ts +399 -0
- package/src/support/velocity.ts +119 -0
- package/src/types.ts +70 -0
- package/src/vector.ts +191 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
const objectTracks = new WeakMap();
|
|
2
|
+
let nextTrackOrder = 0;
|
|
3
|
+
function isObjectKey(target) {
|
|
4
|
+
return ((typeof target === 'object' && target !== null) ||
|
|
5
|
+
typeof target === 'function');
|
|
6
|
+
}
|
|
7
|
+
function tracksFor(target, create) {
|
|
8
|
+
if (!isObjectKey(target)) {
|
|
9
|
+
if (create) {
|
|
10
|
+
throw new TypeError('active spring tracks require an object target');
|
|
11
|
+
}
|
|
12
|
+
return undefined;
|
|
13
|
+
}
|
|
14
|
+
const existing = objectTracks.get(target);
|
|
15
|
+
if (existing || !create)
|
|
16
|
+
return existing;
|
|
17
|
+
const tracks = new Map();
|
|
18
|
+
objectTracks.set(target, tracks);
|
|
19
|
+
return tracks;
|
|
20
|
+
}
|
|
21
|
+
function stackFor(target, property, create) {
|
|
22
|
+
const tracks = tracksFor(target, create);
|
|
23
|
+
if (!tracks)
|
|
24
|
+
return undefined;
|
|
25
|
+
const existing = tracks.get(property);
|
|
26
|
+
if (existing || !create)
|
|
27
|
+
return existing;
|
|
28
|
+
const stack = [];
|
|
29
|
+
tracks.set(property, stack);
|
|
30
|
+
return stack;
|
|
31
|
+
}
|
|
32
|
+
function cleanup(target, property) {
|
|
33
|
+
const tracks = tracksFor(target, false);
|
|
34
|
+
if (!tracks)
|
|
35
|
+
return;
|
|
36
|
+
const stack = tracks.get(property);
|
|
37
|
+
if (stack?.length === 0)
|
|
38
|
+
tracks.delete(property);
|
|
39
|
+
if (tracks.size !== 0)
|
|
40
|
+
return;
|
|
41
|
+
if (isObjectKey(target))
|
|
42
|
+
objectTracks.delete(target);
|
|
43
|
+
}
|
|
44
|
+
export function activeTrackState(target, property, globalTime) {
|
|
45
|
+
const owner = stackFor(target, property, false)?.at(-1);
|
|
46
|
+
if (!owner)
|
|
47
|
+
return undefined;
|
|
48
|
+
return {
|
|
49
|
+
...owner.source.state(globalTime),
|
|
50
|
+
...(owner.terminal ? { terminal: true } : {}),
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Invalidates a terminal handoff baseline after an external write. The whole
|
|
55
|
+
* property history is discarded so reversing an older tween cannot restore a
|
|
56
|
+
* value that no longer represents the target.
|
|
57
|
+
*/
|
|
58
|
+
function discardTerminalTrackHistory(target, property) {
|
|
59
|
+
const stack = stackFor(target, property, false);
|
|
60
|
+
if (!stack?.at(-1)?.terminal)
|
|
61
|
+
return false;
|
|
62
|
+
for (const entry of stack) {
|
|
63
|
+
entry.active = false;
|
|
64
|
+
entry.discarded = true;
|
|
65
|
+
entry.terminal = false;
|
|
66
|
+
}
|
|
67
|
+
stack.length = 0;
|
|
68
|
+
cleanup(target, property);
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
function positionsMatch(first, second) {
|
|
72
|
+
const floatingPointTolerance = Number.EPSILON * Math.max(1, Math.abs(first), Math.abs(second)) * 8;
|
|
73
|
+
return Math.abs(first - second) <= Math.max(1e-9, floatingPointTolerance);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Preserves a live/unchanged handoff, but atomically invalidates terminal
|
|
77
|
+
* history when the target was externally changed after completion.
|
|
78
|
+
*/
|
|
79
|
+
export function reconcileActiveTrackHandoff(target, property, inherited, actualPosition, actualUnit) {
|
|
80
|
+
if (!inherited?.terminal ||
|
|
81
|
+
(positionsMatch(inherited.position, actualPosition) &&
|
|
82
|
+
inherited.unit === actualUnit)) {
|
|
83
|
+
return inherited;
|
|
84
|
+
}
|
|
85
|
+
discardTerminalTrackHistory(target, property);
|
|
86
|
+
return undefined;
|
|
87
|
+
}
|
|
88
|
+
export function registerActiveTrack(target, property, source) {
|
|
89
|
+
const entry = {
|
|
90
|
+
active: false,
|
|
91
|
+
discarded: false,
|
|
92
|
+
order: nextTrackOrder++,
|
|
93
|
+
source,
|
|
94
|
+
terminal: false,
|
|
95
|
+
};
|
|
96
|
+
const activate = () => {
|
|
97
|
+
if (entry.active || entry.discarded)
|
|
98
|
+
return;
|
|
99
|
+
const stack = stackFor(target, property, true);
|
|
100
|
+
const nextIndex = stack.findIndex((candidate) => candidate.order > entry.order);
|
|
101
|
+
if (nextIndex < 0)
|
|
102
|
+
stack.push(entry);
|
|
103
|
+
else
|
|
104
|
+
stack.splice(nextIndex, 0, entry);
|
|
105
|
+
entry.active = true;
|
|
106
|
+
};
|
|
107
|
+
const release = (options = {}) => {
|
|
108
|
+
if (!entry.active)
|
|
109
|
+
return false;
|
|
110
|
+
const stack = stackFor(target, property, false);
|
|
111
|
+
if (!stack) {
|
|
112
|
+
entry.active = false;
|
|
113
|
+
entry.terminal = false;
|
|
114
|
+
return false;
|
|
115
|
+
}
|
|
116
|
+
const index = stack.indexOf(entry);
|
|
117
|
+
if (index < 0) {
|
|
118
|
+
entry.active = false;
|
|
119
|
+
entry.terminal = false;
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
const wasOwner = index === stack.length - 1;
|
|
123
|
+
stack.splice(index, 1);
|
|
124
|
+
entry.active = false;
|
|
125
|
+
entry.terminal = false;
|
|
126
|
+
const previous = wasOwner ? stack.at(-1) : undefined;
|
|
127
|
+
if (previous && options.restore !== false)
|
|
128
|
+
previous.source.restore();
|
|
129
|
+
cleanup(target, property);
|
|
130
|
+
return previous !== undefined && options.restore !== false;
|
|
131
|
+
};
|
|
132
|
+
const retire = () => {
|
|
133
|
+
if (!entry.active || entry.discarded)
|
|
134
|
+
return false;
|
|
135
|
+
const stack = stackFor(target, property, false);
|
|
136
|
+
if (!stack) {
|
|
137
|
+
entry.active = false;
|
|
138
|
+
entry.terminal = false;
|
|
139
|
+
return false;
|
|
140
|
+
}
|
|
141
|
+
const index = stack.indexOf(entry);
|
|
142
|
+
if (index < 0) {
|
|
143
|
+
entry.active = false;
|
|
144
|
+
entry.terminal = false;
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
if (index === stack.length - 1) {
|
|
148
|
+
const covered = stack.splice(0, index);
|
|
149
|
+
for (const candidate of covered) {
|
|
150
|
+
candidate.active = false;
|
|
151
|
+
candidate.terminal = false;
|
|
152
|
+
}
|
|
153
|
+
entry.terminal = true;
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
stack.splice(index, 1);
|
|
157
|
+
entry.active = false;
|
|
158
|
+
entry.terminal = false;
|
|
159
|
+
cleanup(target, property);
|
|
160
|
+
return true;
|
|
161
|
+
};
|
|
162
|
+
activate();
|
|
163
|
+
return Object.freeze({
|
|
164
|
+
isActive() {
|
|
165
|
+
return entry.active;
|
|
166
|
+
},
|
|
167
|
+
isOwner() {
|
|
168
|
+
if (!entry.active)
|
|
169
|
+
return false;
|
|
170
|
+
return stackFor(target, property, false)?.at(-1) === entry;
|
|
171
|
+
},
|
|
172
|
+
activate,
|
|
173
|
+
retire,
|
|
174
|
+
release,
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=active-tracks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-tracks.js","sourceRoot":"","sources":["../../src/gsap/active-tracks.ts"],"names":[],"mappings":"AAqCA,MAAM,YAAY,GAAG,IAAI,OAAO,EAA0B,CAAC;AAC3D,IAAI,cAAc,GAAG,CAAC,CAAC;AAEvB,SAAS,WAAW,CAAC,MAAe;IAClC,OAAO,CACL,CAAC,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,CAAC;QAC/C,OAAO,MAAM,KAAK,UAAU,CAC7B,CAAC;AACJ,CAAC;AAED,SAAS,SAAS,CAChB,MAAe,EACf,MAAe;IAEf,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,IAAI,SAAS,CAAC,+CAA+C,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IACzC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAwB,CAAC;IAC/C,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,QAAQ,CACf,MAAe,EACf,QAAgB,EAChB,MAAe;IAEf,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAC9B,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IACzC,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,OAAO,CAAC,MAAe,EAAE,QAAgB;IAChD,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO;IACpB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,KAAK,EAAE,MAAM,KAAK,CAAC;QAAE,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO;IAC9B,IAAI,WAAW,CAAC,MAAM,CAAC;QAAE,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAe,EACf,QAAgB,EAChB,UAAmB;IAEnB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO;QACL,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;QACjC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,2BAA2B,CAClC,MAAe,EACf,QAAgB;IAEhB,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC3C,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;IACzB,CAAC;IACD,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACjB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,cAAc,CAAC,KAAa,EAAE,MAAc;IACnD,MAAM,sBAAsB,GAC1B,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC;AAC5E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAe,EACf,QAAgB,EAChB,SAA8C,EAC9C,cAAsB,EACtB,UAA8B;IAE9B,IACE,CAAC,SAAS,EAAE,QAAQ;QACpB,CAAC,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,cAAc,CAAC;YACjD,SAAS,CAAC,IAAI,KAAK,UAAU,CAAC,EAChC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,2BAA2B,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,MAAe,EACf,QAAgB,EAChB,MAAyB;IAEzB,MAAM,KAAK,GAAe;QACxB,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,cAAc,EAAE;QACvB,MAAM;QACN,QAAQ,EAAE,KAAK;KAChB,CAAC;IAEF,MAAM,QAAQ,GAAG,GAAS,EAAE;QAC1B,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO;QAC5C,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAE,CAAC;QAChD,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAC/B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAC7C,CAAC;QACF,IAAI,SAAS,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;;YAChC,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QACvC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;IACtB,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,UAAiC,EAAE,EAAW,EAAE;QAC/D,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,OAAO,KAAK,CAAC;QAChC,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,QAAQ,GAAG,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5C,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACrD,IAAI,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK;YAAE,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACrE,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1B,OAAO,QAAQ,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC;IAC7D,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,GAAY,EAAE;QAC3B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QACnD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;YACrB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,KAAK,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACvC,KAAK,MAAM,SAAS,IAAI,OAAO,EAAE,CAAC;gBAChC,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC;gBACzB,SAAS,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC7B,CAAC;YACD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YACtB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACrB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;QACvB,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,QAAQ,EAAE,CAAC;IACX,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,QAAQ;YACN,OAAO,KAAK,CAAC,MAAM,CAAC;QACtB,CAAC;QACD,OAAO;YACL,IAAI,CAAC,KAAK,CAAC,MAAM;gBAAE,OAAO,KAAK,CAAC;YAChC,OAAO,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC;QAC7D,CAAC;QACD,QAAQ;QACR,MAAM;QACN,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function globalTimeAt(animation: gsap.core.Tween, localTime: number): number;
|
|
2
|
+
export declare function localTimeAt(animation: gsap.core.Tween, globalTime: number): number;
|
|
3
|
+
export interface LocalCycle {
|
|
4
|
+
time: number;
|
|
5
|
+
direction: 1 | 0 | -1;
|
|
6
|
+
}
|
|
7
|
+
export declare function currentLocalCycle(animation: gsap.core.Tween): LocalCycle;
|
|
8
|
+
/** Maps a global instant to GSAP's cycle-local time, including repeat/yoyo. */
|
|
9
|
+
export declare function localCycleAt(animation: gsap.core.Tween, globalTime: number): LocalCycle;
|
|
10
|
+
//# sourceMappingURL=gsap-time.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gsap-time.d.ts","sourceRoot":"","sources":["../../src/gsap/gsap-time.ts"],"names":[],"mappings":"AAQA,wBAAgB,YAAY,CAC1B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAC1B,SAAS,EAAE,MAAM,GAChB,MAAM,CAER;AAED,wBAAgB,WAAW,CACzB,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAC1B,UAAU,EAAE,MAAM,GACjB,MAAM,CAYR;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;CACvB;AA4CD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,UAAU,CAExE;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAC1B,UAAU,EAAE,MAAM,GACjB,UAAU,CAGZ"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
function withGlobalTime(animation) {
|
|
2
|
+
return animation;
|
|
3
|
+
}
|
|
4
|
+
export function globalTimeAt(animation, localTime) {
|
|
5
|
+
return withGlobalTime(animation).globalTime(localTime);
|
|
6
|
+
}
|
|
7
|
+
export function localTimeAt(animation, globalTime) {
|
|
8
|
+
if (animation.paused())
|
|
9
|
+
return animation.totalTime();
|
|
10
|
+
const globalStart = globalTimeAt(animation, 0);
|
|
11
|
+
const globalNextSecond = globalTimeAt(animation, 1);
|
|
12
|
+
const globalSecondsPerLocalSecond = globalNextSecond - globalStart;
|
|
13
|
+
if (!Number.isFinite(globalSecondsPerLocalSecond) ||
|
|
14
|
+
globalSecondsPerLocalSecond === 0) {
|
|
15
|
+
return animation.time();
|
|
16
|
+
}
|
|
17
|
+
return Math.max(0, (globalTime - globalStart) / globalSecondsPerLocalSecond);
|
|
18
|
+
}
|
|
19
|
+
function cycleAtTotalTime(animation, totalTime) {
|
|
20
|
+
const duration = animation.duration();
|
|
21
|
+
const playbackDirection = animation.reversed() ? -1 : 1;
|
|
22
|
+
if (!(duration > 0))
|
|
23
|
+
return { time: 0, direction: playbackDirection };
|
|
24
|
+
const repeat = animation.repeat();
|
|
25
|
+
if (repeat === 0) {
|
|
26
|
+
return {
|
|
27
|
+
time: Math.min(totalTime, duration),
|
|
28
|
+
direction: playbackDirection,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
const cycleDuration = duration + animation.repeatDelay();
|
|
32
|
+
if (!(cycleDuration > 0))
|
|
33
|
+
return { time: 0, direction: playbackDirection };
|
|
34
|
+
const finiteEnd = repeat >= 0 ? animation.totalDuration() : Infinity;
|
|
35
|
+
const boundedTotalTime = Math.min(totalTime, finiteEnd);
|
|
36
|
+
if (repeat >= 0 && boundedTotalTime >= finiteEnd) {
|
|
37
|
+
const yoyoReversed = animation.yoyo() && repeat % 2 === 1;
|
|
38
|
+
return {
|
|
39
|
+
time: yoyoReversed ? 0 : duration,
|
|
40
|
+
direction: ((yoyoReversed ? -1 : 1) * playbackDirection),
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const cycle = Math.floor(boundedTotalTime / cycleDuration);
|
|
44
|
+
const yoyoReversed = animation.yoyo() && cycle % 2 === 1;
|
|
45
|
+
const cycleTime = boundedTotalTime - cycle * cycleDuration;
|
|
46
|
+
const forwardTime = Math.min(cycleTime, duration);
|
|
47
|
+
return {
|
|
48
|
+
time: yoyoReversed ? duration - forwardTime : forwardTime,
|
|
49
|
+
direction: cycleTime > duration
|
|
50
|
+
? 0
|
|
51
|
+
: ((yoyoReversed ? -1 : 1) * playbackDirection),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
export function currentLocalCycle(animation) {
|
|
55
|
+
return cycleAtTotalTime(animation, animation.totalTime());
|
|
56
|
+
}
|
|
57
|
+
/** Maps a global instant to GSAP's cycle-local time, including repeat/yoyo. */
|
|
58
|
+
export function localCycleAt(animation, globalTime) {
|
|
59
|
+
const totalTime = localTimeAt(animation, globalTime);
|
|
60
|
+
return cycleAtTotalTime(animation, totalTime);
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=gsap-time.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gsap-time.js","sourceRoot":"","sources":["../../src/gsap/gsap-time.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface PluginTweenTiming {
|
|
2
|
+
finiteDuration: number;
|
|
3
|
+
infinite: boolean;
|
|
4
|
+
}
|
|
5
|
+
export interface PluginTweenParticipant {
|
|
6
|
+
timing(): PluginTweenTiming;
|
|
7
|
+
dispose(): void;
|
|
8
|
+
}
|
|
9
|
+
export interface PluginTweenRegistration {
|
|
10
|
+
recompute(): void;
|
|
11
|
+
remove(): void;
|
|
12
|
+
}
|
|
13
|
+
export interface PluginTweenState {
|
|
14
|
+
tween: gsap.core.Tween;
|
|
15
|
+
baseDuration: number;
|
|
16
|
+
baseRepeat: number;
|
|
17
|
+
participants: Set<PluginTweenParticipant>;
|
|
18
|
+
generationTargets: Set<object>;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Starts one GSAP plugin init generation. Seeing the same target again marks a
|
|
22
|
+
* fresh generation after `invalidate()`, including stagger children whose
|
|
23
|
+
* source-array index isn't zero.
|
|
24
|
+
*/
|
|
25
|
+
export declare function beginPluginTweenInit(tween: gsap.core.Tween, target: object, options: {
|
|
26
|
+
baseDuration: number;
|
|
27
|
+
baseRepeat: number;
|
|
28
|
+
}): PluginTweenState;
|
|
29
|
+
export declare function registerPluginTweenParticipant(state: PluginTweenState, participant: PluginTweenParticipant): PluginTweenRegistration;
|
|
30
|
+
//# sourceMappingURL=plugin-tween-coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-tween-coordinator.d.ts","sourceRoot":"","sources":["../../src/gsap/plugin-tween-coordinator.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,IAAI,iBAAiB,CAAC;IAC5B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,IAAI,IAAI,CAAC;IAClB,MAAM,IAAI,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,GAAG,CAAC,sBAAsB,CAAC,CAAC;IAC1C,iBAAiB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;CAChC;AA+BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EACtB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACpD,gBAAgB,CA4BlB;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,gBAAgB,EACvB,WAAW,EAAE,sBAAsB,GAClC,uBAAuB,CAgBzB"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
const states = new WeakMap();
|
|
2
|
+
function applyTiming(state) {
|
|
3
|
+
let finiteDuration = 0;
|
|
4
|
+
let infinite = false;
|
|
5
|
+
for (const participant of state.participants) {
|
|
6
|
+
const timing = participant.timing();
|
|
7
|
+
finiteDuration = Math.max(finiteDuration, timing.finiteDuration);
|
|
8
|
+
infinite ||= timing.infinite;
|
|
9
|
+
}
|
|
10
|
+
if (infinite) {
|
|
11
|
+
state.tween.duration(1);
|
|
12
|
+
state.tween.repeat(-1);
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
state.tween.repeat(state.baseRepeat);
|
|
16
|
+
state.tween.duration(gsapSafeDuration(state.participants.size === 0 ? state.baseDuration : finiteDuration));
|
|
17
|
+
}
|
|
18
|
+
function disposeParticipants(state) {
|
|
19
|
+
for (const participant of state.participants)
|
|
20
|
+
participant.dispose();
|
|
21
|
+
state.participants.clear();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Starts one GSAP plugin init generation. Seeing the same target again marks a
|
|
25
|
+
* fresh generation after `invalidate()`, including stagger children whose
|
|
26
|
+
* source-array index isn't zero.
|
|
27
|
+
*/
|
|
28
|
+
export function beginPluginTweenInit(tween, target, options) {
|
|
29
|
+
let state = states.get(tween);
|
|
30
|
+
if (!state) {
|
|
31
|
+
state = {
|
|
32
|
+
tween,
|
|
33
|
+
baseDuration: options.baseDuration,
|
|
34
|
+
baseRepeat: options.baseRepeat,
|
|
35
|
+
participants: new Set(),
|
|
36
|
+
generationTargets: new Set([target]),
|
|
37
|
+
};
|
|
38
|
+
states.set(tween, state);
|
|
39
|
+
const previousInterrupt = tween.eventCallback('onInterrupt');
|
|
40
|
+
tween.eventCallback('onInterrupt', () => {
|
|
41
|
+
disposeParticipants(state);
|
|
42
|
+
previousInterrupt?.apply(tween.vars.callbackScope ?? tween, tween.vars.onInterruptParams ?? []);
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
else if (state.generationTargets.has(target)) {
|
|
46
|
+
disposeParticipants(state);
|
|
47
|
+
applyTiming(state);
|
|
48
|
+
state.generationTargets.clear();
|
|
49
|
+
}
|
|
50
|
+
state.generationTargets.add(target);
|
|
51
|
+
return state;
|
|
52
|
+
}
|
|
53
|
+
export function registerPluginTweenParticipant(state, participant) {
|
|
54
|
+
state.participants.add(participant);
|
|
55
|
+
applyTiming(state);
|
|
56
|
+
let active = true;
|
|
57
|
+
return {
|
|
58
|
+
recompute() {
|
|
59
|
+
if (active)
|
|
60
|
+
applyTiming(state);
|
|
61
|
+
},
|
|
62
|
+
remove() {
|
|
63
|
+
if (!active)
|
|
64
|
+
return;
|
|
65
|
+
active = false;
|
|
66
|
+
state.participants.delete(participant);
|
|
67
|
+
applyTiming(state);
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
import { gsapSafeDuration } from './spring-track-policy.js';
|
|
72
|
+
//# sourceMappingURL=plugin-tween-coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-tween-coordinator.js","sourceRoot":"","sources":["../../src/gsap/plugin-tween-coordinator.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,GAAG,IAAI,OAAO,EAAqC,CAAC;AAChE,SAAS,WAAW,CAAC,KAAuB;IAC1C,IAAI,cAAc,GAAG,CAAC,CAAC;IACvB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC;QACpC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;QACjE,QAAQ,KAAK,MAAM,CAAC,QAAQ,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACxB,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO;IACT,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAClB,gBAAgB,CACd,KAAK,CAAC,YAAY,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CACpE,CACF,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAuB;IAClD,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,YAAY;QAAE,WAAW,CAAC,OAAO,EAAE,CAAC;IACpE,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAsB,EACtB,MAAc,EACd,OAAqD;IAErD,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG;YACN,KAAK;YACL,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,YAAY,EAAE,IAAI,GAAG,EAAE;YACvB,iBAAiB,EAAE,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;SACrC,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAEzB,MAAM,iBAAiB,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAC7D,KAAK,CAAC,aAAa,CAAC,aAAa,EAAE,GAAG,EAAE;YACtC,mBAAmB,CAAC,KAAM,CAAC,CAAC;YAC5B,iBAAiB,EAAE,KAAK,CACtB,KAAK,CAAC,IAAI,CAAC,aAAa,IAAI,KAAK,EACjC,KAAK,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CACnC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/C,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IACD,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC5C,KAAuB,EACvB,WAAmC;IAEnC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACpC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnB,IAAI,MAAM,GAAG,IAAI,CAAC;IAElB,OAAO;QACL,SAAS;YACP,IAAI,MAAM;gBAAE,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,MAAM;YACJ,IAAI,CAAC,MAAM;gBAAE,OAAO;YACpB,MAAM,GAAG,KAAK,CAAC;YACf,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACvC,WAAW,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;KACF,CAAC;AACJ,CAAC;AACD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { SpringParameters, SpringSettleInput } from '../types.js';
|
|
2
|
+
import { gsap } from 'gsap';
|
|
3
|
+
import type { UnsettledPolicy } from './spring-track-policy.js';
|
|
4
|
+
import type { SpringProperty, SpringPropertyAdapter, SpringPropertyOptions, SpringTargetValue, SpringTargets, SpringToSnapshot, SpringVelocities } from './spring-to.js';
|
|
5
|
+
/** Spring configuration shared by the timeline effect and direct helper. */
|
|
6
|
+
export interface MotionSpringVars {
|
|
7
|
+
x?: SpringTargetValue;
|
|
8
|
+
y?: SpringTargetValue;
|
|
9
|
+
scale?: SpringTargetValue;
|
|
10
|
+
rotation?: SpringTargetValue;
|
|
11
|
+
values?: SpringTargets;
|
|
12
|
+
parameters: SpringParameters & {
|
|
13
|
+
settle?: SpringSettleInput;
|
|
14
|
+
};
|
|
15
|
+
velocity?: number | SpringVelocities;
|
|
16
|
+
properties?: Readonly<Partial<Record<SpringProperty, SpringPropertyOptions>>>;
|
|
17
|
+
adapters?: Readonly<Partial<Record<SpringProperty, SpringPropertyAdapter>>>;
|
|
18
|
+
units?: Readonly<Partial<Record<SpringProperty, string>>>;
|
|
19
|
+
/** Behavior when a track reaches `maxDuration` without settling. */
|
|
20
|
+
unsettled?: UnsettledPolicy;
|
|
21
|
+
/**
|
|
22
|
+
* Runs once per target at each forward logical-completion crossing. The
|
|
23
|
+
* snapshot does not include the target or its array index.
|
|
24
|
+
*/
|
|
25
|
+
onLogicalComplete?: (snapshot: SpringToSnapshot) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Runs once per settled target at each forward settlement crossing. The
|
|
28
|
+
* snapshot does not include the target or its array index.
|
|
29
|
+
*/
|
|
30
|
+
onSettle?: (snapshot: SpringToSnapshot) => void;
|
|
31
|
+
/**
|
|
32
|
+
* Runs once per unsettled target at each forward `maxDuration` crossing. The
|
|
33
|
+
* snapshot does not include the target or its array index.
|
|
34
|
+
*/
|
|
35
|
+
onUnsettled?: (snapshot: SpringToSnapshot) => void;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* GSAP options forwarded by the preflighted effect. Spring owns `duration` and
|
|
39
|
+
* `ease`, so those keys are rejected here.
|
|
40
|
+
*/
|
|
41
|
+
export type MotionSpringEffectTweenVars = Omit<gsap.TweenVars, 'duration' | 'ease'> & {
|
|
42
|
+
duration?: never;
|
|
43
|
+
ease?: never;
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Configuration for the preflighted GSAP effect. The effect resolves its
|
|
47
|
+
* driver duration before GSAP inserts the returned tween into a timeline.
|
|
48
|
+
*
|
|
49
|
+
* `from` snapshots an explicit future starting state. Supply it when building
|
|
50
|
+
* a timeline whose target will be changed by an earlier child; without it,
|
|
51
|
+
* preflight intentionally reads the target at effect-construction time.
|
|
52
|
+
*/
|
|
53
|
+
export interface MotionSpringEffectVars extends MotionSpringVars {
|
|
54
|
+
/**
|
|
55
|
+
* Explicit starting snapshot captured during effect construction. One map is
|
|
56
|
+
* applied to every resolved target. Without it, preflight reads each target.
|
|
57
|
+
*/
|
|
58
|
+
from?: SpringTargets;
|
|
59
|
+
/** GSAP driver options such as `paused`, `stagger`, `repeat`, and `yoyo`. */
|
|
60
|
+
tween?: MotionSpringEffectTweenVars;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates a preflighted GSAP tween whose duration is final before it is added
|
|
64
|
+
* to a timeline. Prefer the registered `timeline.motionSpring()` effect for
|
|
65
|
+
* sequential, staggered, or nested composition. Calling `invalidate()` reuses
|
|
66
|
+
* the prepared snapshot; create a new effect tween to preflight changed
|
|
67
|
+
* starting values, destinations, or parameters.
|
|
68
|
+
*/
|
|
69
|
+
export declare function createMotionSpringTween(targets: gsap.TweenTarget, rawVars: MotionSpringEffectVars, instance?: typeof gsap): gsap.core.Tween;
|
|
70
|
+
/** Registers the preflighted `motionSpring` effect and timeline extension. */
|
|
71
|
+
export declare function registerSpringPlugin(instance?: typeof gsap): void;
|
|
72
|
+
declare global {
|
|
73
|
+
namespace gsap {
|
|
74
|
+
interface EffectsMap {
|
|
75
|
+
motionSpring(targets: TweenTarget, vars: MotionSpringEffectVars): core.Tween;
|
|
76
|
+
}
|
|
77
|
+
namespace core {
|
|
78
|
+
interface Timeline {
|
|
79
|
+
motionSpring(targets: TweenTarget, vars: MotionSpringEffectVars, position?: Position): this;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/gsap/plugin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EAChB,iBAAiB,EAGlB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAmB5B,OAAO,KAAK,EAEV,eAAe,EAChB,MAAM,0BAA0B,CAAC;AAYlC,OAAO,KAAK,EAEV,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EAErB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAEhB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,4EAA4E;AAC5E,MAAM,WAAW,gBAAgB;IAC/B,CAAC,CAAC,EAAE,iBAAiB,CAAC;IACtB,CAAC,CAAC,EAAE,iBAAiB,CAAC;IACtB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,EAAE,gBAAgB,GAAG;QAAE,MAAM,CAAC,EAAE,iBAAiB,CAAA;KAAE,CAAC;IAC9D,QAAQ,CAAC,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACrC,UAAU,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;IAC5E,KAAK,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IAC1D,oEAAoE;IACpE,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACzD;;;OAGG;IACH,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAChD;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACpD;AAED;;;GAGG;AACH,MAAM,MAAM,2BAA2B,GAAG,IAAI,CAC5C,IAAI,CAAC,SAAS,EACd,UAAU,GAAG,MAAM,CACpB,GAAG;IACF,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,IAAI,CAAC,EAAE,KAAK,CAAC;CACd,CAAC;AAEF;;;;;;;GAOG;AACH,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D;;;OAGG;IACH,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,2BAA2B,CAAC;CACrC;AA8UD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,IAAI,CAAC,WAAW,EACzB,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,GAAE,OAAO,IAAW,GAC3B,IAAI,CAAC,IAAI,CAAC,KAAK,CA2DjB;AA8TD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,QAAQ,GAAE,OAAO,IAAW,GAAG,IAAI,CAEvE;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI,CAAC;QACb,UAAU,UAAU;YAClB,YAAY,CACV,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,sBAAsB,GAC3B,IAAI,CAAC,KAAK,CAAC;SACf;QAED,UAAU,IAAI,CAAC;YACb,UAAU,QAAQ;gBAChB,YAAY,CACV,OAAO,EAAE,WAAW,EACpB,IAAI,EAAE,sBAAsB,EAC5B,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI,CAAC;aACT;SACF;KACF;CACF"}
|