@rafaelaugusto/jolt 0.1.0-beta.8 → 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.
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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"}
@@ -1,6 +1,7 @@
1
1
  import { animate, decay } from './animate.js';
2
2
  import { press } from './press.js';
3
3
  import { drag } from './drag.js';
4
+ import { animateLayout } from './layout.js';
4
5
  import { sequence } from './sequence.js';
5
6
  import { type MotionState, type MotionDefinitions, type MotionStates, type MotionStatesOptions } from './motion-states.js';
6
7
  import type { Target } from './types.js';
@@ -15,6 +16,7 @@ export interface MotionScope {
15
16
  readonly suspended: boolean;
16
17
  /** Owned handles/subscriptions, including suspended subscription factories. */
17
18
  readonly size: number;
19
+ animateLayout: typeof animateLayout;
18
20
  animate: typeof animate;
19
21
  decay: typeof decay;
20
22
  sequence: typeof sequence;
@@ -1 +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,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,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,CA6MzC"}
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"}
@@ -1,6 +1,7 @@
1
1
  import { animate, decay } from './animate.js';
2
2
  import { press } from './press.js';
3
3
  import { drag } from './drag.js';
4
+ import { animateLayout } from './layout.js';
4
5
  import { sequence } from './sequence.js';
5
6
  import { motionStates, } from './motion-states.js';
6
7
  const owners = new WeakMap();
@@ -130,6 +131,11 @@ export function motionScope() {
130
131
  get size() {
131
132
  return entries.size;
132
133
  },
134
+ animateLayout(container, changeOrOptions, options) {
135
+ return startOwned(() => typeof changeOrOptions === 'function'
136
+ ? animateLayout(container, changeOrOptions, options)
137
+ : animateLayout(container, changeOrOptions));
138
+ },
133
139
  animate(...args) {
134
140
  return startOwned(() => animate(...args));
135
141
  },
@@ -1 +1 @@
1
- {"version":3,"file":"motion-scope.js","sourceRoot":"","sources":["../src/motion-scope.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"motion-scope.js","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,EACL,YAAY,GAKb,MAAM,oBAAoB,CAAA;AAgB3B,MAAM,MAAM,GAAG,IAAI,OAAO,EAAkB,CAAA;AAiC5C,yFAAyF;AACzF,MAAM,UAAU,WAAW;IACzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAS,CAAA;IAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAA;IAChD,MAAM,QAAQ,GAAG,EAAE,CAAA;IACnB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,SAAS,GAAG,KAAK,CAAA;IACrB,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,MAAM,WAAW,GAAG,GAAG,EAAE;QACvB,IAAI,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAA;QAC1D,IAAI,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAA;IAC7D,CAAC,CAAA;IACD,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,WAAW,EAAE,CAAA;QACb,IAAI,SAAS;YACX,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IACjF,CAAC,CAAA;IACD,MAAM,QAAQ,GAAG,CAAC,QAAwB,EAAE,EAAE;QAC5C,IACE,OAAO,QAAQ,KAAK,UAAU;YAC9B,CAAC,CAAC,QAAQ;gBACR,CAAC,OAAQ,QAAkC,CAAC,OAAO,KAAK,UAAU;oBAChE,OAAQ,QAA+B,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC;YAEjE,MAAM,IAAI,SAAS,CACjB,0EAA0E,CAC3E,CAAA;QACH,MAAM,QAAQ,GAAI,QAAuB,CAAC,QAAQ,CAAA;QAClD,IAAI,QAAQ,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU;YACjD,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;QAC7D,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ;YAC3D,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAA;IACxE,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,EAAE;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC/B,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;YACxB,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAA;QAC5B,CAAC;QACD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAA;IACtB,CAAC,CAAA;IACD,MAAM,eAAe,GAAG,CAAC,QAAwB,EAAE,EAAE;QACnD,IAAI,OAAO,QAAQ,KAAK,UAAU;YAAE,QAAQ,EAAE,CAAA;aACzC,IAAI,OAAQ,QAAkC,CAAC,OAAO,KAAK,UAAU;YACvE,QAAgC,CAAC,OAAO,EAAE,CAAA;;YACvC,QAA6B,CAAC,IAAI,EAAE,CAAA;IAC5C,CAAC,CAAA;IACD,MAAM,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAA;QAC/B,MAAM,CAAC,KAAK,CAAC,CAAA;QACb,IAAI,CAAC,QAAQ;YAAE,OAAM;QACrB,eAAe,CAAC,QAAQ,CAAC,CAAA;IAC3B,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,EAAE;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACrB,OAAO,CAAC,KAAK,CAAC,CAAA;IAChB,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,CAAC,KAAY,EAAE,QAAwB,EAAE,EAAE;QACxD,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAClB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QAC7E,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAA;QACzB,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;QAC5B,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAC9B,MAAM,QAAQ,GAAI,QAAuB,CAAC,QAAQ,CAAA;QAClD,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,IAAI,KAAK,CAAC,QAAQ,KAAK,QAAQ;oBAAE,OAAM;gBACvC,MAAM,CAAC,KAAK,CAAC,CAAA;gBACb,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACvB,CAAC,CAAA;YACD,KAAK,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;QACtC,CAAC;IACH,CAAC,CAAA;IACD,MAAM,iBAAiB,GAAG,CAAC,KAAY,EAAE,EAAE;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAM,EAAE,CAAA;QAC/B,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAClB,0EAA0E;QAC1E,IAAI,QAAQ,IAAI,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;YACpD,OAAM;QACR,CAAC;QACD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IACzB,CAAC,CAAA;IACD,2DAA2D;IAC3D,MAAM,KAAK,GAAG,CAAC,MAA8B,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAc,EAAE,CAAA;QAC5B,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,SAAQ;YACjC,IAAI,CAAC;gBACH,MAAM,CAAC,KAAK,CAAC,CAAA;YACf,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACpB,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,MAAM;YACf,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,wCAAwC,CAAC,CAAA;IAC9E,CAAC,CAAA;IACD,MAAM,UAAU,GAAG,CAA2B,OAAgB,EAAK,EAAE;QACnE,YAAY,EAAE,CAAA;QACd,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAA;QAC1B,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QAC5B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,eAAe,CAAC,QAAQ,CAAC,CAAA;YACpD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CAAA;IACD,MAAM,KAAK,GAAgB;QACzB,IAAI,QAAQ;YACV,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,IAAI,SAAS;YACX,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,IAAI,IAAI;YACN,OAAO,OAAO,CAAC,IAAI,CAAA;QACrB,CAAC;QACD,aAAa,CACX,SAAiB,EACjB,eAA2D,EAC3D,OAAoC;YAEpC,OAAO,UAAU,CAAC,GAAG,EAAE,CACrB,OAAO,eAAe,KAAK,UAAU;gBACnC,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe,EAAE,OAAO,CAAC;gBACpD,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,eAAe,CAAC,CAC9C,CAAA;QACH,CAAC;QACD,OAAO,CAAC,GAAG,IAAI;YACb,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,KAAK,CAAC,GAAG,IAAI;YACX,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACzC,CAAC;QACD,QAAQ,CAAC,GAAG,IAAI;YACd,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QAC5C,CAAC;QACD,KAAK,CAAC,GAAG,IAAI;YACX,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACxC,CAAC;QACD,IAAI,CAAC,GAAG,IAAI;YACV,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAAA;QACxC,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO;YAClC,OAAO,UAAU,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,GAAG,CAAC,QAAQ;YACV,YAAY,EAAE,CAAA;YACd,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAClB,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;gBAAE,OAAO,QAAQ,CAAA;YAC1C,MAAM,KAAK,GAAU,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YACtC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;YACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,OAAO,QAAQ,CAAA;QACjB,CAAC;QACD,GAAG,CAAC,KAAK;YACP,WAAW,EAAE,CAAA;YACb,IAAI,OAAO,KAAK,KAAK,UAAU;gBAC7B,MAAM,IAAI,SAAS,CAAC,sCAAsC,CAAC,CAAA;YAC7D,MAAM,KAAK,GAAU,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;YAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAClB,IAAI,CAAC;gBACH,IAAI,CAAC,SAAS;oBAAE,iBAAiB,CAAC,KAAK,CAAC,CAAA;YAC1C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAA;gBACb,MAAM,KAAK,CAAA;YACb,CAAC;YACD,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QAC5B,CAAC;QACD,OAAO;YACL,IAAI,QAAQ,IAAI,SAAS;gBAAE,OAAM;YACjC,SAAS,GAAG,IAAI,CAAA;YAChB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;oBAChB,OAAO,CAAC,KAAK,CAAC,CAAA;oBACd,OAAM;gBACR,CAAC;gBACD,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAkC,CAAA;gBACzD,IACE,OAAO,QAAQ,EAAE,KAAK,KAAK,UAAU;oBACrC,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU,EACnC,CAAC;oBACD,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAA;oBACvC,IAAI,KAAK,CAAC,MAAM;wBAAE,QAAQ,CAAC,KAAK,EAAE,CAAA;gBACpC,CAAC;;oBAAM,MAAM,CAAC,KAAK,CAAC,CAAA;YACtB,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,MAAM;YACJ,IAAI,QAAQ,IAAI,CAAC,SAAS;gBAAE,OAAM;YAClC,SAAS,GAAG,KAAK,CAAA;YACjB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACd,IAAI,QAAQ,IAAI,SAAS;oBAAE,OAAM;gBACjC,IAAI,KAAK,CAAC,KAAK;oBAAE,iBAAiB,CAAC,KAAK,CAAC,CAAA;qBACpC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACtB,KAAK,CAAC,MAAM,GAAG,KAAK,CACnB;oBAAC,KAAK,CAAC,QAAuB,CAAC,IAAI,EAAE,EAAE,CAAA;gBAC1C,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,KAAK;YACH,IAAI,QAAQ,IAAI,QAAQ;gBAAE,OAAM;YAChC,QAAQ,GAAG,IAAI,CAAA;YACf,IAAI,CAAC;gBACH,KAAK,CAAC,MAAM,CAAC,CAAA;YACf,CAAC;oBAAS,CAAC;gBACT,QAAQ,GAAG,KAAK,CAAA;YAClB,CAAC;QACH,CAAC;QACD,OAAO;YACL,IAAI,QAAQ;gBAAE,OAAM;YACpB,QAAQ,GAAG,IAAI,CAAA;YACf,KAAK,CAAC,MAAM,CAAC,CAAA;QACf,CAAC;KACF,CAAA;IACD,OAAO,KAAK,CAAA;AACd,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rafaelaugusto/jolt",
3
- "version": "0.1.0-beta.8",
3
+ "version": "0.1.0-beta.9",
4
4
  "description": "Native animations for NativeScript: presets, springs, keyframes and stagger in one call.",
5
5
  "keywords": [
6
6
  "nativescript",
@@ -178,6 +178,44 @@ export function createAndroidDriver(): Driver {
178
178
  return nativeView ? accessors[property].get(nativeView) / unit(property) : undefined
179
179
  },
180
180
 
181
+ layoutFrame(view) {
182
+ const native = view.nativeViewProtected as android.view.View | undefined
183
+ if (!native) return undefined
184
+ const dip = Utils.layout.toDeviceIndependentPixels
185
+ return {
186
+ x: dip(native.getLeft()),
187
+ y: dip(native.getTop()),
188
+ width: dip(native.getWidth()),
189
+ height: dip(native.getHeight()),
190
+ }
191
+ },
192
+
193
+ afterLayout(view, callback) {
194
+ const native = view.nativeViewProtected as android.view.View
195
+ const observer = native.getViewTreeObserver()
196
+ let active = true
197
+ const detach = () => {
198
+ if (!active) return
199
+ active = false
200
+ if (observer.isAlive()) observer.removeOnPreDrawListener(listener)
201
+ else {
202
+ const current = native.getViewTreeObserver()
203
+ if (current.isAlive()) current.removeOnPreDrawListener(listener)
204
+ }
205
+ }
206
+ const listener = new android.view.ViewTreeObserver.OnPreDrawListener({
207
+ onPreDraw() {
208
+ if (active) {
209
+ detach()
210
+ callback()
211
+ }
212
+ return true
213
+ },
214
+ })
215
+ observer.addOnPreDrawListener(listener)
216
+ return detach
217
+ },
218
+
181
219
  after(ms, callback) {
182
220
  // A native marker follows animator duration scale, including changes during playback.
183
221
  // Only completion crosses the bridge; there is no JavaScript update listener.
@@ -5,6 +5,13 @@ import type { Track } from '../track.js'
5
5
  import { createAndroidDriver } from './android.js'
6
6
  import { createIOSDriver } from './ios.js'
7
7
 
8
+ export interface LayoutFrame {
9
+ x: number
10
+ y: number
11
+ width: number
12
+ height: number
13
+ }
14
+
8
15
  export interface Driver {
9
16
  /** Milliseconds, on the clock the platform's animations run on. */
10
17
  now(): number
@@ -34,6 +41,10 @@ export interface Driver {
34
41
  presented(view: View, property: Property): number | undefined
35
42
  /** Calls back after `ms` of animation time, respecting platform speed settings. */
36
43
  after(ms: number, callback: () => void): () => void
44
+ /** Untransformed native layout bounds in parent DIPs. */
45
+ layoutFrame?(view: View): LayoutFrame | undefined
46
+ /** One callback after layout, before drawing; caller requests layout and owns cancellation. */
47
+ afterLayout?(view: View, callback: () => void): () => void
37
48
  /** The platform's accessibility setting: Reduce Motion on iOS, Remove animations on Android. */
38
49
  reducedMotion?(): boolean
39
50
  }
@@ -0,0 +1,63 @@
1
+ import type { View } from '@nativescript/core'
2
+
3
+ type LayoutView = View & {
4
+ _isTransformed: boolean
5
+ _modifyNativeViewFrame(native: UIView, frame: CGRect): void
6
+ }
7
+ const retained = new WeakMap<View, { count: number; restore(): void }>()
8
+
9
+ /**
10
+ * NativeScript caches whether its JS transform is nonidentity. Interactive native
11
+ * playback can move the actual model while that cached destination is identity.
12
+ * Let Core reset/restore the real transform when it next assigns a layout frame.
13
+ * This hook belongs only to the opted-in instance and only while tracks own it.
14
+ */
15
+ export function retainInteractiveLayout(view: View): () => void {
16
+ const host = view as LayoutView
17
+ let entry = retained.get(view)
18
+ if (!entry) {
19
+ const original = host._modifyNativeViewFrame
20
+ if (typeof original !== 'function') return () => {}
21
+ const descriptor = Object.getOwnPropertyDescriptor(host, '_modifyNativeViewFrame')
22
+ let active = true
23
+ const wrapper: LayoutView['_modifyNativeViewFrame'] = function (
24
+ this: LayoutView,
25
+ native,
26
+ frame,
27
+ ) {
28
+ if (active)
29
+ this._isTransformed = !CATransform3DEqualToTransform(
30
+ native.layer.transform,
31
+ CATransform3DIdentity,
32
+ )
33
+ original.call(this, native, frame)
34
+ }
35
+ host._modifyNativeViewFrame = wrapper
36
+ entry = {
37
+ count: 0,
38
+ restore() {
39
+ active = false
40
+ const native = host.nativeViewProtected as UIView | undefined
41
+ if (native)
42
+ host._isTransformed = !CATransform3DEqualToTransform(
43
+ native.layer.transform,
44
+ CATransform3DIdentity,
45
+ )
46
+ if (host._modifyNativeViewFrame !== wrapper) return
47
+ if (descriptor) Object.defineProperty(host, '_modifyNativeViewFrame', descriptor)
48
+ else delete (host as Partial<LayoutView>)._modifyNativeViewFrame
49
+ },
50
+ }
51
+ retained.set(view, entry)
52
+ }
53
+ entry.count++
54
+ let released = false
55
+ return () => {
56
+ if (released) return
57
+ released = true
58
+ if (--entry.count === 0) {
59
+ entry.restore()
60
+ retained.delete(view)
61
+ }
62
+ }
63
+ }