react-native-smooth-clip-view 0.1.0 → 0.2.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 (113) hide show
  1. package/README.md +164 -43
  2. package/SmoothClipView.podspec +8 -2
  3. package/android/CMakeLists.txt +39 -0
  4. package/android/build.gradle +69 -2
  5. package/android/proguard-rules.pro +6 -0
  6. package/android/src/main/cpp/SmoothClipAndroid.h +59 -0
  7. package/android/src/main/cpp/SmoothClipBindings.cpp +428 -0
  8. package/android/src/main/cpp/SmoothClipRegistry.cpp +913 -0
  9. package/android/src/main/java/com/smoothclipview/ClipGeometryNormalizer.kt +25 -0
  10. package/android/src/main/java/com/smoothclipview/SmoothClipBindings.kt +55 -0
  11. package/android/src/main/java/com/smoothclipview/SmoothClipModule.kt +128 -0
  12. package/android/src/main/java/com/smoothclipview/SmoothClipView.kt +164 -30
  13. package/android/src/main/java/com/smoothclipview/SmoothClipViewManager.kt +107 -10
  14. package/android/src/main/java/com/smoothclipview/SmoothClipViewPackage.kt +18 -2
  15. package/cpp/SmoothClipRegistry.h +93 -0
  16. package/cpp/SmoothClipSharedGeometry.h +50 -0
  17. package/ios/SmoothClipModuleProvider.h +9 -0
  18. package/ios/SmoothClipModuleProvider.mm +16 -0
  19. package/ios/SmoothClipRegistry.mm +717 -0
  20. package/ios/SmoothClipTurboModule.cpp +290 -0
  21. package/ios/SmoothClipTurboModule.h +132 -0
  22. package/ios/SmoothClipView.mm +976 -85
  23. package/ios/SmoothClipViewRegistry.h +27 -0
  24. package/lib/module/NativeSmoothClipModule.js +5 -0
  25. package/lib/module/NativeSmoothClipModule.js.map +1 -0
  26. package/lib/module/SmoothClipView.android.js +4 -0
  27. package/lib/module/SmoothClipView.android.js.map +1 -0
  28. package/lib/module/SmoothClipView.ios.js +34 -0
  29. package/lib/module/SmoothClipView.ios.js.map +1 -0
  30. package/lib/module/SmoothClipView.js +26 -12
  31. package/lib/module/SmoothClipView.js.map +1 -1
  32. package/lib/module/SmoothClipView.web.js +28 -12
  33. package/lib/module/SmoothClipView.web.js.map +1 -1
  34. package/lib/module/SmoothClipViewNativeComponent.ts +14 -1
  35. package/lib/module/driverState.js +102 -0
  36. package/lib/module/driverState.js.map +1 -0
  37. package/lib/module/driverTypes.js +4 -0
  38. package/lib/module/driverTypes.js.map +1 -0
  39. package/lib/module/drivers.android.js +4 -0
  40. package/lib/module/drivers.android.js.map +1 -0
  41. package/lib/module/drivers.ios.js +380 -0
  42. package/lib/module/drivers.ios.js.map +1 -0
  43. package/lib/module/drivers.js +276 -0
  44. package/lib/module/drivers.js.map +1 -0
  45. package/lib/module/geometry.js +19 -0
  46. package/lib/module/geometry.js.map +1 -1
  47. package/lib/module/index.js +2 -0
  48. package/lib/module/index.js.map +1 -1
  49. package/lib/module/index.web.js +2 -0
  50. package/lib/module/index.web.js.map +1 -1
  51. package/lib/module/nativeCompletion.js +21 -0
  52. package/lib/module/nativeCompletion.js.map +1 -0
  53. package/lib/module/reactRequests.js +50 -0
  54. package/lib/module/reactRequests.js.map +1 -0
  55. package/lib/module/smoothClipNative.android.js +15 -0
  56. package/lib/module/smoothClipNative.android.js.map +1 -0
  57. package/lib/module/smoothClipNative.js +8 -0
  58. package/lib/module/smoothClipNative.js.map +1 -0
  59. package/lib/typescript/src/NativeSmoothClipModule.d.ts +19 -0
  60. package/lib/typescript/src/NativeSmoothClipModule.d.ts.map +1 -0
  61. package/lib/typescript/src/SmoothClipView.android.d.ts +3 -0
  62. package/lib/typescript/src/SmoothClipView.android.d.ts.map +1 -0
  63. package/lib/typescript/src/SmoothClipView.d.ts +5 -6
  64. package/lib/typescript/src/SmoothClipView.d.ts.map +1 -1
  65. package/lib/typescript/src/SmoothClipView.ios.d.ts +9 -0
  66. package/lib/typescript/src/SmoothClipView.ios.d.ts.map +1 -0
  67. package/lib/typescript/src/SmoothClipView.web.d.ts +5 -7
  68. package/lib/typescript/src/SmoothClipView.web.d.ts.map +1 -1
  69. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts +4 -0
  70. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts.map +1 -1
  71. package/lib/typescript/src/driverState.d.ts +31 -0
  72. package/lib/typescript/src/driverState.d.ts.map +1 -0
  73. package/lib/typescript/src/driverTypes.d.ts +61 -0
  74. package/lib/typescript/src/driverTypes.d.ts.map +1 -0
  75. package/lib/typescript/src/drivers.android.d.ts +3 -0
  76. package/lib/typescript/src/drivers.android.d.ts.map +1 -0
  77. package/lib/typescript/src/drivers.d.ts +5 -0
  78. package/lib/typescript/src/drivers.d.ts.map +1 -0
  79. package/lib/typescript/src/drivers.ios.d.ts +5 -0
  80. package/lib/typescript/src/drivers.ios.d.ts.map +1 -0
  81. package/lib/typescript/src/geometry.d.ts +8 -0
  82. package/lib/typescript/src/geometry.d.ts.map +1 -1
  83. package/lib/typescript/src/index.d.ts +4 -1
  84. package/lib/typescript/src/index.d.ts.map +1 -1
  85. package/lib/typescript/src/index.web.d.ts +4 -1
  86. package/lib/typescript/src/index.web.d.ts.map +1 -1
  87. package/lib/typescript/src/nativeCompletion.d.ts +7 -0
  88. package/lib/typescript/src/nativeCompletion.d.ts.map +1 -0
  89. package/lib/typescript/src/reactRequests.d.ts +7 -0
  90. package/lib/typescript/src/reactRequests.d.ts.map +1 -0
  91. package/lib/typescript/src/smoothClipNative.android.d.ts +4 -0
  92. package/lib/typescript/src/smoothClipNative.android.d.ts.map +1 -0
  93. package/lib/typescript/src/smoothClipNative.d.ts +3 -0
  94. package/lib/typescript/src/smoothClipNative.d.ts.map +1 -0
  95. package/package.json +12 -7
  96. package/src/NativeSmoothClipModule.ts +104 -0
  97. package/src/SmoothClipView.android.tsx +2 -0
  98. package/src/SmoothClipView.ios.tsx +36 -0
  99. package/src/SmoothClipView.tsx +31 -27
  100. package/src/SmoothClipView.web.tsx +26 -22
  101. package/src/SmoothClipViewNativeComponent.ts +14 -1
  102. package/src/driverState.ts +150 -0
  103. package/src/driverTypes.ts +91 -0
  104. package/src/drivers.android.ts +6 -0
  105. package/src/drivers.ios.ts +665 -0
  106. package/src/drivers.ts +416 -0
  107. package/src/geometry.ts +39 -0
  108. package/src/index.ts +19 -1
  109. package/src/index.web.ts +19 -1
  110. package/src/nativeCompletion.ts +37 -0
  111. package/src/reactRequests.ts +64 -0
  112. package/src/smoothClipNative.android.ts +20 -0
  113. package/src/smoothClipNative.ts +5 -0
@@ -0,0 +1,380 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { useSharedValue } from 'react-native-reanimated';
5
+ import { isRNRuntime, scheduleOnRN, scheduleOnUI } from 'react-native-worklets';
6
+ import NativeSmoothClipModule from './smoothClipNative';
7
+ import { allocateDriverId, attachDriverState, createDriverState, detachDriverState, getDriverState, setDriverState } from "./driverState.js";
8
+ import { completeNativeAnimation, synchronizeNativeCompletion } from "./nativeCompletion.js";
9
+ import { clipPresentationEquals, createClipPresentation, isFiniteClipPresentation } from "./geometry.js";
10
+ import { createReactRequest, rejectDriverRequests, resolveReactRequest } from "./reactRequests.js";
11
+ const INTERACTIVE = 0;
12
+ const NATIVE = 1;
13
+ const setPresentationHostFunction = NativeSmoothClipModule.setClipPresentation;
14
+ const beginInteractionHostFunction = NativeSmoothClipModule.beginInteraction;
15
+ const animateTimingHostFunction = NativeSmoothClipModule.animateTiming;
16
+ const animateSpringHostFunction = NativeSmoothClipModule.animateSpring;
17
+ const animateKeyframesHostFunction = NativeSmoothClipModule.animateKeyframes;
18
+ const rejectAnimationHostFunction = NativeSmoothClipModule.rejectAnimation;
19
+ const cancelAnimationHostFunction = NativeSmoothClipModule.cancelAnimation;
20
+ const destroyDriverHostFunction = NativeSmoothClipModule.destroyDriver;
21
+
22
+ // Workaround for react-native-worklets 0.10: the RN-side serialization cache
23
+ // hands out one remote-function registry id per function forever, but the
24
+ // registry entry is deleted as soon as any transient UI-side proxy of that
25
+ // function is garbage collected. A later scheduleOnRN for the same function
26
+ // then reads `undefined` from the registry and aborts in Value::getObject.
27
+ // Pinning one UI-side reference for the app lifetime keeps the proxy — and
28
+ // with it the registry entry — alive. Remove once worklets decouples registry
29
+ // cleanup from proxy lifetime.
30
+ scheduleOnUI(resolver => {
31
+ 'worklet';
32
+
33
+ globalThis.__smoothClipPinnedResolver = resolver;
34
+ }, resolveReactRequest);
35
+ function reduceMotionCode(value) {
36
+ switch (value) {
37
+ case 'always':
38
+ return 1;
39
+ case 'never':
40
+ return 2;
41
+ default:
42
+ return 0;
43
+ }
44
+ }
45
+ function animationIsFinite(target, animation) {
46
+ 'worklet';
47
+
48
+ if (animation.type === 'timing') {
49
+ return Number.isFinite(animation.duration) && animation.controlPoints.every(Number.isFinite);
50
+ }
51
+ if (animation.type === 'spring') {
52
+ return [animation.mass ?? 1, animation.stiffness ?? 100, animation.damping ?? 10, animation.initialVelocity === 'inherit' ? 0 : animation.initialVelocity ?? 0].every(Number.isFinite);
53
+ }
54
+ if (!Number.isFinite(animation.duration) || animation.frames.length < 2) {
55
+ return false;
56
+ }
57
+ let previousOffset = -1;
58
+ for (const frame of animation.frames) {
59
+ if (!Number.isFinite(frame.offset) || frame.offset < 0 || frame.offset > 1 || frame.offset <= previousOffset || !isFiniteClipPresentation(frame.presentation)) {
60
+ return false;
61
+ }
62
+ previousOffset = frame.offset;
63
+ }
64
+ return animation.frames[0]?.offset === 0 && previousOffset === 1 && clipPresentationEquals(animation.frames[animation.frames.length - 1]?.presentation ?? null, target);
65
+ }
66
+ function presentationFromNative(values, fallback, offset = 0) {
67
+ 'worklet';
68
+
69
+ if (values.length < offset + 7) return fallback;
70
+ const presentation = {
71
+ clip: {
72
+ x: values[offset],
73
+ y: values[offset + 1],
74
+ width: values[offset + 2],
75
+ height: values[offset + 3],
76
+ radius: values[offset + 4]
77
+ },
78
+ contentTranslateX: values[offset + 5],
79
+ contentTranslateY: values[offset + 6]
80
+ };
81
+ return isFiniteClipPresentation(presentation) ? presentation : fallback;
82
+ }
83
+ function flattenedKeyframes(animation) {
84
+ 'worklet';
85
+
86
+ const values = [];
87
+ for (const frame of animation.frames) {
88
+ const {
89
+ clip,
90
+ contentTranslateX,
91
+ contentTranslateY
92
+ } = frame.presentation;
93
+ values.push(frame.offset, clip.x, clip.y, clip.width, clip.height, clip.radius, contentTranslateX, contentTranslateY);
94
+ }
95
+ return values;
96
+ }
97
+ function uiOnly() {
98
+ 'worklet';
99
+
100
+ throw new Error('[SmoothClipView] driver.ui methods must run on the UI runtime. Use driver.react from React code.');
101
+ }
102
+ export function useSmoothClipDriver(initialValue, options = {}) {
103
+ const initialPresentation = 'clip' in initialValue ? initialValue : createClipPresentation(initialValue);
104
+ const presentation = useSharedValue(initialPresentation);
105
+ const ownership = useSharedValue(INTERACTIVE);
106
+ const suppressDeliveries = useSharedValue(0);
107
+ const activeAnimationId = useSharedValue(0);
108
+ // Non-zero after a setScalars hot write: driver.presentation is then stale,
109
+ // so animateTo must start from the native registry's latest value instead
110
+ // of snapping back to the stale SharedValue.
111
+ const scalarsStale = useSharedValue(0);
112
+ const callbackRef = useRef(options.onAnimationComplete);
113
+ const driverRef = useRef(null);
114
+ callbackRef.current = options.onAnimationComplete;
115
+ if (driverRef.current === null) {
116
+ const driverId = allocateDriverId();
117
+ const reduceMotion = reduceMotionCode(options.reduceMotion ?? 'system');
118
+ const seedPresentation = next => {
119
+ 'worklet';
120
+
121
+ if (!clipPresentationEquals(presentation.value, next)) {
122
+ suppressDeliveries.value += 1;
123
+ presentation.value = next;
124
+ }
125
+ };
126
+ const beginOnUI = () => {
127
+ 'worklet';
128
+
129
+ const current = presentationFromNative(beginInteractionHostFunction(driverId), presentation.value);
130
+ activeAnimationId.value = 0;
131
+ ownership.value = INTERACTIVE;
132
+ scalarsStale.value = 0;
133
+ seedPresentation(current);
134
+ return current;
135
+ };
136
+ const setOnUI = next => {
137
+ 'worklet';
138
+
139
+ if (!isFiniteClipPresentation(next)) return;
140
+ activeAnimationId.value = 0;
141
+ ownership.value = INTERACTIVE;
142
+ scalarsStale.value = 0;
143
+ const {
144
+ clip,
145
+ contentTranslateX,
146
+ contentTranslateY
147
+ } = next;
148
+ setPresentationHostFunction(driverId, clip.x, clip.y, clip.width, clip.height, clip.radius, contentTranslateX, contentTranslateY, true);
149
+ seedPresentation(next);
150
+ };
151
+ const setScalarsOnUI = (x, y, width, height, radius, contentTranslateX, contentTranslateY) => {
152
+ 'worklet';
153
+
154
+ if (!Number.isFinite(x) || !Number.isFinite(y) || !Number.isFinite(width) || !Number.isFinite(height) || !Number.isFinite(radius) || !Number.isFinite(contentTranslateX) || !Number.isFinite(contentTranslateY)) {
155
+ return;
156
+ }
157
+ if (activeAnimationId.value !== 0) activeAnimationId.value = 0;
158
+ if (ownership.value !== INTERACTIVE) ownership.value = INTERACTIVE;
159
+ if (scalarsStale.value === 0) scalarsStale.value = 1;
160
+ setPresentationHostFunction(driverId, x, y, width, height, radius, contentTranslateX, contentTranslateY, true);
161
+ };
162
+ const animateOnUI = (target, animation) => {
163
+ 'worklet';
164
+
165
+ if (!isFiniteClipPresentation(target) || !animationIsFinite(target, animation)) {
166
+ return rejectAnimationHostFunction(driverId);
167
+ }
168
+
169
+ // After a setScalars hot write the SharedValue no longer matches what
170
+ // is on screen; passing it as the start would snap the animation back.
171
+ // Without an interactive start, native resolves the start from its own
172
+ // latest value instead.
173
+ const scalarsWereStale = scalarsStale.value !== 0;
174
+ const hasInteractiveStart = ownership.value === INTERACTIVE && !scalarsWereStale;
175
+ const start = presentation.value;
176
+ ownership.value = NATIVE;
177
+ presentation.value = target;
178
+ scalarsStale.value = 0;
179
+ const startClip = start.clip;
180
+ const targetClip = target.clip;
181
+ let animationId;
182
+ if (animation.type === 'timing') {
183
+ const [x1, y1, x2, y2] = animation.controlPoints;
184
+ animationId = animateTimingHostFunction(driverId, hasInteractiveStart, startClip.x, startClip.y, startClip.width, startClip.height, startClip.radius, start.contentTranslateX, start.contentTranslateY, targetClip.x, targetClip.y, targetClip.width, targetClip.height, targetClip.radius, target.contentTranslateX, target.contentTranslateY, Math.max(0, animation.duration), x1, y1, x2, y2, reduceMotion);
185
+ } else if (animation.type === 'spring') {
186
+ const inheritVelocity = animation.initialVelocity === undefined || animation.initialVelocity === 'inherit';
187
+ animationId = animateSpringHostFunction(driverId, hasInteractiveStart, startClip.x, startClip.y, startClip.width, startClip.height, startClip.radius, start.contentTranslateX, start.contentTranslateY, targetClip.x, targetClip.y, targetClip.width, targetClip.height, targetClip.radius, target.contentTranslateX, target.contentTranslateY, Math.max(0.0001, animation.mass ?? 1), Math.max(0.0001, animation.stiffness ?? 100), Math.max(0, animation.damping ?? 10), inheritVelocity ? 0 : animation.initialVelocity, inheritVelocity, reduceMotion);
188
+ } else {
189
+ animationId = animateKeyframesHostFunction(driverId, hasInteractiveStart, startClip.x, startClip.y, startClip.width, startClip.height, startClip.radius, start.contentTranslateX, start.contentTranslateY, targetClip.x, targetClip.y, targetClip.width, targetClip.height, targetClip.radius, target.contentTranslateX, target.contentTranslateY, Math.max(0, animation.duration), flattenedKeyframes(animation), reduceMotion);
190
+ }
191
+ if (animationId === 0) {
192
+ // Native rejected the transition after ownership was transferred.
193
+ // Restore interactive ownership and the pre-animation value, then
194
+ // emit a standalone finished:false completion so completion-driven
195
+ // state machines observe exactly one result per animateTo call.
196
+ ownership.value = INTERACTIVE;
197
+ presentation.value = start;
198
+ if (scalarsWereStale) scalarsStale.value = 1;
199
+ activeAnimationId.value = 0;
200
+ return rejectAnimationHostFunction(driverId);
201
+ }
202
+ activeAnimationId.value = animationId;
203
+ return animationId;
204
+ };
205
+ const cancelOnUI = (animationId = 0, behavior = 'current') => {
206
+ 'worklet';
207
+
208
+ const values = cancelAnimationHostFunction(driverId, animationId, behavior === 'target' ? 1 : 0);
209
+ if (values.length < 8 || values[0] !== 1) return presentation.value;
210
+ const current = presentationFromNative(values, presentation.value, 1);
211
+ activeAnimationId.value = 0;
212
+ ownership.value = INTERACTIVE;
213
+ scalarsStale.value = 0;
214
+ seedPresentation(current);
215
+ return current;
216
+ };
217
+ const driver = {
218
+ kind: 'hybrid',
219
+ presentation,
220
+ ui: {
221
+ beginInteraction() {
222
+ 'worklet';
223
+
224
+ if (isRNRuntime()) return uiOnly();
225
+ return beginOnUI();
226
+ },
227
+ set(next) {
228
+ 'worklet';
229
+
230
+ if (isRNRuntime()) return uiOnly();
231
+ setOnUI(next);
232
+ },
233
+ setScalars(x, y, width, height, radius, contentTranslateX, contentTranslateY) {
234
+ 'worklet';
235
+
236
+ if (isRNRuntime()) return uiOnly();
237
+ setScalarsOnUI(x, y, width, height, radius, contentTranslateX, contentTranslateY);
238
+ },
239
+ animateTo(target, animation) {
240
+ 'worklet';
241
+
242
+ if (isRNRuntime()) return uiOnly();
243
+ return animateOnUI(target, animation);
244
+ },
245
+ cancel(animationId = 0, behavior = 'current') {
246
+ 'worklet';
247
+
248
+ if (isRNRuntime()) return uiOnly();
249
+ return cancelOnUI(animationId, behavior);
250
+ }
251
+ },
252
+ react: {
253
+ beginInteraction() {
254
+ const {
255
+ requestId,
256
+ promise
257
+ } = createReactRequest(driverId);
258
+ scheduleOnUI(() => {
259
+ 'worklet';
260
+
261
+ const result = beginOnUI();
262
+ scheduleOnRN(resolveReactRequest, driverId, requestId, result);
263
+ });
264
+ return promise;
265
+ },
266
+ set(next) {
267
+ const {
268
+ requestId,
269
+ promise
270
+ } = createReactRequest(driverId);
271
+ scheduleOnUI(() => {
272
+ 'worklet';
273
+
274
+ setOnUI(next);
275
+ scheduleOnRN(resolveReactRequest, driverId, requestId, undefined);
276
+ });
277
+ return promise;
278
+ },
279
+ animateTo(target, animation) {
280
+ const {
281
+ requestId,
282
+ promise
283
+ } = createReactRequest(driverId, true);
284
+ scheduleOnUI(() => {
285
+ 'worklet';
286
+
287
+ const result = animateOnUI(target, animation);
288
+ scheduleOnRN(resolveReactRequest, driverId, requestId, result, true);
289
+ });
290
+ return promise;
291
+ },
292
+ cancel(animationId = 0, behavior = 'current') {
293
+ const {
294
+ requestId,
295
+ promise
296
+ } = createReactRequest(driverId, true);
297
+ scheduleOnUI(() => {
298
+ 'worklet';
299
+
300
+ const result = cancelOnUI(animationId, behavior);
301
+ scheduleOnRN(resolveReactRequest, driverId, requestId, result, true);
302
+ });
303
+ return promise;
304
+ }
305
+ }
306
+ };
307
+ setDriverState(driver, createDriverState(driverId, initialPresentation, presentation, callbackRef, activeAnimationId, ownership));
308
+ driverRef.current = driver;
309
+ }
310
+ const driver = driverRef.current;
311
+ useEffect(() => {
312
+ const currentDriver = driverRef.current;
313
+ if (!currentDriver) return undefined;
314
+ const state = getDriverState(currentDriver);
315
+ const {
316
+ driverId
317
+ } = state;
318
+ // Re-attach on every effect run: StrictMode/<Activity> replay the effect
319
+ // after its cleanup detached this state and destroyed the native driver.
320
+ // The authoritative seed below recreates the native entry in that case.
321
+ attachDriverState(state);
322
+ const subscription = NativeSmoothClipModule.onClipAnimationComplete(result => {
323
+ if (result.driverId !== driverId) return;
324
+ synchronizeNativeCompletion(activeAnimationId, ownership, result.animationId, result.finished);
325
+ completeNativeAnimation(driverId, result.animationId, result.finished);
326
+ });
327
+ scheduleOnUI((source, listenerId, nativeDriverId, owner, suppressed, active, stale, setter) => {
328
+ 'worklet';
329
+
330
+ let last = null;
331
+ const deliver = next => {
332
+ if (!isFiniteClipPresentation(next) || clipPresentationEquals(last, next)) {
333
+ return;
334
+ }
335
+ // Record `last` only for values native has actually observed:
336
+ // deliveries dropped during native ownership must stay eligible
337
+ // for re-delivery once interactive ownership returns.
338
+ if (owner.value !== INTERACTIVE) return;
339
+ if (suppressed.value > 0) {
340
+ suppressed.value -= 1;
341
+ last = next;
342
+ return;
343
+ }
344
+ last = next;
345
+ if (stale.value !== 0) stale.value = 0;
346
+ const {
347
+ clip,
348
+ contentTranslateX,
349
+ contentTranslateY
350
+ } = next;
351
+ setter(nativeDriverId, clip.x, clip.y, clip.width, clip.height, clip.radius, contentTranslateX, contentTranslateY, false);
352
+ };
353
+ source.addListener(listenerId, deliver);
354
+ // Authoritative take-ownership seed. Creates the native entry before
355
+ // any view mounts on the first run, and revives a driver destroyed by
356
+ // an effect-replay cleanup (StrictMode/<Activity>) on later runs.
357
+ const current = source.value;
358
+ if (isFiniteClipPresentation(current)) {
359
+ active.value = 0;
360
+ owner.value = INTERACTIVE;
361
+ stale.value = 0;
362
+ last = current;
363
+ setter(nativeDriverId, current.clip.x, current.clip.y, current.clip.width, current.clip.height, current.clip.radius, current.contentTranslateX, current.contentTranslateY, true);
364
+ }
365
+ }, presentation, driverId, driverId, ownership, suppressDeliveries, activeAnimationId, scalarsStale, setPresentationHostFunction);
366
+ return () => {
367
+ subscription.remove();
368
+ rejectDriverRequests(driverId);
369
+ detachDriverState(state);
370
+ scheduleOnUI((source, listenerId, nativeDriverId, destroy) => {
371
+ 'worklet';
372
+
373
+ source.removeListener(listenerId);
374
+ destroy(nativeDriverId);
375
+ }, presentation, driverId, driverId, destroyDriverHostFunction);
376
+ };
377
+ }, [activeAnimationId, ownership, presentation, scalarsStale, suppressDeliveries]);
378
+ return driver;
379
+ }
380
+ //# sourceMappingURL=drivers.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","useSharedValue","isRNRuntime","scheduleOnRN","scheduleOnUI","NativeSmoothClipModule","allocateDriverId","attachDriverState","createDriverState","detachDriverState","getDriverState","setDriverState","completeNativeAnimation","synchronizeNativeCompletion","clipPresentationEquals","createClipPresentation","isFiniteClipPresentation","createReactRequest","rejectDriverRequests","resolveReactRequest","INTERACTIVE","NATIVE","setPresentationHostFunction","setClipPresentation","beginInteractionHostFunction","beginInteraction","animateTimingHostFunction","animateTiming","animateSpringHostFunction","animateSpring","animateKeyframesHostFunction","animateKeyframes","rejectAnimationHostFunction","rejectAnimation","cancelAnimationHostFunction","cancelAnimation","destroyDriverHostFunction","destroyDriver","resolver","globalThis","__smoothClipPinnedResolver","reduceMotionCode","value","animationIsFinite","target","animation","type","Number","isFinite","duration","controlPoints","every","mass","stiffness","damping","initialVelocity","frames","length","previousOffset","frame","offset","presentation","presentationFromNative","values","fallback","clip","x","y","width","height","radius","contentTranslateX","contentTranslateY","flattenedKeyframes","push","uiOnly","Error","useSmoothClipDriver","initialValue","options","initialPresentation","ownership","suppressDeliveries","activeAnimationId","scalarsStale","callbackRef","onAnimationComplete","driverRef","current","driverId","reduceMotion","seedPresentation","next","beginOnUI","setOnUI","setScalarsOnUI","animateOnUI","scalarsWereStale","hasInteractiveStart","start","startClip","targetClip","animationId","x1","y1","x2","y2","Math","max","inheritVelocity","undefined","cancelOnUI","behavior","driver","kind","ui","set","setScalars","animateTo","cancel","react","requestId","promise","result","currentDriver","state","subscription","onClipAnimationComplete","finished","source","listenerId","nativeDriverId","owner","suppressed","active","stale","setter","last","deliver","addListener","remove","destroy","removeListener"],"sourceRoot":"../../src","sources":["drivers.ios.ts"],"mappings":"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","ignoreList":[]}