react-native-divkit 1.7.0 → 1.8.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 (44) hide show
  1. package/README.md +17 -16
  2. package/dist/DivKit.d.ts.map +1 -1
  3. package/dist/DivKit.js +109 -1
  4. package/dist/DivKit.js.map +1 -1
  5. package/dist/components/state/DivState.d.ts +11 -12
  6. package/dist/components/state/DivState.d.ts.map +1 -1
  7. package/dist/components/state/DivState.js +263 -35
  8. package/dist/components/state/DivState.js.map +1 -1
  9. package/dist/components/utilities/Background.d.ts.map +1 -1
  10. package/dist/components/utilities/Background.js +4 -3
  11. package/dist/components/utilities/Background.js.map +1 -1
  12. package/dist/components/utilities/Outer.d.ts.map +1 -1
  13. package/dist/components/utilities/Outer.js +172 -76
  14. package/dist/components/utilities/Outer.js.map +1 -1
  15. package/dist/context/DivStateScopeContext.d.ts +18 -0
  16. package/dist/context/DivStateScopeContext.d.ts.map +1 -0
  17. package/dist/context/DivStateScopeContext.js +7 -0
  18. package/dist/context/DivStateScopeContext.js.map +1 -0
  19. package/dist/hooks/useAppearanceTransition.d.ts +86 -0
  20. package/dist/hooks/useAppearanceTransition.d.ts.map +1 -0
  21. package/dist/hooks/useAppearanceTransition.js +490 -0
  22. package/dist/hooks/useAppearanceTransition.js.map +1 -0
  23. package/dist/hooks/useChangeBoundsTransition.d.ts +46 -0
  24. package/dist/hooks/useChangeBoundsTransition.d.ts.map +1 -0
  25. package/dist/hooks/useChangeBoundsTransition.js +151 -0
  26. package/dist/hooks/useChangeBoundsTransition.js.map +1 -0
  27. package/dist/utils/configureChangeBoundsLayout.d.ts +11 -0
  28. package/dist/utils/configureChangeBoundsLayout.d.ts.map +1 -0
  29. package/dist/utils/configureChangeBoundsLayout.js +65 -0
  30. package/dist/utils/configureChangeBoundsLayout.js.map +1 -0
  31. package/dist/utils/flattenTransition.d.ts +5 -0
  32. package/dist/utils/flattenTransition.d.ts.map +1 -0
  33. package/dist/utils/flattenTransition.js +27 -0
  34. package/dist/utils/flattenTransition.js.map +1 -0
  35. package/package.json +2 -1
  36. package/src/DivKit.tsx +125 -2
  37. package/src/components/state/DivState.tsx +308 -39
  38. package/src/components/utilities/Background.tsx +4 -3
  39. package/src/components/utilities/Outer.tsx +188 -73
  40. package/src/context/DivStateScopeContext.tsx +23 -0
  41. package/src/hooks/useAppearanceTransition.ts +621 -0
  42. package/src/hooks/useChangeBoundsTransition.ts +193 -0
  43. package/src/utils/configureChangeBoundsLayout.ts +74 -0
  44. package/src/utils/flattenTransition.ts +36 -0
@@ -0,0 +1,490 @@
1
+ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
2
+ import { Animated, Dimensions, Easing } from 'react-native';
3
+ import { flattenAppearanceTransition } from '../utils/flattenTransition';
4
+ function interpolationToEasing(interpolator) {
5
+ switch (interpolator) {
6
+ case 'linear': return Easing.linear;
7
+ case 'ease': return Easing.ease;
8
+ case 'ease_in': return Easing.in(Easing.ease);
9
+ case 'ease_out': return Easing.out(Easing.ease);
10
+ case 'ease_in_out': return Easing.inOut(Easing.ease);
11
+ case 'spring': return Easing.inOut(Easing.ease);
12
+ default: return Easing.inOut(Easing.ease);
13
+ }
14
+ }
15
+ function normalize(transition) {
16
+ const res = {
17
+ hasFade: false,
18
+ hasScale: false,
19
+ hasSlide: false,
20
+ fadeAlpha: 0,
21
+ scaleValue: 0,
22
+ scalePivotX: 0.5,
23
+ scalePivotY: 0.5,
24
+ slideEdge: 'bottom',
25
+ slideDistance: null,
26
+ fadeDuration: 0,
27
+ fadeDelay: 0,
28
+ fadeEasing: Easing.inOut(Easing.ease),
29
+ scaleDuration: 0,
30
+ scaleDelay: 0,
31
+ scaleEasing: Easing.inOut(Easing.ease),
32
+ slideDuration: 0,
33
+ slideDelay: 0,
34
+ slideEasing: Easing.inOut(Easing.ease),
35
+ totalDuration: 0
36
+ };
37
+ if (!transition)
38
+ return res;
39
+ const items = flattenAppearanceTransition(transition);
40
+ for (const itAny of items) {
41
+ const it = itAny;
42
+ const duration = Math.max(0, it.duration ?? 300);
43
+ const delay = Math.max(0, it.start_delay ?? 0);
44
+ const easing = interpolationToEasing(it.interpolator);
45
+ res.totalDuration = Math.max(res.totalDuration, duration + delay);
46
+ if (it.type === 'fade') {
47
+ res.hasFade = true;
48
+ const fade = it;
49
+ res.fadeAlpha = typeof fade.alpha === 'number' ? fade.alpha : 0;
50
+ res.fadeDuration = duration;
51
+ res.fadeDelay = delay;
52
+ res.fadeEasing = easing;
53
+ }
54
+ else if (it.type === 'scale') {
55
+ res.hasScale = true;
56
+ const sc = it;
57
+ res.scaleValue = typeof sc.scale === 'number' ? sc.scale : 0;
58
+ res.scalePivotX = typeof sc.pivot_x === 'number' ? sc.pivot_x : 0.5;
59
+ res.scalePivotY = typeof sc.pivot_y === 'number' ? sc.pivot_y : 0.5;
60
+ res.scaleDuration = duration;
61
+ res.scaleDelay = delay;
62
+ res.scaleEasing = easing;
63
+ }
64
+ else if (it.type === 'slide') {
65
+ res.hasSlide = true;
66
+ const sl = it;
67
+ res.slideEdge = (sl.edge ?? 'bottom');
68
+ const dim = sl.distance;
69
+ const distVal = dim && typeof dim.value === 'number' ? dim.value : null;
70
+ res.slideDistance = distVal;
71
+ res.slideDuration = duration;
72
+ res.slideDelay = delay;
73
+ res.slideEasing = easing;
74
+ }
75
+ }
76
+ return res;
77
+ }
78
+ function slideOffsetFor(edge, distance) {
79
+ const win = Dimensions.get('window');
80
+ const dx = distance ?? win.width;
81
+ const dy = distance ?? win.height;
82
+ switch (edge) {
83
+ case 'left': return { tx: -dx, ty: 0 };
84
+ case 'right': return { tx: dx, ty: 0 };
85
+ case 'top': return { tx: 0, ty: -dy };
86
+ case 'bottom':
87
+ default: return { tx: 0, ty: dy };
88
+ }
89
+ }
90
+ /**
91
+ * Hook that drives transition_in / transition_out for an Outer wrapper.
92
+ *
93
+ * - On first mount: NO transition_in is played (matches Web Outer.svelte behavior with
94
+ * isVisibilityInited). Use mode='auto-in' if you do want a first-mount play (DivState
95
+ * uses this for newly-mounted children of a switched state).
96
+ * - On change visible→gone/invisible with a transition_out: animates identity → end values,
97
+ * then collapses.
98
+ * - On change gone/invisible→visible: re-mounts and plays transition_in.
99
+ *
100
+ * Only fade/scale/slide are supported here (AppearanceTransition).
101
+ */
102
+ export function useAppearanceTransition(opts) {
103
+ const { visibility, transitionIn, transitionOut, enabled = true, mode = 'visibility', onBeforeCollapse, onBeforeExpand, layoutWidth, layoutHeight } = opts;
104
+ const onBeforeCollapseRef = useRef(onBeforeCollapse);
105
+ const onBeforeExpandRef = useRef(onBeforeExpand);
106
+ onBeforeCollapseRef.current = onBeforeCollapse;
107
+ onBeforeExpandRef.current = onBeforeExpand;
108
+ const inSpec = useMemo(() => normalize(transitionIn), [transitionIn]);
109
+ const outSpec = useMemo(() => normalize(transitionOut), [transitionOut]);
110
+ // Refs to Animated values — created once
111
+ const opacity = useRef(new Animated.Value(visibility === 'visible' ? 1 : 0)).current;
112
+ const scale = useRef(new Animated.Value(1)).current;
113
+ const slideTx = useRef(new Animated.Value(0)).current;
114
+ const slideTy = useRef(new Animated.Value(0)).current;
115
+ const prevVisibilityRef = useRef(visibility);
116
+ const isFirstRunRef = useRef(true);
117
+ const inFlightRef = useRef(null);
118
+ const [rendered, setRendered] = useState(visibility !== 'gone');
119
+ const [collapsed, setCollapsed] = useState(visibility === 'gone');
120
+ // Active scale spec for transform composition (pivot + endpoint).
121
+ // Updated when we start an "in" or "out" scale animation; used to build interpolated transform.
122
+ const [activeScale, setActiveScale] = useState(() => {
123
+ if (visibility === 'visible' && (inSpec.hasScale)) {
124
+ return { value: inSpec.scaleValue, pivotX: inSpec.scalePivotX, pivotY: inSpec.scalePivotY };
125
+ }
126
+ return null;
127
+ });
128
+ useEffect(() => {
129
+ const prev = prevVisibilityRef.current;
130
+ prevVisibilityRef.current = visibility;
131
+ // Imperative mode: visibility prop is ignored for transitions — consumer drives via playOut/playIn.
132
+ // Only sync rendered/collapsed for static defaults; never auto-play.
133
+ if (mode === 'imperative') {
134
+ if (isFirstRunRef.current) {
135
+ isFirstRunRef.current = false;
136
+ if (visibility === 'visible') {
137
+ opacity.setValue(1);
138
+ scale.setValue(1);
139
+ slideTx.setValue(0);
140
+ slideTy.setValue(0);
141
+ }
142
+ }
143
+ return;
144
+ }
145
+ // auto-in mode: play transition_in on first mount, then ignore visibility changes
146
+ // (the consumer — e.g. DivState — drives transition_out programmatically).
147
+ if (mode === 'auto-in' && !isFirstRunRef.current) {
148
+ return;
149
+ }
150
+ if (isFirstRunRef.current) {
151
+ isFirstRunRef.current = false;
152
+ // Matches Web Outer.svelte: на первом монтаже не играем transition_in —
153
+ // он запускается только при последующем изменении visibility (см. isVisibilityInited).
154
+ if (visibility === 'visible') {
155
+ opacity.setValue(1);
156
+ scale.setValue(1);
157
+ slideTx.setValue(0);
158
+ slideTy.setValue(0);
159
+ }
160
+ else {
161
+ opacity.setValue(0);
162
+ }
163
+ return;
164
+ }
165
+ // visible → gone/invisible
166
+ if (prev === 'visible' && visibility !== 'visible') {
167
+ if (enabled && (outSpec.hasFade || outSpec.hasScale || outSpec.hasSlide)) {
168
+ setRendered(true);
169
+ setCollapsed(false);
170
+ if (outSpec.hasScale) {
171
+ setActiveScale({ value: outSpec.scaleValue, pivotX: outSpec.scalePivotX, pivotY: outSpec.scalePivotY });
172
+ }
173
+ runOut(visibility);
174
+ }
175
+ else {
176
+ opacity.setValue(visibility === 'invisible' ? 0 : 0);
177
+ if (visibility === 'gone') {
178
+ onBeforeCollapseRef.current?.();
179
+ setRendered(false);
180
+ setCollapsed(true);
181
+ }
182
+ }
183
+ return;
184
+ }
185
+ // gone/invisible → visible
186
+ if (prev !== 'visible' && visibility === 'visible') {
187
+ if (prev === 'gone') {
188
+ onBeforeExpandRef.current?.();
189
+ }
190
+ setRendered(true);
191
+ setCollapsed(false);
192
+ if (enabled && (inSpec.hasFade || inSpec.hasScale || inSpec.hasSlide)) {
193
+ if (inSpec.hasFade)
194
+ opacity.setValue(inSpec.fadeAlpha);
195
+ else
196
+ opacity.setValue(1);
197
+ if (inSpec.hasScale) {
198
+ scale.setValue(inSpec.scaleValue);
199
+ setActiveScale({ value: inSpec.scaleValue, pivotX: inSpec.scalePivotX, pivotY: inSpec.scalePivotY });
200
+ }
201
+ else {
202
+ scale.setValue(1);
203
+ setActiveScale(null);
204
+ }
205
+ if (inSpec.hasSlide) {
206
+ const off = slideOffsetFor(inSpec.slideEdge, inSpec.slideDistance);
207
+ slideTx.setValue(off.tx);
208
+ slideTy.setValue(off.ty);
209
+ }
210
+ else {
211
+ slideTx.setValue(0);
212
+ slideTy.setValue(0);
213
+ }
214
+ runIn();
215
+ }
216
+ else {
217
+ opacity.setValue(1);
218
+ scale.setValue(1);
219
+ slideTx.setValue(0);
220
+ slideTy.setValue(0);
221
+ setActiveScale(null);
222
+ }
223
+ return;
224
+ }
225
+ if (prev !== 'visible' && visibility !== 'visible') {
226
+ setRendered(visibility !== 'gone');
227
+ setCollapsed(visibility === 'gone');
228
+ }
229
+ // eslint-disable-next-line react-hooks/exhaustive-deps
230
+ }, [visibility, inSpec, outSpec, enabled, mode]);
231
+ function stopInFlight() {
232
+ if (inFlightRef.current) {
233
+ inFlightRef.current.stop();
234
+ inFlightRef.current = null;
235
+ }
236
+ }
237
+ /** Build the list of timings for a transition_in (target = identity). */
238
+ function buildInAnimations() {
239
+ const anims = [];
240
+ if (inSpec.hasFade) {
241
+ anims.push(Animated.timing(opacity, {
242
+ toValue: 1, duration: inSpec.fadeDuration, delay: inSpec.fadeDelay,
243
+ easing: inSpec.fadeEasing, useNativeDriver: true
244
+ }));
245
+ }
246
+ if (inSpec.hasScale) {
247
+ anims.push(Animated.timing(scale, {
248
+ toValue: 1, duration: inSpec.scaleDuration, delay: inSpec.scaleDelay,
249
+ easing: inSpec.scaleEasing, useNativeDriver: true
250
+ }));
251
+ }
252
+ if (inSpec.hasSlide) {
253
+ anims.push(Animated.timing(slideTx, {
254
+ toValue: 0, duration: inSpec.slideDuration, delay: inSpec.slideDelay,
255
+ easing: inSpec.slideEasing, useNativeDriver: true
256
+ }));
257
+ anims.push(Animated.timing(slideTy, {
258
+ toValue: 0, duration: inSpec.slideDuration, delay: inSpec.slideDelay,
259
+ easing: inSpec.slideEasing, useNativeDriver: true
260
+ }));
261
+ }
262
+ return anims;
263
+ }
264
+ /** Build the list of timings for a transition_out (target = end values). */
265
+ function buildOutAnimations() {
266
+ const anims = [];
267
+ if (outSpec.hasFade) {
268
+ anims.push(Animated.timing(opacity, {
269
+ toValue: outSpec.fadeAlpha, duration: outSpec.fadeDuration, delay: outSpec.fadeDelay,
270
+ easing: outSpec.fadeEasing, useNativeDriver: true
271
+ }));
272
+ }
273
+ if (outSpec.hasScale) {
274
+ anims.push(Animated.timing(scale, {
275
+ toValue: outSpec.scaleValue, duration: outSpec.scaleDuration, delay: outSpec.scaleDelay,
276
+ easing: outSpec.scaleEasing, useNativeDriver: true
277
+ }));
278
+ }
279
+ if (outSpec.hasSlide) {
280
+ const off = slideOffsetFor(outSpec.slideEdge, outSpec.slideDistance);
281
+ anims.push(Animated.timing(slideTx, {
282
+ toValue: off.tx, duration: outSpec.slideDuration, delay: outSpec.slideDelay,
283
+ easing: outSpec.slideEasing, useNativeDriver: true
284
+ }));
285
+ anims.push(Animated.timing(slideTy, {
286
+ toValue: off.ty, duration: outSpec.slideDuration, delay: outSpec.slideDelay,
287
+ easing: outSpec.slideEasing, useNativeDriver: true
288
+ }));
289
+ }
290
+ return anims;
291
+ }
292
+ function runIn() {
293
+ stopInFlight();
294
+ const anims = buildInAnimations();
295
+ if (anims.length === 0)
296
+ return Promise.resolve();
297
+ const comp = Animated.parallel(anims);
298
+ inFlightRef.current = comp;
299
+ return new Promise(resolve => {
300
+ comp.start(({ finished }) => {
301
+ if (inFlightRef.current === comp)
302
+ inFlightRef.current = null;
303
+ if (finished) {
304
+ if (inSpec.hasFade)
305
+ opacity.setValue(1);
306
+ if (inSpec.hasScale)
307
+ scale.setValue(1);
308
+ if (inSpec.hasSlide) {
309
+ slideTx.setValue(0);
310
+ slideTy.setValue(0);
311
+ }
312
+ }
313
+ resolve();
314
+ });
315
+ });
316
+ }
317
+ function runOut(target) {
318
+ stopInFlight();
319
+ const anims = buildOutAnimations();
320
+ if (anims.length === 0) {
321
+ if (target === 'gone') {
322
+ onBeforeCollapseRef.current?.();
323
+ setRendered(false);
324
+ setCollapsed(true);
325
+ }
326
+ return Promise.resolve();
327
+ }
328
+ const comp = Animated.parallel(anims);
329
+ inFlightRef.current = comp;
330
+ return new Promise(resolve => {
331
+ comp.start(({ finished }) => {
332
+ if (inFlightRef.current === comp)
333
+ inFlightRef.current = null;
334
+ if (!finished) {
335
+ resolve();
336
+ return;
337
+ }
338
+ if (target === 'gone') {
339
+ onBeforeCollapseRef.current?.();
340
+ setRendered(false);
341
+ setCollapsed(true);
342
+ }
343
+ resolve();
344
+ });
345
+ });
346
+ }
347
+ /**
348
+ * Imperative API: play transition_out without touching rendered/collapsed state.
349
+ * Caller decides whether to unmount the element after the promise resolves.
350
+ */
351
+ const playOut = useCallback(() => {
352
+ stopInFlight();
353
+ const anims = buildOutAnimations();
354
+ if (anims.length === 0)
355
+ return Promise.resolve();
356
+ const comp = Animated.parallel(anims);
357
+ inFlightRef.current = comp;
358
+ if (outSpec.hasScale) {
359
+ setActiveScale({
360
+ value: outSpec.scaleValue,
361
+ pivotX: outSpec.scalePivotX,
362
+ pivotY: outSpec.scalePivotY
363
+ });
364
+ }
365
+ return new Promise(resolve => {
366
+ comp.start(() => {
367
+ if (inFlightRef.current === comp)
368
+ inFlightRef.current = null;
369
+ resolve();
370
+ });
371
+ });
372
+ // eslint-disable-next-line react-hooks/exhaustive-deps
373
+ }, [outSpec]);
374
+ /**
375
+ * Imperative API: reset values to transition_in start, then animate to identity.
376
+ */
377
+ const playIn = useCallback(() => {
378
+ stopInFlight();
379
+ // Reset values to start
380
+ if (inSpec.hasFade)
381
+ opacity.setValue(inSpec.fadeAlpha);
382
+ if (inSpec.hasScale) {
383
+ scale.setValue(inSpec.scaleValue);
384
+ setActiveScale({
385
+ value: inSpec.scaleValue,
386
+ pivotX: inSpec.scalePivotX,
387
+ pivotY: inSpec.scalePivotY
388
+ });
389
+ }
390
+ if (inSpec.hasSlide) {
391
+ const off = slideOffsetFor(inSpec.slideEdge, inSpec.slideDistance);
392
+ slideTx.setValue(off.tx);
393
+ slideTy.setValue(off.ty);
394
+ }
395
+ const anims = buildInAnimations();
396
+ if (anims.length === 0)
397
+ return Promise.resolve();
398
+ const comp = Animated.parallel(anims);
399
+ inFlightRef.current = comp;
400
+ return new Promise(resolve => {
401
+ comp.start(({ finished }) => {
402
+ if (inFlightRef.current === comp)
403
+ inFlightRef.current = null;
404
+ if (finished) {
405
+ if (inSpec.hasFade)
406
+ opacity.setValue(1);
407
+ if (inSpec.hasScale)
408
+ scale.setValue(1);
409
+ if (inSpec.hasSlide) {
410
+ slideTx.setValue(0);
411
+ slideTy.setValue(0);
412
+ }
413
+ }
414
+ resolve();
415
+ });
416
+ });
417
+ // eslint-disable-next-line react-hooks/exhaustive-deps
418
+ }, [inSpec]);
419
+ const hasTransitionIn = inSpec.hasFade || inSpec.hasScale || inSpec.hasSlide;
420
+ const hasTransitionOut = outSpec.hasFade || outSpec.hasScale || outSpec.hasSlide;
421
+ useEffect(() => {
422
+ return () => {
423
+ if (inFlightRef.current) {
424
+ inFlightRef.current.stop();
425
+ inFlightRef.current = null;
426
+ }
427
+ };
428
+ }, []);
429
+ // Build the final transform array, combining slide translate + scale + pivot compensation.
430
+ const transform = useMemo(() => {
431
+ const out = [];
432
+ const hasAnySlide = inSpec.hasSlide || outSpec.hasSlide;
433
+ const hasAnyScale = inSpec.hasScale || outSpec.hasScale;
434
+ if (!hasAnySlide && !hasAnyScale)
435
+ return out;
436
+ // Build translateX/Y from slide + pivot interpolation.
437
+ let txExpr = hasAnySlide ? slideTx : null;
438
+ let tyExpr = hasAnySlide ? slideTy : null;
439
+ if (hasAnyScale &&
440
+ activeScale &&
441
+ (activeScale.pivotX !== 0.5 || activeScale.pivotY !== 0.5) &&
442
+ typeof layoutWidth === 'number' &&
443
+ typeof layoutHeight === 'number' &&
444
+ layoutWidth > 0 &&
445
+ layoutHeight > 0) {
446
+ // pivotTx = (pivotX - 0.5) * width * (1 - scale)
447
+ // Interpolate over [min(value,1), max(value,1)] mapped to corresponding endpoints.
448
+ const a = Math.min(activeScale.value, 1);
449
+ const b = Math.max(activeScale.value, 1);
450
+ if (a !== b && activeScale.pivotX !== 0.5) {
451
+ const offsetA = (activeScale.pivotX - 0.5) * layoutWidth * (1 - a);
452
+ const offsetB = (activeScale.pivotX - 0.5) * layoutWidth * (1 - b);
453
+ const pivotTx = scale.interpolate({
454
+ inputRange: [a, b],
455
+ outputRange: [offsetA, offsetB],
456
+ extrapolate: 'clamp'
457
+ });
458
+ txExpr = txExpr !== null ? Animated.add(txExpr, pivotTx) : pivotTx;
459
+ }
460
+ if (a !== b && activeScale.pivotY !== 0.5) {
461
+ const offsetA = (activeScale.pivotY - 0.5) * layoutHeight * (1 - a);
462
+ const offsetB = (activeScale.pivotY - 0.5) * layoutHeight * (1 - b);
463
+ const pivotTy = scale.interpolate({
464
+ inputRange: [a, b],
465
+ outputRange: [offsetA, offsetB],
466
+ extrapolate: 'clamp'
467
+ });
468
+ tyExpr = tyExpr !== null ? Animated.add(tyExpr, pivotTy) : pivotTy;
469
+ }
470
+ }
471
+ if (txExpr !== null)
472
+ out.push({ translateX: txExpr });
473
+ if (tyExpr !== null)
474
+ out.push({ translateY: tyExpr });
475
+ if (hasAnyScale)
476
+ out.push({ scale });
477
+ return out;
478
+ }, [inSpec, outSpec, activeScale, layoutWidth, layoutHeight, slideTx, slideTy, scale]);
479
+ return {
480
+ rendered,
481
+ collapsed,
482
+ opacity,
483
+ transform,
484
+ playIn,
485
+ playOut,
486
+ hasTransitionIn,
487
+ hasTransitionOut
488
+ };
489
+ }
490
+ //# sourceMappingURL=useAppearanceTransition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAppearanceTransition.js","sourceRoot":"","sources":["../../src/hooks/useAppearanceTransition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,46 @@
1
+ import { LayoutChangeEvent } from 'react-native';
2
+ import type { MaybeMissing } from '../expressions/json';
3
+ import type { TransitionChange } from '../types/base';
4
+ export interface ChangeBoundsTransitionOptions {
5
+ transitionChange?: MaybeMissing<TransitionChange>;
6
+ /**
7
+ * When true, the element is being unmounted/collapsed and we should NOT play a FLIP transition
8
+ * from previous bounds (the element is going away — that's handled by transition_out).
9
+ */
10
+ suspended?: boolean;
11
+ }
12
+ export interface ChangeBoundsTransitionResult {
13
+ /** Plug onto Animated.View. Computes delta vs prev layout and starts FLIP timing. */
14
+ onLayout: (e: LayoutChangeEvent) => void;
15
+ /**
16
+ * Transform array to merge into Animated.View style. Empty if no change_bounds spec.
17
+ * Returns translateX/translateY/scaleX/scaleY animated values that ride to identity.
18
+ */
19
+ transform: Array<{
20
+ translateX?: any;
21
+ translateY?: any;
22
+ scaleX?: any;
23
+ scaleY?: any;
24
+ }>;
25
+ /** Width measured by onLayout (handy for pivot calc in appearance hook). */
26
+ layoutWidth: number | undefined;
27
+ layoutHeight: number | undefined;
28
+ }
29
+ /**
30
+ * FLIP (First-Last-Invert-Play) hook for transition_change with custom cubic easing.
31
+ *
32
+ * On each layout change:
33
+ * 1. Capture previous (First) and new (Last) bounds via onLayout.
34
+ * 2. Set transform to translate(-dx, -dy) * scale(prevW/newW, prevH/newH) so the element
35
+ * visually stays at its old position/size (Invert).
36
+ * 3. Animate transform to identity over the spec duration (Play).
37
+ *
38
+ * Limitations:
39
+ * - onLayout reports coords relative to the parent. If the parent itself moves, we will
40
+ * see a position change but interpret it as our own movement — usually fine for items
41
+ * inside a stable container.
42
+ * - useNativeDriver is enabled (transform-only props), so the animation runs on the UI thread.
43
+ * - First layout is treated as the baseline and is not animated.
44
+ */
45
+ export declare function useChangeBoundsTransition(opts: ChangeBoundsTransitionOptions): ChangeBoundsTransitionResult;
46
+ //# sourceMappingURL=useChangeBoundsTransition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useChangeBoundsTransition.d.ts","sourceRoot":"","sources":["../../src/hooks/useChangeBoundsTransition.ts"],"names":[],"mappings":"AACA,OAAO,EAAoC,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAA0B,gBAAgB,EAAE,MAAM,eAAe,CAAC;AA2C9E,MAAM,WAAW,6BAA6B;IAC1C,gBAAgB,CAAC,EAAE,YAAY,CAAC,gBAAgB,CAAC,CAAC;IAClD;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,4BAA4B;IACzC,qFAAqF;IACrF,QAAQ,EAAE,CAAC,CAAC,EAAE,iBAAiB,KAAK,IAAI,CAAC;IACzC;;;OAGG;IACH,SAAS,EAAE,KAAK,CAAC;QAAE,UAAU,CAAC,EAAE,GAAG,CAAC;QAAC,UAAU,CAAC,EAAE,GAAG,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,CAAC;QAAC,MAAM,CAAC,EAAE,GAAG,CAAA;KAAE,CAAC,CAAC;IACrF,4EAA4E;IAC5E,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAChC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACrC,IAAI,EAAE,6BAA6B,GACpC,4BAA4B,CA0G9B"}