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.
Files changed (134) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/LICENSE +21 -0
  3. package/README.md +340 -0
  4. package/dist/coupled-system.d.ts +50 -0
  5. package/dist/coupled-system.d.ts.map +1 -0
  6. package/dist/coupled-system.js +269 -0
  7. package/dist/coupled-system.js.map +1 -0
  8. package/dist/coupled.d.ts +3 -0
  9. package/dist/coupled.d.ts.map +1 -0
  10. package/dist/coupled.js +2 -0
  11. package/dist/coupled.js.map +1 -0
  12. package/dist/css-linear.d.ts +20 -0
  13. package/dist/css-linear.d.ts.map +1 -0
  14. package/dist/css-linear.js +95 -0
  15. package/dist/css-linear.js.map +1 -0
  16. package/dist/css.d.ts +3 -0
  17. package/dist/css.d.ts.map +1 -0
  18. package/dist/css.js +2 -0
  19. package/dist/css.js.map +1 -0
  20. package/dist/gsap/active-tracks.d.ts +32 -0
  21. package/dist/gsap/active-tracks.d.ts.map +1 -0
  22. package/dist/gsap/active-tracks.js +177 -0
  23. package/dist/gsap/active-tracks.js.map +1 -0
  24. package/dist/gsap/gsap-time.d.ts +10 -0
  25. package/dist/gsap/gsap-time.d.ts.map +1 -0
  26. package/dist/gsap/gsap-time.js +62 -0
  27. package/dist/gsap/gsap-time.js.map +1 -0
  28. package/dist/gsap/plugin-tween-coordinator.d.ts +30 -0
  29. package/dist/gsap/plugin-tween-coordinator.d.ts.map +1 -0
  30. package/dist/gsap/plugin-tween-coordinator.js +72 -0
  31. package/dist/gsap/plugin-tween-coordinator.js.map +1 -0
  32. package/dist/gsap/plugin.d.ts +84 -0
  33. package/dist/gsap/plugin.d.ts.map +1 -0
  34. package/dist/gsap/plugin.js +552 -0
  35. package/dist/gsap/plugin.js.map +1 -0
  36. package/dist/gsap/spring-to.d.ts +93 -0
  37. package/dist/gsap/spring-to.d.ts.map +1 -0
  38. package/dist/gsap/spring-to.js +569 -0
  39. package/dist/gsap/spring-to.js.map +1 -0
  40. package/dist/gsap/spring-track-policy.d.ts +24 -0
  41. package/dist/gsap/spring-track-policy.d.ts.map +1 -0
  42. package/dist/gsap/spring-track-policy.js +76 -0
  43. package/dist/gsap/spring-track-policy.js.map +1 -0
  44. package/dist/gsap/track-lifecycle.d.ts +16 -0
  45. package/dist/gsap/track-lifecycle.d.ts.map +1 -0
  46. package/dist/gsap/track-lifecycle.js +33 -0
  47. package/dist/gsap/track-lifecycle.js.map +1 -0
  48. package/dist/index.d.ts +28 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +16 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/math.d.ts +9 -0
  53. package/dist/math.d.ts.map +1 -0
  54. package/dist/math.js +38 -0
  55. package/dist/math.js.map +1 -0
  56. package/dist/model.d.ts +14 -0
  57. package/dist/model.d.ts.map +1 -0
  58. package/dist/model.js +38 -0
  59. package/dist/model.js.map +1 -0
  60. package/dist/motion-compatibility.d.ts +18 -0
  61. package/dist/motion-compatibility.d.ts.map +1 -0
  62. package/dist/motion-compatibility.js +83 -0
  63. package/dist/motion-compatibility.js.map +1 -0
  64. package/dist/parameters.d.ts +52 -0
  65. package/dist/parameters.d.ts.map +1 -0
  66. package/dist/parameters.js +124 -0
  67. package/dist/parameters.js.map +1 -0
  68. package/dist/settling.d.ts +12 -0
  69. package/dist/settling.d.ts.map +1 -0
  70. package/dist/settling.js +107 -0
  71. package/dist/settling.js.map +1 -0
  72. package/dist/solver.d.ts +17 -0
  73. package/dist/solver.d.ts.map +1 -0
  74. package/dist/solver.js +190 -0
  75. package/dist/solver.js.map +1 -0
  76. package/dist/spring.d.ts +9 -0
  77. package/dist/spring.d.ts.map +1 -0
  78. package/dist/spring.js +91 -0
  79. package/dist/spring.js.map +1 -0
  80. package/dist/support/additive-spring-value.d.ts +39 -0
  81. package/dist/support/additive-spring-value.d.ts.map +1 -0
  82. package/dist/support/additive-spring-value.js +281 -0
  83. package/dist/support/additive-spring-value.js.map +1 -0
  84. package/dist/support/inertia.d.ts +34 -0
  85. package/dist/support/inertia.d.ts.map +1 -0
  86. package/dist/support/inertia.js +293 -0
  87. package/dist/support/inertia.js.map +1 -0
  88. package/dist/support/keyframes.d.ts +34 -0
  89. package/dist/support/keyframes.d.ts.map +1 -0
  90. package/dist/support/keyframes.js +117 -0
  91. package/dist/support/keyframes.js.map +1 -0
  92. package/dist/support/spring-value.d.ts +38 -0
  93. package/dist/support/spring-value.d.ts.map +1 -0
  94. package/dist/support/spring-value.js +289 -0
  95. package/dist/support/spring-value.js.map +1 -0
  96. package/dist/support/velocity.d.ts +14 -0
  97. package/dist/support/velocity.d.ts.map +1 -0
  98. package/dist/support/velocity.js +75 -0
  99. package/dist/support/velocity.js.map +1 -0
  100. package/dist/types.d.ts +61 -0
  101. package/dist/types.d.ts.map +1 -0
  102. package/dist/types.js +2 -0
  103. package/dist/types.js.map +1 -0
  104. package/dist/vector.d.ts +32 -0
  105. package/dist/vector.d.ts.map +1 -0
  106. package/dist/vector.js +121 -0
  107. package/dist/vector.js.map +1 -0
  108. package/package.json +68 -0
  109. package/src/coupled-system.ts +383 -0
  110. package/src/coupled.ts +10 -0
  111. package/src/css-linear.ts +148 -0
  112. package/src/css.ts +6 -0
  113. package/src/gsap/active-tracks.ts +244 -0
  114. package/src/gsap/gsap-time.ts +91 -0
  115. package/src/gsap/plugin-tween-coordinator.ts +112 -0
  116. package/src/gsap/plugin.ts +861 -0
  117. package/src/gsap/spring-to.ts +836 -0
  118. package/src/gsap/spring-track-policy.ts +133 -0
  119. package/src/gsap/track-lifecycle.ts +53 -0
  120. package/src/index.ts +130 -0
  121. package/src/math.ts +46 -0
  122. package/src/model.ts +70 -0
  123. package/src/motion-compatibility.ts +131 -0
  124. package/src/parameters.ts +226 -0
  125. package/src/settling.ts +141 -0
  126. package/src/solver.ts +262 -0
  127. package/src/spring.ts +119 -0
  128. package/src/support/additive-spring-value.ts +343 -0
  129. package/src/support/inertia.ts +367 -0
  130. package/src/support/keyframes.ts +188 -0
  131. package/src/support/spring-value.ts +399 -0
  132. package/src/support/velocity.ts +119 -0
  133. package/src/types.ts +70 -0
  134. package/src/vector.ts +191 -0
@@ -0,0 +1,552 @@
1
+ import { createSpring } from '../spring.js';
2
+ import { gsap } from 'gsap';
3
+ import { activeTrackState, reconcileActiveTrackHandoff, registerActiveTrack, } from './active-tracks.js';
4
+ import { currentLocalCycle, localCycleAt, localTimeAt } from './gsap-time.js';
5
+ import { beginPluginTweenInit, registerPluginTweenParticipant, } from './plugin-tween-coordinator.js';
6
+ import { gsapSafeDuration, springTrackState, springTrackTiming, validateUnsettledPolicy, } from './spring-track-policy.js';
7
+ import { retireActiveTrackRegistrations, syncActiveTrackRegistration, } from './track-lifecycle.js';
8
+ import { SUPPORTED_PROPERTIES, accessFor, optionsFor, parseNumericValue, velocityFor, } from './spring-to.js';
9
+ const preparedMotionSprings = new WeakMap();
10
+ const INTERNAL_DRIVER_PROPERTY = '__tensumSpringDriver';
11
+ function isRecord(value) {
12
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
13
+ }
14
+ function validateMapProperty(property) {
15
+ parseNumericValue(0, property);
16
+ }
17
+ function normalizeOptionalRecord(value, name) {
18
+ if (value === undefined)
19
+ return undefined;
20
+ if (!isRecord(value)) {
21
+ throw new TypeError(`${name} must be an object when provided`);
22
+ }
23
+ return { ...value };
24
+ }
25
+ function normalizeTargets(value, name) {
26
+ const record = normalizeOptionalRecord(value, name);
27
+ if (!record)
28
+ return undefined;
29
+ for (const [property, target] of Object.entries(record)) {
30
+ parseNumericValue(target, property);
31
+ }
32
+ return record;
33
+ }
34
+ function normalizeProperties(value) {
35
+ const record = normalizeOptionalRecord(value, 'motionSpring properties');
36
+ if (!record)
37
+ return undefined;
38
+ const properties = Object.create(null);
39
+ for (const [property, options] of Object.entries(record)) {
40
+ validateMapProperty(property);
41
+ if (!isRecord(options)) {
42
+ throw new TypeError(`Properties for ${property} must be an object`);
43
+ }
44
+ const normalized = { ...options };
45
+ for (const parameter of [
46
+ 'mass',
47
+ 'stiffness',
48
+ 'damping',
49
+ 'velocity',
50
+ ]) {
51
+ const parameterValue = normalized[parameter];
52
+ if (parameterValue !== undefined &&
53
+ (typeof parameterValue !== 'number' || !Number.isFinite(parameterValue))) {
54
+ throw new TypeError(`${parameter} for ${property} must be a finite number`);
55
+ }
56
+ }
57
+ if (normalized['settle'] !== undefined) {
58
+ if (!isRecord(normalized['settle'])) {
59
+ throw new TypeError(`settle for ${property} must be an object`);
60
+ }
61
+ normalized['settle'] = { ...normalized['settle'] };
62
+ }
63
+ properties[property] = normalized;
64
+ }
65
+ return properties;
66
+ }
67
+ function normalizeAdapters(value) {
68
+ const record = normalizeOptionalRecord(value, 'motionSpring adapters');
69
+ if (!record)
70
+ return undefined;
71
+ const adapters = Object.create(null);
72
+ for (const [property, adapter] of Object.entries(record)) {
73
+ validateMapProperty(property);
74
+ if (!isRecord(adapter)) {
75
+ throw new TypeError(`Adapter for ${property} must be an object`);
76
+ }
77
+ if (typeof adapter['read'] !== 'function' ||
78
+ typeof adapter['write'] !== 'function') {
79
+ throw new TypeError(`Adapter for ${property} must provide read and write functions`);
80
+ }
81
+ if (adapter['unit'] !== undefined && typeof adapter['unit'] !== 'string') {
82
+ throw new TypeError(`Adapter unit for ${property} must be a string`);
83
+ }
84
+ adapters[property] = adapter;
85
+ }
86
+ return adapters;
87
+ }
88
+ function normalizeUnits(value) {
89
+ const record = normalizeOptionalRecord(value, 'motionSpring units');
90
+ if (!record)
91
+ return undefined;
92
+ const units = Object.create(null);
93
+ for (const [property, unit] of Object.entries(record)) {
94
+ validateMapProperty(property);
95
+ if (typeof unit !== 'string') {
96
+ throw new TypeError(`Unit for ${property} must be a string`);
97
+ }
98
+ units[property] = unit;
99
+ }
100
+ return units;
101
+ }
102
+ function normalizeVelocity(value) {
103
+ if (value === undefined)
104
+ return undefined;
105
+ if (typeof value === 'number') {
106
+ if (!Number.isFinite(value)) {
107
+ throw new TypeError('motionSpring velocity must be a finite number');
108
+ }
109
+ return value;
110
+ }
111
+ const record = normalizeOptionalRecord(value, 'motionSpring velocity');
112
+ const velocities = Object.create(null);
113
+ for (const [property, velocity] of Object.entries(record)) {
114
+ validateMapProperty(property);
115
+ if (typeof velocity !== 'number' || !Number.isFinite(velocity)) {
116
+ throw new TypeError(`Velocity for ${property} must be a finite number`);
117
+ }
118
+ velocities[property] = velocity;
119
+ }
120
+ return velocities;
121
+ }
122
+ function normalizeMotionSpringVars(value, context = 'motionSpring') {
123
+ if (!isRecord(value)) {
124
+ throw new TypeError(`${context} requires a configuration object`);
125
+ }
126
+ const own = { ...value };
127
+ if (!isRecord(own['parameters'])) {
128
+ throw new TypeError(`${context} requires a parameters object`);
129
+ }
130
+ const parameters = { ...own['parameters'] };
131
+ if (parameters['settle'] !== undefined) {
132
+ if (!isRecord(parameters['settle'])) {
133
+ throw new TypeError(`${context} parameters.settle must be an object`);
134
+ }
135
+ parameters['settle'] = { ...parameters['settle'] };
136
+ }
137
+ const normalized = {
138
+ ...own,
139
+ parameters,
140
+ values: normalizeTargets(own['values'], `${context} values`),
141
+ properties: normalizeProperties(own['properties']),
142
+ adapters: normalizeAdapters(own['adapters']),
143
+ units: normalizeUnits(own['units']),
144
+ velocity: normalizeVelocity(own['velocity']),
145
+ };
146
+ for (const callback of [
147
+ 'onLogicalComplete',
148
+ 'onSettle',
149
+ 'onUnsettled',
150
+ ]) {
151
+ const callbackValue = normalized[callback];
152
+ if (callbackValue !== undefined && typeof callbackValue !== 'function') {
153
+ throw new TypeError(`${context} ${callback} must be a function`);
154
+ }
155
+ }
156
+ if (normalized.unsettled !== undefined) {
157
+ validateUnsettledPolicy(normalized.unsettled, `${context} unsettled`);
158
+ }
159
+ return normalized;
160
+ }
161
+ function pluginTargetsFrom(vars) {
162
+ const requested = Object.create(null);
163
+ for (const property of SUPPORTED_PROPERTIES) {
164
+ const value = Object.hasOwn(vars, property) ? vars[property] : undefined;
165
+ if (value !== undefined)
166
+ requested[property] = parseNumericValue(value, property);
167
+ }
168
+ for (const [property, value] of Object.entries(vars.values ?? {})) {
169
+ requested[property] = parseNumericValue(value, property);
170
+ }
171
+ return requested;
172
+ }
173
+ function trackConfigFrom(vars) {
174
+ return {
175
+ spring: vars.parameters,
176
+ ...(vars.velocity === undefined ? {} : { velocity: vars.velocity }),
177
+ ...(vars.properties === undefined ? {} : { properties: vars.properties }),
178
+ ...(vars.adapters === undefined ? {} : { adapters: vars.adapters }),
179
+ ...(vars.units === undefined ? {} : { units: vars.units }),
180
+ };
181
+ }
182
+ function explicitStateFrom(from, property) {
183
+ const value = from && Object.hasOwn(from, property) ? from[property] : undefined;
184
+ return value === undefined ? undefined : parseNumericValue(value, property);
185
+ }
186
+ function preflightTarget(target, vars, from) {
187
+ const requested = pluginTargetsFrom(vars);
188
+ if (Object.keys(requested).length === 0) {
189
+ throw new TypeError('motionSpring requires at least one numeric target property');
190
+ }
191
+ const config = trackConfigFrom(vars);
192
+ const tracks = Object.create(null);
193
+ for (const [property, destination] of Object.entries(requested)) {
194
+ const explicit = explicitStateFrom(from, property);
195
+ let inherited = explicit === undefined ? activeTrackState(target, property) : undefined;
196
+ const initialUnit = explicit?.unit ?? (inherited?.terminal ? undefined : inherited?.unit);
197
+ const resolvedDestination = destination.unit === undefined && initialUnit !== undefined
198
+ ? { ...destination, unit: initialUnit }
199
+ : destination;
200
+ const access = accessFor(target, property, resolvedDestination, config);
201
+ if (explicit === undefined) {
202
+ inherited = reconcileActiveTrackHandoff(target, property, inherited, access.from, access.unit);
203
+ }
204
+ const handoffUnit = explicit?.unit ?? inherited?.unit;
205
+ if (handoffUnit !== undefined &&
206
+ access.unit !== undefined &&
207
+ handoffUnit !== access.unit) {
208
+ throw new TypeError(`Unit mismatch for ${property}: expected ${handoffUnit}, received ${access.unit}`);
209
+ }
210
+ const spring = createSpring({
211
+ from: explicit?.value ?? inherited?.position ?? access.from,
212
+ to: destination.value,
213
+ velocity: inherited?.velocity ??
214
+ config.properties?.[property]?.velocity ??
215
+ velocityFor(config.velocity, property),
216
+ ...optionsFor(config, property),
217
+ });
218
+ const settling = spring.getSettlingResult();
219
+ tracks[property] = {
220
+ target: destination.value,
221
+ ...(access.unit === undefined ? {} : { unit: access.unit }),
222
+ duration: settling.duration,
223
+ settling,
224
+ spring,
225
+ write: access.write,
226
+ };
227
+ }
228
+ return { tracks };
229
+ }
230
+ /**
231
+ * Creates a preflighted GSAP tween whose duration is final before it is added
232
+ * to a timeline. Prefer the registered `timeline.motionSpring()` effect for
233
+ * sequential, staggered, or nested composition. Calling `invalidate()` reuses
234
+ * the prepared snapshot; create a new effect tween to preflight changed
235
+ * starting values, destinations, or parameters.
236
+ */
237
+ export function createMotionSpringTween(targets, rawVars, instance = gsap) {
238
+ if (!isRecord(rawVars)) {
239
+ throw new TypeError('motionSpring effect requires a configuration object');
240
+ }
241
+ const resolvedTargets = instance.utils.toArray(targets);
242
+ if (resolvedTargets.length === 0) {
243
+ throw new TypeError('motionSpring effect requires at least one target');
244
+ }
245
+ const ownVars = { ...rawVars };
246
+ const from = normalizeTargets(ownVars['from'], 'motionSpring effect from');
247
+ const tweenOptions = normalizeOptionalRecord(ownVars['tween'], 'motionSpring effect tween');
248
+ delete ownVars['from'];
249
+ delete ownVars['tween'];
250
+ const pluginVars = normalizeMotionSpringVars(ownVars, 'motionSpring effect');
251
+ const preparedTargets = new WeakMap();
252
+ let finiteDuration = 0;
253
+ let hasUnsettled = false;
254
+ for (const target of resolvedTargets) {
255
+ const prepared = preflightTarget(target, pluginVars, from);
256
+ preparedTargets.set(target, prepared);
257
+ for (const track of Object.values(prepared.tracks)) {
258
+ finiteDuration = Math.max(finiteDuration, track.duration);
259
+ hasUnsettled ||= !track.settling.settled;
260
+ }
261
+ }
262
+ const policy = validateUnsettledPolicy(pluginVars.unsettled ?? 'stop', 'motionSpring unsettled');
263
+ if (policy === 'error' && hasUnsettled) {
264
+ throw new RangeError('motionSpring cannot start an unsettled spring in error mode');
265
+ }
266
+ const infinite = policy === 'continue' && hasUnsettled;
267
+ preparedMotionSprings.set(pluginVars, {
268
+ targets: preparedTargets,
269
+ baseDuration: gsapSafeDuration(finiteDuration),
270
+ baseRepeat: typeof tweenOptions?.['repeat'] === 'number' ? tweenOptions['repeat'] : 0,
271
+ });
272
+ const safeTweenOptions = { ...(tweenOptions ?? {}) };
273
+ delete safeTweenOptions.duration;
274
+ delete safeTweenOptions.ease;
275
+ delete safeTweenOptions[INTERNAL_DRIVER_PROPERTY];
276
+ if (infinite)
277
+ safeTweenOptions.repeat = -1;
278
+ return instance.to(resolvedTargets, {
279
+ ...safeTweenOptions,
280
+ duration: infinite ? 1 : gsapSafeDuration(finiteDuration),
281
+ ease: 'none',
282
+ [INTERNAL_DRIVER_PROPERTY]: pluginVars,
283
+ });
284
+ }
285
+ function currentTime(scope) {
286
+ return scope.policy === 'continue' && scope.hasUnsettled
287
+ ? scope.tween.totalTime()
288
+ : scope.tween.time();
289
+ }
290
+ function timingFor(tracks, policy) {
291
+ return springTrackTiming(tracks, policy);
292
+ }
293
+ function updateScopeTiming(scope) {
294
+ const timing = timingFor(scope.tracks, scope.policy);
295
+ scope.finiteDuration = timing.finiteDuration;
296
+ scope.hasUnsettled = timing.hasUnsettled;
297
+ scope.duration =
298
+ scope.policy === 'continue' && timing.hasUnsettled
299
+ ? Number.POSITIVE_INFINITY
300
+ : timing.finiteDuration;
301
+ scope.logicalDuration = timing.logicalDuration;
302
+ scope.unsettledAt = timing.unsettledAt;
303
+ }
304
+ function snapshotAt(scope, time, tracks = scope.tracks) {
305
+ const states = {};
306
+ for (const track of tracks) {
307
+ states[track.property] = springTrackState(track, time, scope.policy);
308
+ }
309
+ return {
310
+ elapsed: Number.isFinite(scope.duration)
311
+ ? Math.min(time, scope.duration)
312
+ : time,
313
+ duration: scope.duration,
314
+ states: states,
315
+ };
316
+ }
317
+ function renderAt(scope, time) {
318
+ if (scope.killed)
319
+ return;
320
+ const owners = [];
321
+ const retainAtCompletedYoyoStart = scope.tween.repeat() > 0 &&
322
+ scope.tween.yoyo() &&
323
+ scope.tween.repeat() % 2 === 1 &&
324
+ scope.tween.totalTime() >= scope.tween.totalDuration();
325
+ for (const track of scope.tracks) {
326
+ const registration = track.registration;
327
+ if (!registration)
328
+ continue;
329
+ const transition = syncActiveTrackRegistration(registration, time, track.lastTime, { retainAtStart: retainAtCompletedYoyoStart });
330
+ track.lastTime = time;
331
+ if (transition.releasedAtStart) {
332
+ if (!transition.restoredPrevious) {
333
+ track.write(springTrackState(track, 0, scope.policy).position);
334
+ }
335
+ continue;
336
+ }
337
+ if (transition.isOwner)
338
+ owners.push(track);
339
+ }
340
+ if (owners.length === 0)
341
+ return;
342
+ const snapshot = snapshotAt(scope, time, owners);
343
+ for (const track of owners) {
344
+ const state = snapshot.states[track.property];
345
+ if (state)
346
+ track.write(state.position);
347
+ }
348
+ const timing = timingFor(owners, scope.policy);
349
+ if (time < timing.logicalDuration)
350
+ scope.didLogicalComplete = false;
351
+ if (time < timing.finiteDuration)
352
+ scope.didSettle = false;
353
+ if (time < timing.unsettledAt)
354
+ scope.didNotifyUnsettled = false;
355
+ if (!scope.didLogicalComplete && time >= timing.logicalDuration) {
356
+ scope.didLogicalComplete = true;
357
+ scope.callbacks.onLogicalComplete?.(snapshot);
358
+ if (scope.killed || !scope.tween.parent)
359
+ return;
360
+ }
361
+ if (!timing.hasUnsettled &&
362
+ !scope.didSettle &&
363
+ time >= timing.finiteDuration) {
364
+ scope.didSettle = true;
365
+ scope.callbacks.onSettle?.(snapshot);
366
+ if (scope.killed || !scope.tween.parent)
367
+ return;
368
+ }
369
+ if (timing.hasUnsettled &&
370
+ !scope.didNotifyUnsettled &&
371
+ time >= timing.unsettledAt) {
372
+ scope.didNotifyUnsettled = true;
373
+ scope.callbacks.onUnsettled?.(snapshot);
374
+ if (scope.killed || !scope.tween.parent)
375
+ return;
376
+ }
377
+ if (scope.tween.repeat() >= 0 &&
378
+ scope.tween.totalTime() >= scope.tween.totalDuration()) {
379
+ retireActiveTrackRegistrations(scope.tracks.map((track) => track.registration));
380
+ }
381
+ }
382
+ function registerMotionSpringEffect(instance) {
383
+ instance.registerEffect({
384
+ name: 'motionSpring',
385
+ extendTimeline: true,
386
+ effect(targets, vars) {
387
+ return createMotionSpringTween(targets, vars, instance);
388
+ },
389
+ });
390
+ }
391
+ const pluginDefinition = {
392
+ version: '0.1.0',
393
+ name: INTERNAL_DRIVER_PROPERTY,
394
+ headless: true,
395
+ rawVars: 1,
396
+ register(instance) {
397
+ registerMotionSpringEffect(instance);
398
+ },
399
+ init(target, rawValue, tween, _targetIndex) {
400
+ const prepared = isRecord(rawValue)
401
+ ? preparedMotionSprings.get(rawValue)
402
+ : undefined;
403
+ if (!prepared) {
404
+ throw new TypeError('The Tensum GSAP driver is internal; use timeline.motionSpring() or createMotionSpringTween()');
405
+ }
406
+ const value = rawValue;
407
+ const requested = pluginTargetsFrom(value);
408
+ if (Object.keys(requested).length === 0) {
409
+ throw new TypeError('motionSpring requires at least one numeric target property');
410
+ }
411
+ const coordinator = beginPluginTweenInit(tween, target, {
412
+ baseDuration: prepared.baseDuration,
413
+ baseRepeat: prepared.baseRepeat,
414
+ });
415
+ const preparedTarget = prepared.targets.get(target);
416
+ if (!preparedTarget) {
417
+ throw new TypeError('The preflighted motionSpring target is unavailable; create a new effect tween');
418
+ }
419
+ if (Object.keys(preparedTarget.tracks).length !==
420
+ Object.keys(requested).length ||
421
+ Object.keys(requested).some((property) => preparedTarget.tracks[property] === undefined)) {
422
+ throw new TypeError('A preflighted motionSpring configuration cannot change before init; create a new effect tween instead');
423
+ }
424
+ const tracks = [];
425
+ for (const [property, destination] of Object.entries(requested)) {
426
+ const preparedTrack = preparedTarget.tracks[property];
427
+ if (destination.value !== preparedTrack.target ||
428
+ (destination.unit !== undefined &&
429
+ destination.unit !== preparedTrack.unit)) {
430
+ throw new TypeError('A preflighted motionSpring configuration cannot change before init; create a new effect tween instead');
431
+ }
432
+ tracks.push({
433
+ property,
434
+ target: preparedTrack.target,
435
+ ...(preparedTrack.unit === undefined
436
+ ? {}
437
+ : { unit: preparedTrack.unit }),
438
+ duration: preparedTrack.duration,
439
+ settling: preparedTrack.settling,
440
+ spring: preparedTrack.spring,
441
+ lastTime: 0,
442
+ write: preparedTrack.write,
443
+ });
444
+ this._props.push(property);
445
+ }
446
+ const policy = validateUnsettledPolicy(value.unsettled ?? 'stop', 'motionSpring unsettled');
447
+ const timing = timingFor(tracks, policy);
448
+ if (policy === 'error' && timing.hasUnsettled) {
449
+ throw new RangeError('motionSpring cannot start an unsettled spring in error mode');
450
+ }
451
+ const infinite = policy === 'continue' && timing.hasUnsettled;
452
+ this.tracks = tracks;
453
+ this.tween = tween;
454
+ this.policy = policy;
455
+ this.duration = infinite ? Number.POSITIVE_INFINITY : timing.finiteDuration;
456
+ this.finiteDuration = timing.finiteDuration;
457
+ this.logicalDuration = timing.logicalDuration;
458
+ this.unsettledAt = timing.unsettledAt;
459
+ this.hasUnsettled = timing.hasUnsettled;
460
+ this.killed = false;
461
+ this.didLogicalComplete = false;
462
+ this.didSettle = false;
463
+ this.didNotifyUnsettled = false;
464
+ this.callbacks = {
465
+ ...(value.onLogicalComplete === undefined
466
+ ? {}
467
+ : { onLogicalComplete: value.onLogicalComplete }),
468
+ ...(value.onSettle === undefined ? {} : { onSettle: value.onSettle }),
469
+ ...(value.onUnsettled === undefined
470
+ ? {}
471
+ : { onUnsettled: value.onUnsettled }),
472
+ };
473
+ for (const track of tracks) {
474
+ track.registration = registerActiveTrack(target, track.property, {
475
+ state: (globalTime) => {
476
+ let time = currentTime(this);
477
+ let direction = 1;
478
+ if (this.policy === 'continue' && this.hasUnsettled) {
479
+ direction = this.tween.reversed() ? -1 : 1;
480
+ if (globalTime !== undefined) {
481
+ time = localTimeAt(this.tween, globalTime);
482
+ }
483
+ }
484
+ else {
485
+ const cycle = globalTime === undefined
486
+ ? currentLocalCycle(this.tween)
487
+ : localCycleAt(this.tween, globalTime);
488
+ time = cycle.time;
489
+ direction = cycle.direction;
490
+ }
491
+ const state = springTrackState(track, time, this.policy);
492
+ return {
493
+ ...state,
494
+ velocity: state.velocity * direction,
495
+ ...(track.unit === undefined ? {} : { unit: track.unit }),
496
+ };
497
+ },
498
+ restore: () => {
499
+ track.write(springTrackState(track, currentTime(this), this.policy).position);
500
+ },
501
+ });
502
+ }
503
+ this.coordinator = registerPluginTweenParticipant(coordinator, {
504
+ timing: () => ({
505
+ finiteDuration: timingFor(this.tracks, this.policy).finiteDuration,
506
+ infinite: this.policy === 'continue' &&
507
+ this.tracks.some((track) => !track.settling.settled),
508
+ }),
509
+ dispose: () => {
510
+ for (const track of this.tracks)
511
+ track.registration?.release();
512
+ this.killed = true;
513
+ this.tracks.length = 0;
514
+ },
515
+ });
516
+ return true;
517
+ },
518
+ render(_ratio, data) {
519
+ const scope = data;
520
+ renderAt(scope, currentTime(scope));
521
+ },
522
+ kill(property) {
523
+ if (!property || property === INTERNAL_DRIVER_PROPERTY) {
524
+ for (const track of this.tracks)
525
+ track.registration?.release();
526
+ this.killed = true;
527
+ this.tracks.length = 0;
528
+ this.coordinator?.remove();
529
+ return true;
530
+ }
531
+ for (const track of this.tracks) {
532
+ if (track.property === property)
533
+ track.registration?.release();
534
+ }
535
+ this.tracks = this.tracks.filter((track) => track.property !== property);
536
+ this._props = this._props.filter((tracked) => tracked !== property);
537
+ updateScopeTiming(this);
538
+ if (this.tracks.length === 0) {
539
+ this.killed = true;
540
+ this.coordinator?.remove();
541
+ return true;
542
+ }
543
+ this.coordinator?.recompute();
544
+ return false;
545
+ },
546
+ };
547
+ const motionSpringDriverPlugin = pluginDefinition;
548
+ /** Registers the preflighted `motionSpring` effect and timeline extension. */
549
+ export function registerSpringPlugin(instance = gsap) {
550
+ instance.registerPlugin(motionSpringDriverPlugin);
551
+ }
552
+ //# sourceMappingURL=plugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/gsap/plugin.ts"],"names":[],"mappings":"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"}