@rafaelaugusto/jolt 0.1.0-beta.7 → 0.1.0-beta.9

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 (90) hide show
  1. package/README.md +12 -2
  2. package/dist/animate.d.ts +2 -0
  3. package/dist/animate.d.ts.map +1 -1
  4. package/dist/animate.js +7 -2
  5. package/dist/animate.js.map +1 -1
  6. package/dist/drag-input.d.ts +15 -0
  7. package/dist/drag-input.d.ts.map +1 -0
  8. package/dist/drag-input.js +66 -0
  9. package/dist/drag-input.js.map +1 -0
  10. package/dist/drag-physics.d.ts +20 -0
  11. package/dist/drag-physics.d.ts.map +1 -0
  12. package/dist/drag-physics.js +75 -0
  13. package/dist/drag-physics.js.map +1 -0
  14. package/dist/drag.d.ts +58 -0
  15. package/dist/drag.d.ts.map +1 -0
  16. package/dist/drag.js +324 -0
  17. package/dist/drag.js.map +1 -0
  18. package/dist/driver/android.d.ts.map +1 -1
  19. package/dist/driver/android.js +40 -0
  20. package/dist/driver/android.js.map +1 -1
  21. package/dist/driver/index.d.ts +10 -0
  22. package/dist/driver/index.d.ts.map +1 -1
  23. package/dist/driver/index.js.map +1 -1
  24. package/dist/driver/ios-layout.d.ts +9 -0
  25. package/dist/driver/ios-layout.d.ts.map +1 -0
  26. package/dist/driver/ios-layout.js +52 -0
  27. package/dist/driver/ios-layout.js.map +1 -0
  28. package/dist/driver/ios.d.ts.map +1 -1
  29. package/dist/driver/ios.js +85 -6
  30. package/dist/driver/ios.js.map +1 -1
  31. package/dist/engine.d.ts +6 -0
  32. package/dist/engine.d.ts.map +1 -1
  33. package/dist/engine.js +26 -0
  34. package/dist/engine.js.map +1 -1
  35. package/dist/index.d.ts +10 -0
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +5 -0
  38. package/dist/index.js.map +1 -1
  39. package/dist/interaction-surface.d.ts +12 -0
  40. package/dist/interaction-surface.d.ts.map +1 -0
  41. package/dist/interaction-surface.js +36 -0
  42. package/dist/interaction-surface.js.map +1 -0
  43. package/dist/layout.d.ts +13 -0
  44. package/dist/layout.d.ts.map +1 -0
  45. package/dist/layout.js +348 -0
  46. package/dist/layout.js.map +1 -0
  47. package/dist/motion-scope.d.ts +39 -0
  48. package/dist/motion-scope.d.ts.map +1 -0
  49. package/dist/motion-scope.js +238 -0
  50. package/dist/motion-scope.js.map +1 -0
  51. package/dist/motion-states.d.ts +36 -0
  52. package/dist/motion-states.d.ts.map +1 -0
  53. package/dist/motion-states.js +165 -0
  54. package/dist/motion-states.js.map +1 -0
  55. package/dist/press.d.ts.map +1 -1
  56. package/dist/press.js +14 -3
  57. package/dist/press.js.map +1 -1
  58. package/dist/track.d.ts.map +1 -1
  59. package/dist/track.js +21 -4
  60. package/dist/track.js.map +1 -1
  61. package/dist/transition.d.ts +2 -1
  62. package/dist/transition.d.ts.map +1 -1
  63. package/dist/transition.js.map +1 -1
  64. package/dist/vue/index.d.ts +3 -1
  65. package/dist/vue/index.d.ts.map +1 -1
  66. package/dist/vue/index.js +17 -4
  67. package/dist/vue/index.js.map +1 -1
  68. package/package.json +1 -1
  69. package/platforms/ios/src/JoltInteractiveAnimation.h +18 -0
  70. package/platforms/ios/src/JoltInteractiveAnimation.m +123 -0
  71. package/platforms/ios/src/module.modulemap +1 -0
  72. package/src/animate.ts +15 -8
  73. package/src/drag-input.ts +74 -0
  74. package/src/drag-physics.ts +110 -0
  75. package/src/drag.ts +395 -0
  76. package/src/driver/android.ts +38 -0
  77. package/src/driver/index.ts +11 -0
  78. package/src/driver/ios-layout.ts +63 -0
  79. package/src/driver/ios.ts +100 -8
  80. package/src/engine.ts +29 -0
  81. package/src/index.ts +17 -0
  82. package/src/interaction-surface.ts +41 -0
  83. package/src/ios-plugin.d.ts +22 -0
  84. package/src/layout.ts +408 -0
  85. package/src/motion-scope.ts +279 -0
  86. package/src/motion-states.ts +215 -0
  87. package/src/press.ts +15 -3
  88. package/src/track.ts +25 -4
  89. package/src/transition.ts +2 -0
  90. package/src/vue/index.ts +20 -3
package/dist/layout.js ADDED
@@ -0,0 +1,348 @@
1
+ import { Application } from '@nativescript/core';
2
+ import { prepareAnimation, toView } from './animate.js';
3
+ import { getDriver } from './driver/index.js';
4
+ import { captureValue, propertyRevision, arrivalOf, setArrival, } from './engine.js';
5
+ import { interactionSurface } from './interaction-surface.js';
6
+ import { readValue, writeValue } from './properties.js';
7
+ import { springs } from './transition.js';
8
+ const pending = new WeakMap();
9
+ const playing = new WeakMap();
10
+ const properties = ['x', 'y', 'scaleX', 'scaleY'];
11
+ export function animateLayout(container, changeOrOptions, options) {
12
+ const host = toView(container);
13
+ const change = typeof changeOrOptions === 'function' ? changeOrOptions : undefined;
14
+ const input = change ? options : changeOrOptions;
15
+ const { size = 'scale', enter = true, ...transition } = normalize(input);
16
+ // Validate the complete transition before changing children or cancelling an earlier request.
17
+ prepareAnimation(host, { x: [0, 1], y: [0, 1], scaleX: [1, 2], scaleY: [1, 2], opacity: [0, 1] }, transition);
18
+ const driver = getDriver();
19
+ const before = new Map();
20
+ const ready = laidOut(host);
21
+ if (ready)
22
+ for (const child of childrenOf(host)) {
23
+ const frame = frameOf(child);
24
+ if (frame)
25
+ before.set(child, {
26
+ frame,
27
+ originX: child.originX,
28
+ originY: child.originY,
29
+ rotate: child.rotate,
30
+ rotateX: child.rotateX,
31
+ rotateY: child.rotateY,
32
+ values: {
33
+ x: captureValue(child, 'x'),
34
+ y: captureValue(child, 'y'),
35
+ scaleX: captureValue(child, 'scaleX'),
36
+ scaleY: captureValue(child, 'scaleY'),
37
+ },
38
+ });
39
+ }
40
+ let resolve;
41
+ let reject;
42
+ const finished = new Promise((done, fail) => {
43
+ resolve = done;
44
+ reject = fail;
45
+ });
46
+ let arrive;
47
+ const arrival = new Promise((done) => (arrive = done));
48
+ const owned = [];
49
+ let settled = false;
50
+ let detach;
51
+ const cleanup = () => {
52
+ detach?.();
53
+ detach = undefined;
54
+ host.off('unloaded', stop);
55
+ Application.off(Application.suspendEvent, stop);
56
+ if (pending.get(host) === handle)
57
+ pending.delete(host);
58
+ const active = playing.get(host);
59
+ active?.delete(handle);
60
+ if (!active?.size)
61
+ playing.delete(host);
62
+ before.clear();
63
+ owned.forEach((child) => child.detach());
64
+ arrive();
65
+ };
66
+ const complete = (result, error) => {
67
+ if (settled)
68
+ return;
69
+ settled = true;
70
+ cleanup();
71
+ if (error !== undefined)
72
+ reject(error);
73
+ else
74
+ resolve(result);
75
+ };
76
+ // A cancelled FLIP settles into the real layout rather than leaving a temporary inverse offset.
77
+ // The engine marker protects any animation that took ownership after this operation.
78
+ const restoreOne = ({ view, handle: child, targets }) => {
79
+ const current = targets.filter((target) => propertyRevision(view, target.property) === target.token);
80
+ child.stop();
81
+ for (const target of current)
82
+ if (propertyRevision(view, target.property) === target.token)
83
+ writeValue(view, target.property, target.value);
84
+ if (current.length)
85
+ driver.sync?.(view);
86
+ };
87
+ const restore = () => {
88
+ owned.forEach(restoreOne);
89
+ };
90
+ function stop() {
91
+ if (settled)
92
+ return;
93
+ restore();
94
+ complete(false);
95
+ }
96
+ const handle = {
97
+ finished,
98
+ stop,
99
+ then: (onfulfilled, onrejected) => finished.then(onfulfilled, onrejected),
100
+ };
101
+ setArrival(handle, arrival);
102
+ const run = () => {
103
+ if (settled)
104
+ return;
105
+ detach?.();
106
+ detach = undefined;
107
+ if (!laidOut(host)) {
108
+ stop();
109
+ return;
110
+ }
111
+ if (pending.get(host) === handle)
112
+ pending.delete(host);
113
+ const previous = [...(playing.get(host) ?? [])];
114
+ try {
115
+ const prepared = [];
116
+ for (const child of childrenOf(host)) {
117
+ const now = frameOf(child);
118
+ if (!now)
119
+ continue;
120
+ const was = before.get(child);
121
+ const frames = was
122
+ ? inverse(child, was, now, size)
123
+ : enter
124
+ ? { opacity: [0, child.opacity] }
125
+ : undefined;
126
+ if (frames && Object.keys(frames).length)
127
+ prepared.push({
128
+ view: child,
129
+ frames,
130
+ start: prepareAnimation(child, frames, transition),
131
+ });
132
+ }
133
+ before.clear();
134
+ // Selection lasts only for starting these tracks; their native geometry driver stays until completion.
135
+ for (const { view, frames, start } of prepared) {
136
+ const surface = interactionSurface(view);
137
+ try {
138
+ const child = start();
139
+ const targets = Object.entries(frames).map(([property, frames]) => ({
140
+ property: property,
141
+ value: frames.at(-1),
142
+ token: propertyRevision(view, property),
143
+ }));
144
+ const item = {
145
+ view,
146
+ handle: child,
147
+ targets,
148
+ detach: () => view.off('unloaded', unloaded),
149
+ };
150
+ const unloaded = () => {
151
+ item.detach();
152
+ if (!settled)
153
+ restoreOne(item);
154
+ };
155
+ // Keyed reorder may unload/reinsert the same native view. Do not persist its FLIP offset.
156
+ view.on('unloaded', unloaded);
157
+ owned.push(item);
158
+ }
159
+ finally {
160
+ surface.dispose();
161
+ }
162
+ }
163
+ const active = playing.get(host) ?? new Set();
164
+ active.add(handle);
165
+ playing.set(host, active);
166
+ // Replacements start before old handles stop so the engine can transfer velocity.
167
+ for (const old of previous)
168
+ old.stop();
169
+ void Promise.all(owned.map(({ handle }) => arrivalOf(handle))).then(arrive);
170
+ void Promise.all(owned.map(({ handle }) => handle.finished)).then((results) => complete(results.every(Boolean)), (error) => {
171
+ restore();
172
+ complete(false, error);
173
+ });
174
+ }
175
+ catch (error) {
176
+ restore();
177
+ complete(false, error);
178
+ }
179
+ };
180
+ pending.get(host)?.stop();
181
+ pending.set(host, handle);
182
+ host.on('unloaded', stop);
183
+ Application.on(Application.suspendEvent, stop);
184
+ try {
185
+ const result = change?.();
186
+ if (result && typeof result.then === 'function') {
187
+ void Promise.resolve(result).catch(() => { });
188
+ throw new TypeError('Layout mutations must be synchronous. Call animateLayout after awaited work.');
189
+ }
190
+ if (!settled) {
191
+ if (!ready || !laidOut(host))
192
+ complete(true);
193
+ else {
194
+ if (!driver.afterLayout || !driver.layoutFrame)
195
+ throw new Error('The animation driver does not support layout changes.');
196
+ detach = driver.afterLayout(host, run);
197
+ // Always request a pass, including a no-op mutation: no arbitrary timer or hanging wait.
198
+ host.requestLayout();
199
+ }
200
+ }
201
+ }
202
+ catch (error) {
203
+ stop();
204
+ throw error;
205
+ }
206
+ return handle;
207
+ }
208
+ function normalize(input) {
209
+ if (typeof input === 'string') {
210
+ if (!Object.hasOwn(springs, input))
211
+ throw new TypeError(`Unknown layout spring "${input}".`);
212
+ return normalize({ ...springs[input] });
213
+ }
214
+ if (input === undefined)
215
+ return {};
216
+ if (!input || typeof input !== 'object' || Array.isArray(input))
217
+ throw new TypeError('Invalid layout options.');
218
+ const allowed = new Set([
219
+ 'type',
220
+ 'duration',
221
+ 'ease',
222
+ 'times',
223
+ 'stiffness',
224
+ 'damping',
225
+ 'mass',
226
+ 'bounce',
227
+ 'velocity',
228
+ 'delay',
229
+ 'size',
230
+ 'enter',
231
+ ]);
232
+ for (const key of Object.keys(input))
233
+ if (!allowed.has(key))
234
+ throw new TypeError(`Unsupported layout option "${key}".`);
235
+ if (input.size !== undefined && input.size !== false && input.size !== 'scale')
236
+ throw new TypeError('Layout size must be "scale" or false.');
237
+ if (input.enter !== undefined && typeof input.enter !== 'boolean')
238
+ throw new TypeError('Layout enter must be boolean.');
239
+ if (input.type !== undefined && input.type !== 'spring' && input.type !== 'tween')
240
+ throw new TypeError('Layout type must be "spring" or "tween".');
241
+ const numbers = input;
242
+ for (const key of [
243
+ 'duration',
244
+ 'delay',
245
+ 'stiffness',
246
+ 'damping',
247
+ 'mass',
248
+ 'bounce',
249
+ 'velocity',
250
+ ]) {
251
+ const value = numbers[key];
252
+ if (value !== undefined && (typeof value !== 'number' || !Number.isFinite(value)))
253
+ throw new RangeError(`Layout ${key} must be finite.`);
254
+ if (typeof value === 'number') {
255
+ if (['duration', 'delay', 'damping'].includes(key) && value < 0)
256
+ throw new RangeError(`Layout ${key} must be nonnegative.`);
257
+ if (['stiffness', 'mass'].includes(key) && value <= 0)
258
+ throw new RangeError(`Layout ${key} must be positive.`);
259
+ if (key === 'bounce' && (value < -1 || value > 1))
260
+ throw new RangeError('Layout bounce must be between -1 and 1.');
261
+ }
262
+ }
263
+ const physical = ['stiffness', 'damping', 'mass'].some((key) => numbers[key] !== undefined);
264
+ const spring = input.type === 'spring' ||
265
+ (input.type !== 'tween' &&
266
+ ['bounce', 'velocity', 'stiffness', 'damping', 'mass'].some((key) => numbers[key] !== undefined));
267
+ if (spring && !physical && input.duration === 0)
268
+ throw new RangeError('A duration-based layout spring must have positive duration; use a zero-duration tween to settle immediately.');
269
+ const result = { ...input };
270
+ if ('ease' in result && Array.isArray(result.ease))
271
+ result.ease = [...result.ease];
272
+ if ('times' in result && result.times)
273
+ result.times = [...result.times];
274
+ return result;
275
+ }
276
+ function inverse(view, was, now, size) {
277
+ // Origin/rotation changes require a different affine transform, not a translation/scale FLIP.
278
+ if (view.originX !== was.originX ||
279
+ view.originY !== was.originY ||
280
+ view.rotate !== was.rotate ||
281
+ was.rotateX ||
282
+ was.rotateY ||
283
+ view.rotateX ||
284
+ view.rotateY)
285
+ return undefined;
286
+ const frames = {};
287
+ const width = was.frame.width - now.width, height = was.frame.height - now.height;
288
+ const resized = Math.abs(width) > 0.25 || Math.abs(height) > 0.25;
289
+ for (const property of properties) {
290
+ const current = was.values[property]();
291
+ if (current === undefined)
292
+ continue; // A newer explicit animation owns this property.
293
+ let start;
294
+ if (property === 'x')
295
+ start =
296
+ was.frame.x -
297
+ now.x +
298
+ current +
299
+ (size === 'scale' && resized ? width * was.originX : 0);
300
+ else if (property === 'y')
301
+ start =
302
+ was.frame.y -
303
+ now.y +
304
+ current +
305
+ (size === 'scale' && resized ? height * was.originY : 0);
306
+ else {
307
+ if (size !== 'scale')
308
+ continue;
309
+ start =
310
+ current *
311
+ (property === 'scaleX'
312
+ ? was.frame.width / now.width
313
+ : was.frame.height / now.height);
314
+ }
315
+ const end = readValue(view, property);
316
+ if (Math.abs(start - end) > (property.startsWith('scale') ? 0.0001 : 0.25))
317
+ frames[property] = [start, end];
318
+ }
319
+ return frames;
320
+ }
321
+ function laidOut(view) {
322
+ if (!view.isLoaded || !view.nativeViewProtected)
323
+ return false;
324
+ for (let current = view; current; current = current.parent)
325
+ if (current.isCollapsed)
326
+ return false;
327
+ return true;
328
+ }
329
+ function frameOf(view) {
330
+ if (!laidOut(view))
331
+ return undefined;
332
+ const frame = getDriver().layoutFrame?.(view);
333
+ return frame &&
334
+ Object.values(frame).every(Number.isFinite) &&
335
+ frame.width > 0 &&
336
+ frame.height > 0
337
+ ? frame
338
+ : undefined;
339
+ }
340
+ function childrenOf(host) {
341
+ const children = [];
342
+ host.eachChildView((child) => {
343
+ children.push(child);
344
+ return true;
345
+ });
346
+ return children;
347
+ }
348
+ //# sourceMappingURL=layout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { animate, decay } from './animate.js';
2
+ import { press } from './press.js';
3
+ import { drag } from './drag.js';
4
+ import { animateLayout } from './layout.js';
5
+ import { sequence } from './sequence.js';
6
+ import { type MotionState, type MotionDefinitions, type MotionStates, type MotionStatesOptions } from './motion-states.js';
7
+ import type { Target } from './types.js';
8
+ /** A cleanup function or a handle owned exclusively by one scope. */
9
+ export type MotionResource = (() => void) | {
10
+ stop(): void;
11
+ } | {
12
+ dispose(): void;
13
+ };
14
+ export interface MotionScope {
15
+ readonly disposed: boolean;
16
+ readonly suspended: boolean;
17
+ /** Owned handles/subscriptions, including suspended subscription factories. */
18
+ readonly size: number;
19
+ animateLayout: typeof animateLayout;
20
+ animate: typeof animate;
21
+ decay: typeof decay;
22
+ sequence: typeof sequence;
23
+ press: typeof press;
24
+ drag: typeof drag;
25
+ states<T extends Record<string, Target>, const S extends Record<string, MotionState<keyof T>>>(targets: T, definitions: MotionDefinitions<T, S>, options?: Omit<MotionStatesOptions, 'scope'>): MotionStates<Extract<keyof S, string>>;
26
+ /** Adopt an existing handle. Completed animations are released automatically. */
27
+ add<T extends MotionResource>(resource: T): T;
28
+ /** Attach a subscription, detach on suspension, and recreate on resume. */
29
+ use(setup: () => MotionResource): () => void;
30
+ /** Pause playable handles; cancel non-playable ones; detach subscriptions. */
31
+ suspend(): void;
32
+ resume(): void;
33
+ /** Cancel all owned work without destroying the scope, e.g. when recycling a cell. */
34
+ reset(): void;
35
+ dispose(): void;
36
+ }
37
+ /** Framework-independent ownership. Native unload never permanently destroys a scope. */
38
+ export declare function motionScope(): MotionScope;
39
+ //# sourceMappingURL=motion-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-scope.d.ts","sourceRoot":"","sources":["../src/motion-scope.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAsB,MAAM,aAAa,CAAA;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AACxC,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACzB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,qEAAqE;AACrE,MAAM,MAAM,cAAc,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG;IAAE,IAAI,IAAI,IAAI,CAAA;CAAE,GAAG;IAAE,OAAO,IAAI,IAAI,CAAA;CAAE,CAAA;AAclF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAA;IAC1B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;IAC3B,+EAA+E;IAC/E,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,OAAO,aAAa,CAAA;IACnC,OAAO,EAAE,OAAO,OAAO,CAAA;IACvB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,QAAQ,EAAE,OAAO,QAAQ,CAAA;IACzB,KAAK,EAAE,OAAO,KAAK,CAAA;IACnB,IAAI,EAAE,OAAO,IAAI,CAAA;IACjB,MAAM,CACJ,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,KAAK,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAEpD,OAAO,EAAE,CAAC,EACV,WAAW,EAAE,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,EACpC,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,CAAC,GAC3C,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;IACzC,iFAAiF;IACjF,GAAG,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;IAC7C,2EAA2E;IAC3E,GAAG,CAAC,KAAK,EAAE,MAAM,cAAc,GAAG,MAAM,IAAI,CAAA;IAC5C,8EAA8E;IAC9E,OAAO,IAAI,IAAI,CAAA;IACf,MAAM,IAAI,IAAI,CAAA;IACd,sFAAsF;IACtF,KAAK,IAAI,IAAI,CAAA;IACb,OAAO,IAAI,IAAI,CAAA;CAChB;AAED,yFAAyF;AACzF,wBAAgB,WAAW,IAAI,WAAW,CAwNzC"}
@@ -0,0 +1,238 @@
1
+ import { animate, decay } from './animate.js';
2
+ import { press } from './press.js';
3
+ import { drag } from './drag.js';
4
+ import { animateLayout } from './layout.js';
5
+ import { sequence } from './sequence.js';
6
+ import { motionStates, } from './motion-states.js';
7
+ const owners = new WeakMap();
8
+ /** Framework-independent ownership. Native unload never permanently destroys a scope. */
9
+ export function motionScope() {
10
+ const entries = new Set();
11
+ const adopted = new Map();
12
+ const identity = {};
13
+ let disposed = false;
14
+ let suspended = false;
15
+ let clearing = false;
16
+ const assertAlive = () => {
17
+ if (disposed)
18
+ throw new Error('Motion scope is disposed.');
19
+ if (clearing)
20
+ throw new Error('Motion scope is resetting.');
21
+ };
22
+ const assertActive = () => {
23
+ assertAlive();
24
+ if (suspended)
25
+ throw new Error('Motion scope is suspended; resume it before starting work.');
26
+ };
27
+ const validate = (resource) => {
28
+ if (typeof resource !== 'function' &&
29
+ (!resource ||
30
+ (typeof resource.dispose !== 'function' &&
31
+ typeof resource.stop !== 'function')))
32
+ throw new TypeError('A motion resource must be a cleanup function or expose stop()/dispose().');
33
+ const finished = resource.finished;
34
+ if (finished && typeof finished.then !== 'function')
35
+ throw new TypeError('Resource finished must be a promise.');
36
+ if (owners.has(resource) && owners.get(resource) !== identity)
37
+ throw new Error('Motion resource already belongs to another scope.');
38
+ };
39
+ const forget = (entry) => {
40
+ const resource = entry.resource;
41
+ if (resource) {
42
+ owners.delete(resource);
43
+ adopted.delete(resource);
44
+ entry.resource = undefined;
45
+ }
46
+ entry.resume = false;
47
+ };
48
+ const disposeResource = (resource) => {
49
+ if (typeof resource === 'function')
50
+ resource();
51
+ else if (typeof resource.dispose === 'function')
52
+ resource.dispose();
53
+ else
54
+ resource.stop();
55
+ };
56
+ const release = (entry) => {
57
+ const resource = entry.resource;
58
+ forget(entry);
59
+ if (!resource)
60
+ return;
61
+ disposeResource(resource);
62
+ };
63
+ const remove = (entry) => {
64
+ entries.delete(entry);
65
+ release(entry);
66
+ };
67
+ const attach = (entry, resource) => {
68
+ validate(resource);
69
+ if (adopted.has(resource))
70
+ throw new Error('Subscription factory returned an already owned resource.');
71
+ entry.resource = resource;
72
+ adopted.set(resource, entry);
73
+ owners.set(resource, identity);
74
+ const finished = resource.finished;
75
+ if (!entry.setup && finished) {
76
+ const settled = () => {
77
+ if (entry.resource !== resource)
78
+ return;
79
+ forget(entry);
80
+ entries.delete(entry);
81
+ };
82
+ void finished.then(settled, settled);
83
+ }
84
+ };
85
+ const startSubscription = (entry) => {
86
+ const resource = entry.setup();
87
+ validate(resource);
88
+ // Setup may synchronously navigate away, suspend or remove its own scope.
89
+ if (disposed || suspended || !entries.has(entry)) {
90
+ if (!owners.has(resource))
91
+ disposeResource(resource);
92
+ return;
93
+ }
94
+ attach(entry, resource);
95
+ };
96
+ // One bad cleanup must not strand the other subscriptions.
97
+ const visit = (action) => {
98
+ const errors = [];
99
+ for (const entry of [...entries]) {
100
+ if (!entries.has(entry))
101
+ continue;
102
+ try {
103
+ action(entry);
104
+ }
105
+ catch (error) {
106
+ errors.push(error);
107
+ }
108
+ }
109
+ if (errors.length)
110
+ throw new AggregateError(errors, 'Motion scope cleanup/lifecycle failed.');
111
+ };
112
+ const startOwned = (factory) => {
113
+ assertActive();
114
+ const resource = factory();
115
+ try {
116
+ return scope.add(resource);
117
+ }
118
+ catch (error) {
119
+ if (!owners.has(resource))
120
+ disposeResource(resource);
121
+ throw error;
122
+ }
123
+ };
124
+ const scope = {
125
+ get disposed() {
126
+ return disposed;
127
+ },
128
+ get suspended() {
129
+ return suspended;
130
+ },
131
+ get size() {
132
+ return entries.size;
133
+ },
134
+ animateLayout(container, changeOrOptions, options) {
135
+ return startOwned(() => typeof changeOrOptions === 'function'
136
+ ? animateLayout(container, changeOrOptions, options)
137
+ : animateLayout(container, changeOrOptions));
138
+ },
139
+ animate(...args) {
140
+ return startOwned(() => animate(...args));
141
+ },
142
+ decay(...args) {
143
+ return startOwned(() => decay(...args));
144
+ },
145
+ sequence(...args) {
146
+ return startOwned(() => sequence(...args));
147
+ },
148
+ press(...args) {
149
+ return scope.use(() => press(...args));
150
+ },
151
+ drag(...args) {
152
+ return startOwned(() => drag(...args));
153
+ },
154
+ states(targets, definitions, options) {
155
+ return startOwned(() => motionStates(targets, definitions, options));
156
+ },
157
+ add(resource) {
158
+ assertActive();
159
+ validate(resource);
160
+ if (adopted.has(resource))
161
+ return resource;
162
+ const entry = { resume: false };
163
+ attach(entry, resource);
164
+ entries.add(entry);
165
+ return resource;
166
+ },
167
+ use(setup) {
168
+ assertAlive();
169
+ if (typeof setup !== 'function')
170
+ throw new TypeError('Motion subscription needs a factory.');
171
+ const entry = { setup, resume: false };
172
+ entries.add(entry);
173
+ try {
174
+ if (!suspended)
175
+ startSubscription(entry);
176
+ }
177
+ catch (error) {
178
+ remove(entry);
179
+ throw error;
180
+ }
181
+ return () => remove(entry);
182
+ },
183
+ suspend() {
184
+ if (disposed || suspended)
185
+ return;
186
+ suspended = true;
187
+ visit((entry) => {
188
+ if (entry.setup) {
189
+ release(entry);
190
+ return;
191
+ }
192
+ const resource = entry.resource;
193
+ if (typeof resource?.pause === 'function' &&
194
+ typeof resource.play === 'function') {
195
+ entry.resume = resource.paused !== true;
196
+ if (entry.resume)
197
+ resource.pause();
198
+ }
199
+ else
200
+ remove(entry);
201
+ });
202
+ },
203
+ resume() {
204
+ if (disposed || !suspended)
205
+ return;
206
+ suspended = false;
207
+ visit((entry) => {
208
+ if (disposed || suspended)
209
+ return;
210
+ if (entry.setup)
211
+ startSubscription(entry);
212
+ else if (entry.resume) {
213
+ entry.resume = false;
214
+ entry.resource.play?.();
215
+ }
216
+ });
217
+ },
218
+ reset() {
219
+ if (disposed || clearing)
220
+ return;
221
+ clearing = true;
222
+ try {
223
+ visit(remove);
224
+ }
225
+ finally {
226
+ clearing = false;
227
+ }
228
+ },
229
+ dispose() {
230
+ if (disposed)
231
+ return;
232
+ disposed = true;
233
+ visit(remove);
234
+ },
235
+ };
236
+ return scope;
237
+ }
238
+ //# sourceMappingURL=motion-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"motion-scope.js","sourceRoot":"","sources":["../src/motion-scope.ts"],"names":[],"mappings":"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"}