react-native-smooth-clip-view 0.2.9 → 0.4.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 (193) hide show
  1. package/README.md +132 -349
  2. package/android/build.gradle +8 -4
  3. package/android/proguard-rules.pro +3 -3
  4. package/android/src/main/cpp/SmoothClipAndroid.h +13 -6
  5. package/android/src/main/cpp/SmoothClipBindings.cpp +605 -123
  6. package/android/src/main/cpp/SmoothClipRegistry.cpp +975 -209
  7. package/android/src/main/java/com/smoothclipview/ClipGeometryNormalizer.kt +192 -118
  8. package/android/src/main/java/com/smoothclipview/SmoothClipBindings.kt +22 -4
  9. package/android/src/main/java/com/smoothclipview/SmoothClipModule.kt +81 -56
  10. package/android/src/main/java/com/smoothclipview/SmoothClipView.kt +449 -240
  11. package/android/src/main/java/com/smoothclipview/SmoothClipViewManager.kt +150 -38
  12. package/cpp/SmoothClipAnimationCurve.h +317 -397
  13. package/cpp/SmoothClipRegistry.h +84 -20
  14. package/cpp/SmoothClipSharedGeometry.h +131 -22
  15. package/cpp/SmoothClipVelocityTracker.h +16 -12
  16. package/ios/SmoothClipGeometry.h +188 -21
  17. package/ios/SmoothClipRegistry.mm +869 -368
  18. package/ios/SmoothClipRegistrySnapshot.h +13 -0
  19. package/ios/SmoothClipTurboModule.cpp +513 -156
  20. package/ios/SmoothClipTurboModule.h +123 -56
  21. package/ios/SmoothClipView.mm +1074 -449
  22. package/ios/SmoothClipViewRegistry.h +3 -7
  23. package/ios/reactnativesmoothclipview.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  24. package/ios/reactnativesmoothclipview.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +8 -0
  25. package/lib/module/NativeSmoothClipModule.js.map +1 -1
  26. package/lib/module/SmoothClipView.ios.js +94 -11
  27. package/lib/module/SmoothClipView.ios.js.map +1 -1
  28. package/lib/module/SmoothClipView.js +1 -46
  29. package/lib/module/SmoothClipView.js.map +1 -1
  30. package/lib/module/SmoothClipViewNativeComponent.ts +32 -12
  31. package/lib/module/capabilities.js +4 -0
  32. package/lib/module/capabilities.js.map +1 -0
  33. package/lib/module/capabilities.native.js +18 -0
  34. package/lib/module/capabilities.native.js.map +1 -0
  35. package/lib/module/capabilityTypes.js +2 -0
  36. package/lib/module/capabilityTypes.js.map +1 -0
  37. package/lib/module/controllerInternals.js +28 -0
  38. package/lib/module/controllerInternals.js.map +1 -0
  39. package/lib/module/controllerLifecycle.js +9 -0
  40. package/lib/module/controllerLifecycle.js.map +1 -0
  41. package/lib/module/controllerTypes.js +4 -0
  42. package/lib/module/controllerTypes.js.map +1 -0
  43. package/lib/module/controllers.android.js +4 -0
  44. package/lib/module/controllers.android.js.map +1 -0
  45. package/lib/module/controllers.ios.js +4 -0
  46. package/lib/module/controllers.ios.js.map +1 -0
  47. package/lib/module/controllers.js +4 -0
  48. package/lib/module/controllers.js.map +1 -0
  49. package/lib/module/controllers.native.js +89 -0
  50. package/lib/module/controllers.native.js.map +1 -0
  51. package/lib/module/geometry.js +180 -30
  52. package/lib/module/geometry.js.map +1 -1
  53. package/lib/module/groupTypes.js +4 -0
  54. package/lib/module/groupTypes.js.map +1 -0
  55. package/lib/module/groups.android.js +4 -0
  56. package/lib/module/groups.android.js.map +1 -0
  57. package/lib/module/groups.ios.js +4 -0
  58. package/lib/module/groups.ios.js.map +1 -0
  59. package/lib/module/groups.js +4 -0
  60. package/lib/module/groups.js.map +1 -0
  61. package/lib/module/groups.native.js +399 -0
  62. package/lib/module/groups.native.js.map +1 -0
  63. package/lib/module/ids.js +8 -0
  64. package/lib/module/ids.js.map +1 -0
  65. package/lib/module/index.js +4 -3
  66. package/lib/module/index.js.map +1 -1
  67. package/lib/module/nativeCompletion.js +37 -16
  68. package/lib/module/nativeCompletion.js.map +1 -1
  69. package/lib/module/presentationCodec.js +81 -0
  70. package/lib/module/presentationCodec.js.map +1 -0
  71. package/lib/typescript/src/NativeSmoothClipModule.d.ts +20 -4
  72. package/lib/typescript/src/NativeSmoothClipModule.d.ts.map +1 -1
  73. package/lib/typescript/src/SmoothClipView.d.ts +2 -10
  74. package/lib/typescript/src/SmoothClipView.d.ts.map +1 -1
  75. package/lib/typescript/src/SmoothClipView.ios.d.ts +139 -4
  76. package/lib/typescript/src/SmoothClipView.ios.d.ts.map +1 -1
  77. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts +16 -3
  78. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts.map +1 -1
  79. package/lib/typescript/src/capabilities.d.ts +3 -0
  80. package/lib/typescript/src/capabilities.d.ts.map +1 -0
  81. package/lib/typescript/src/capabilities.native.d.ts +3 -0
  82. package/lib/typescript/src/capabilities.native.d.ts.map +1 -0
  83. package/lib/typescript/src/capabilityTypes.d.ts +4 -0
  84. package/lib/typescript/src/capabilityTypes.d.ts.map +1 -0
  85. package/lib/typescript/src/controllerInternals.d.ts +14 -0
  86. package/lib/typescript/src/controllerInternals.d.ts.map +1 -0
  87. package/lib/typescript/src/controllerLifecycle.d.ts +3 -0
  88. package/lib/typescript/src/controllerLifecycle.d.ts.map +1 -0
  89. package/lib/typescript/src/controllerTypes.d.ts +62 -0
  90. package/lib/typescript/src/controllerTypes.d.ts.map +1 -0
  91. package/lib/typescript/src/controllers.android.d.ts +2 -0
  92. package/lib/typescript/src/controllers.android.d.ts.map +1 -0
  93. package/lib/typescript/src/controllers.d.ts +2 -0
  94. package/lib/typescript/src/controllers.d.ts.map +1 -0
  95. package/lib/typescript/src/controllers.ios.d.ts +2 -0
  96. package/lib/typescript/src/controllers.ios.d.ts.map +1 -0
  97. package/lib/typescript/src/controllers.native.d.ts +3 -0
  98. package/lib/typescript/src/controllers.native.d.ts.map +1 -0
  99. package/lib/typescript/src/geometry.d.ts +49 -5
  100. package/lib/typescript/src/geometry.d.ts.map +1 -1
  101. package/lib/typescript/src/groupTypes.d.ts +31 -0
  102. package/lib/typescript/src/groupTypes.d.ts.map +1 -0
  103. package/lib/typescript/src/groups.android.d.ts +2 -0
  104. package/lib/typescript/src/groups.android.d.ts.map +1 -0
  105. package/lib/typescript/src/groups.d.ts +2 -0
  106. package/lib/typescript/src/groups.d.ts.map +1 -0
  107. package/lib/typescript/src/groups.ios.d.ts +2 -0
  108. package/lib/typescript/src/groups.ios.d.ts.map +1 -0
  109. package/lib/typescript/src/groups.native.d.ts +3 -0
  110. package/lib/typescript/src/groups.native.d.ts.map +1 -0
  111. package/lib/typescript/src/ids.d.ts +2 -0
  112. package/lib/typescript/src/ids.d.ts.map +1 -0
  113. package/lib/typescript/src/index.d.ts +8 -5
  114. package/lib/typescript/src/index.d.ts.map +1 -1
  115. package/lib/typescript/src/nativeCompletion.d.ts +16 -6
  116. package/lib/typescript/src/nativeCompletion.d.ts.map +1 -1
  117. package/lib/typescript/src/presentationCodec.d.ts +10 -0
  118. package/lib/typescript/src/presentationCodec.d.ts.map +1 -0
  119. package/package.json +17 -13
  120. package/src/NativeSmoothClipModule.ts +80 -56
  121. package/src/SmoothClipView.ios.tsx +142 -16
  122. package/src/SmoothClipView.tsx +6 -76
  123. package/src/SmoothClipViewNativeComponent.ts +32 -12
  124. package/src/capabilities.native.ts +19 -0
  125. package/src/capabilities.ts +2 -0
  126. package/src/capabilityTypes.ts +3 -0
  127. package/src/controllerInternals.ts +52 -0
  128. package/src/controllerLifecycle.ts +6 -0
  129. package/src/controllerTypes.ts +87 -0
  130. package/src/controllers.android.ts +1 -0
  131. package/src/controllers.ios.ts +1 -0
  132. package/src/controllers.native.ts +104 -0
  133. package/src/controllers.ts +1 -0
  134. package/src/geometry.ts +293 -45
  135. package/src/groupTypes.ts +53 -0
  136. package/src/groups.android.ts +1 -0
  137. package/src/groups.ios.ts +1 -0
  138. package/src/groups.native.ts +604 -0
  139. package/src/groups.ts +1 -0
  140. package/src/ids.ts +6 -0
  141. package/src/index.ts +32 -12
  142. package/src/nativeCompletion.ts +67 -32
  143. package/src/presentationCodec.ts +134 -0
  144. package/lib/module/SmoothClipView.web.js +0 -54
  145. package/lib/module/SmoothClipView.web.js.map +0 -1
  146. package/lib/module/driverState.js +0 -110
  147. package/lib/module/driverState.js.map +0 -1
  148. package/lib/module/driverTypes.js +0 -4
  149. package/lib/module/driverTypes.js.map +0 -1
  150. package/lib/module/drivers.android.js +0 -6
  151. package/lib/module/drivers.android.js.map +0 -1
  152. package/lib/module/drivers.ios.js +0 -6
  153. package/lib/module/drivers.ios.js.map +0 -1
  154. package/lib/module/drivers.js +0 -284
  155. package/lib/module/drivers.js.map +0 -1
  156. package/lib/module/drivers.native.js +0 -556
  157. package/lib/module/drivers.native.js.map +0 -1
  158. package/lib/module/index.web.js +0 -8
  159. package/lib/module/index.web.js.map +0 -1
  160. package/lib/module/reactRequests.js +0 -56
  161. package/lib/module/reactRequests.js.map +0 -1
  162. package/lib/module/webClipPath.js +0 -25
  163. package/lib/module/webClipPath.js.map +0 -1
  164. package/lib/typescript/src/SmoothClipView.web.d.ts +0 -10
  165. package/lib/typescript/src/SmoothClipView.web.d.ts.map +0 -1
  166. package/lib/typescript/src/driverState.d.ts +0 -31
  167. package/lib/typescript/src/driverState.d.ts.map +0 -1
  168. package/lib/typescript/src/driverTypes.d.ts +0 -107
  169. package/lib/typescript/src/driverTypes.d.ts.map +0 -1
  170. package/lib/typescript/src/drivers.android.d.ts +0 -3
  171. package/lib/typescript/src/drivers.android.d.ts.map +0 -1
  172. package/lib/typescript/src/drivers.d.ts +0 -5
  173. package/lib/typescript/src/drivers.d.ts.map +0 -1
  174. package/lib/typescript/src/drivers.ios.d.ts +0 -3
  175. package/lib/typescript/src/drivers.ios.d.ts.map +0 -1
  176. package/lib/typescript/src/drivers.native.d.ts +0 -5
  177. package/lib/typescript/src/drivers.native.d.ts.map +0 -1
  178. package/lib/typescript/src/index.web.d.ts +0 -9
  179. package/lib/typescript/src/index.web.d.ts.map +0 -1
  180. package/lib/typescript/src/reactRequests.d.ts +0 -9
  181. package/lib/typescript/src/reactRequests.d.ts.map +0 -1
  182. package/lib/typescript/src/webClipPath.d.ts +0 -7
  183. package/lib/typescript/src/webClipPath.d.ts.map +0 -1
  184. package/src/SmoothClipView.web.tsx +0 -66
  185. package/src/driverState.ts +0 -158
  186. package/src/driverTypes.ts +0 -140
  187. package/src/drivers.android.ts +0 -8
  188. package/src/drivers.ios.ts +0 -8
  189. package/src/drivers.native.ts +0 -899
  190. package/src/drivers.ts +0 -427
  191. package/src/index.web.ts +0 -23
  192. package/src/reactRequests.ts +0 -76
  193. package/src/webClipPath.ts +0 -30
@@ -2,6 +2,7 @@
2
2
 
3
3
  #include <cstddef>
4
4
  #include "SmoothClipRegistry.h"
5
+ #include "SmoothClipRegistrySnapshot.h"
5
6
 
6
7
  @class SmoothClipView;
7
8
 
@@ -12,14 +13,9 @@ void registerView(
12
13
  SmoothClipView *view,
13
14
  Presentation initialPresentation);
14
15
  void unregisterView(uint64_t driverId, SmoothClipView *view);
15
- // Re-runs the mid-animation join for a registered view whose animation
16
- // install was deferred because it had no layout yet. Returns false when the
17
- // driver or its active animation no longer exists.
18
- bool joinActiveAnimation(uint64_t driverId, SmoothClipView *view);
19
16
  // Called when a registered view first becomes able to produce a visible
20
- // frame (has layout AND is attached to a window). Starts a latched animation
21
- // — rebasing its clock so no progress is burned while the view was
22
- // detached — or completes a deferred install for an already-running one.
17
+ // frame (has layout AND is attached to a window). Starts a pre-ready animation
18
+ // with its full duration so no progress is burned while the view was detached.
23
19
  // A CA animation committed while the host's layer tree is detached (e.g. a
24
20
  // transparentModal subtree before its view controller is presented) does not
25
21
  // survive the attach commit; installs must therefore wait for this signal.
@@ -0,0 +1,7 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Workspace
3
+ version = "1.0">
4
+ <FileRef
5
+ location = "self:">
6
+ </FileRef>
7
+ </Workspace>
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+ <plist version="1.0">
4
+ <dict>
5
+ <key>IDEDidComputeMac32BitWarning</key>
6
+ <true/>
7
+ </dict>
8
+ </plist>
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeSmoothClipModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAuGlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,wBAAwB,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeSmoothClipModule.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AA+HlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,wBAAwB,CAAC","ignoreList":[]}
@@ -1,34 +1,117 @@
1
1
  "use strict";
2
2
 
3
- import { getDriverState } from "./driverState.js";
3
+ /* eslint-disable no-bitwise -- color channels use packed RRGGBBAA integers */
4
+ import { forwardRef, useEffect } from 'react';
5
+ import { StyleSheet } from 'react-native';
6
+ import { getControllerRef, unwrapSmoothClipRef } from "./controllerInternals.js";
4
7
  import NativeSmoothClipView from './SmoothClipViewNativeComponent';
5
8
  import { jsx as _jsx } from "react/jsx-runtime";
6
- export function SmoothClipView({
7
- driver,
9
+ let reportedIndependentShadow = false;
10
+ const mountedControllers = new WeakMap();
11
+ function useSingleControllerHost(controller) {
12
+ useEffect(() => {
13
+ const mounted = mountedControllers.get(controller) ?? 0;
14
+ if (__DEV__ && mounted > 0) {
15
+ throw new Error('[SmoothClipView] One controller cannot drive two mounted hosts. Create one controller per SmoothClipView.');
16
+ }
17
+ mountedControllers.set(controller, mounted + 1);
18
+ return () => {
19
+ const current = mountedControllers.get(controller) ?? 1;
20
+ if (current <= 1) mountedControllers.delete(controller);else mountedControllers.set(controller, current - 1);
21
+ };
22
+ }, [controller]);
23
+ }
24
+ function filterContainsDropShadow(filter) {
25
+ if (typeof filter === 'string') return /drop-shadow\s*\(/i.test(filter);
26
+ return Array.isArray(filter) && filter.some(entry => typeof entry === 'object' && entry !== null && 'dropShadow' in entry);
27
+ }
28
+ function removeDropShadowFilter(filter) {
29
+ if (typeof filter === 'string') {
30
+ const remaining = filter.replace(/drop-shadow\((?:[^()]|\([^()]*\))*\)/gi, '').trim();
31
+ return remaining === '' ? undefined : remaining;
32
+ }
33
+ if (Array.isArray(filter)) {
34
+ const remaining = filter.filter(entry => !(typeof entry === 'object' && entry !== null && 'dropShadow' in entry));
35
+ return remaining.length === 0 ? undefined : remaining;
36
+ }
37
+ return filter;
38
+ }
39
+
40
+ /** Prevents React Native from installing a second, aperture-independent shadow. */
41
+ export function sanitizeSmoothClipStyle(style) {
42
+ const flat = StyleSheet.flatten(style);
43
+ if (flat == null) return style;
44
+ const hasIndependentShadow = flat.boxShadow !== undefined || flat.shadowColor !== undefined || flat.shadowOffset !== undefined || flat.shadowOpacity !== undefined || flat.shadowRadius !== undefined || flat.elevation !== undefined || filterContainsDropShadow(flat.filter);
45
+ if (!hasIndependentShadow) return style;
46
+ if (__DEV__ && !reportedIndependentShadow) {
47
+ reportedIndependentShadow = true;
48
+ console.error('[SmoothClipView] Shadow style properties are not rendered on the host. ' + 'Put the shadow in SmoothClipPresentation.boxShadow so it follows the clip aperture.');
49
+ }
50
+ const sanitized = {
51
+ ...flat
52
+ };
53
+ delete sanitized.boxShadow;
54
+ delete sanitized.shadowColor;
55
+ delete sanitized.shadowOffset;
56
+ delete sanitized.shadowOpacity;
57
+ delete sanitized.shadowRadius;
58
+ delete sanitized.elevation;
59
+ if (filterContainsDropShadow(sanitized.filter)) {
60
+ const filter = removeDropShadowFilter(sanitized.filter);
61
+ if (filter === undefined) delete sanitized.filter;else sanitized.filter = filter;
62
+ }
63
+ return sanitized;
64
+ }
65
+ export function renderSmoothClipView({
66
+ controller,
8
67
  children,
68
+ style,
9
69
  ...viewProps
10
- }) {
70
+ }, forwardedRef) {
11
71
  const {
12
- driverId,
13
- initialPresentation
14
- } = getDriverState(driver);
72
+ ref,
73
+ initialFrame: canonical
74
+ } = getControllerRef(controller);
75
+ const driverId = unwrapSmoothClipRef(ref)?.id ?? 0;
15
76
  const {
16
77
  clip
17
- } = initialPresentation;
78
+ } = canonical;
79
+ const shadow = canonical.boxShadow;
80
+ const color = shadow?.color ?? 0;
18
81
  const nativeProps = {
19
82
  ...viewProps,
83
+ style: sanitizeSmoothClipStyle(style),
20
84
  driverId,
21
85
  initialClipX: clip.x,
22
86
  initialClipY: clip.y,
23
87
  initialClipWidth: clip.width,
24
88
  initialClipHeight: clip.height,
25
- initialClipRadius: clip.radius,
26
- initialContentTranslateX: initialPresentation.contentTranslateX,
27
- initialContentTranslateY: initialPresentation.contentTranslateY
89
+ initialClipTopLeftRadius: clip.topLeftRadius,
90
+ initialClipTopRightRadius: clip.topRightRadius,
91
+ initialClipBottomRightRadius: clip.bottomRightRadius,
92
+ initialClipBottomLeftRadius: clip.bottomLeftRadius,
93
+ initialClipCurve: clip.curve === 'continuous' ? 1 : 0,
94
+ initialContentTranslateX: canonical.contentTranslateX,
95
+ initialContentTranslateY: canonical.contentTranslateY,
96
+ initialContentScale: canonical.contentScale,
97
+ initialClipBoxShadowEnabled: shadow !== undefined,
98
+ initialClipBoxShadowRed: (color >>> 24 & 0xff) / 255,
99
+ initialClipBoxShadowGreen: (color >>> 16 & 0xff) / 255,
100
+ initialClipBoxShadowBlue: (color >>> 8 & 0xff) / 255,
101
+ initialClipBoxShadowAlpha: (color & 0xff) / 255,
102
+ initialClipBoxShadowOffsetX: shadow?.offsetX ?? 0,
103
+ initialClipBoxShadowOffsetY: shadow?.offsetY ?? 0,
104
+ initialClipBoxShadowBlurRadius: shadow?.blurRadius ?? 0,
105
+ initialClipBoxShadowSpreadDistance: shadow?.spreadDistance ?? 0
28
106
  };
29
107
  return /*#__PURE__*/_jsx(NativeSmoothClipView, {
108
+ ref: forwardedRef,
30
109
  ...nativeProps,
31
110
  children: children
32
111
  });
33
112
  }
113
+ export const SmoothClipView = /*#__PURE__*/forwardRef(function SmoothClipViewComponent(props, forwardedRef) {
114
+ useSingleControllerHost(props.controller);
115
+ return renderSmoothClipView(props, forwardedRef);
116
+ });
34
117
  //# sourceMappingURL=SmoothClipView.ios.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["getDriverState","NativeSmoothClipView","jsx","_jsx","SmoothClipView","driver","children","viewProps","driverId","initialPresentation","clip","nativeProps","initialClipX","x","initialClipY","y","initialClipWidth","width","initialClipHeight","height","initialClipRadius","radius","initialContentTranslateX","contentTranslateX","initialContentTranslateY","contentTranslateY"],"sourceRoot":"../../src","sources":["SmoothClipView.ios.tsx"],"mappings":";;AAGA,SAASA,cAAc,QAAQ,kBAAe;AAC9C,OAAOC,oBAAoB,MAEpB,iCAAiC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOzC,OAAO,SAASC,cAAcA,CAAC;EAC7BC,MAAM;EACNC,QAAQ;EACR,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAM;IAAEC,QAAQ;IAAEC;EAAoB,CAAC,GAAGT,cAAc,CAACK,MAAM,CAAC;EAChE,MAAM;IAAEK;EAAK,CAAC,GAAGD,mBAAmB;EACpC,MAAME,WAAwB,GAAG;IAC/B,GAAGJ,SAAS;IACZC,QAAQ;IACRI,YAAY,EAAEF,IAAI,CAACG,CAAC;IACpBC,YAAY,EAAEJ,IAAI,CAACK,CAAC;IACpBC,gBAAgB,EAAEN,IAAI,CAACO,KAAK;IAC5BC,iBAAiB,EAAER,IAAI,CAACS,MAAM;IAC9BC,iBAAiB,EAAEV,IAAI,CAACW,MAAM;IAC9BC,wBAAwB,EAAEb,mBAAmB,CAACc,iBAAiB;IAC/DC,wBAAwB,EAAEf,mBAAmB,CAACgB;EAChD,CAAC;EAED,oBACEtB,IAAA,CAACF,oBAAoB;IAAA,GAAKU,WAAW;IAAAL,QAAA,EAAGA;EAAQ,CAAuB,CAAC;AAE5E","ignoreList":[]}
1
+ {"version":3,"names":["forwardRef","useEffect","StyleSheet","getControllerRef","unwrapSmoothClipRef","NativeSmoothClipView","jsx","_jsx","reportedIndependentShadow","mountedControllers","WeakMap","useSingleControllerHost","controller","mounted","get","__DEV__","Error","set","current","delete","filterContainsDropShadow","filter","test","Array","isArray","some","entry","removeDropShadowFilter","remaining","replace","trim","undefined","length","sanitizeSmoothClipStyle","style","flat","flatten","hasIndependentShadow","boxShadow","shadowColor","shadowOffset","shadowOpacity","shadowRadius","elevation","console","error","sanitized","renderSmoothClipView","children","viewProps","forwardedRef","ref","initialFrame","canonical","driverId","id","clip","shadow","color","nativeProps","initialClipX","x","initialClipY","y","initialClipWidth","width","initialClipHeight","height","initialClipTopLeftRadius","topLeftRadius","initialClipTopRightRadius","topRightRadius","initialClipBottomRightRadius","bottomRightRadius","initialClipBottomLeftRadius","bottomLeftRadius","initialClipCurve","curve","initialContentTranslateX","contentTranslateX","initialContentTranslateY","contentTranslateY","initialContentScale","contentScale","initialClipBoxShadowEnabled","initialClipBoxShadowRed","initialClipBoxShadowGreen","initialClipBoxShadowBlue","initialClipBoxShadowAlpha","initialClipBoxShadowOffsetX","offsetX","initialClipBoxShadowOffsetY","offsetY","initialClipBoxShadowBlurRadius","blurRadius","initialClipBoxShadowSpreadDistance","spreadDistance","SmoothClipView","SmoothClipViewComponent","props"],"sourceRoot":"../../src","sources":["SmoothClipView.ios.tsx"],"mappings":"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","ignoreList":[]}
@@ -1,49 +1,4 @@
1
1
  "use strict";
2
2
 
3
- import { useEffect } from 'react';
4
- import Animated, { dispatchCommand, useAnimatedReaction, useAnimatedRef } from 'react-native-reanimated';
5
- import { getDriverState, registerDriverView } from "./driverState.js";
6
- import { clipPresentationEquals, isFiniteClipPresentation } from "./geometry.js";
7
- import NativeSmoothClipView from './SmoothClipViewNativeComponent';
8
- import { jsx as _jsx } from "react/jsx-runtime";
9
- const AnimatedNativeSmoothClipView = Animated.createAnimatedComponent(NativeSmoothClipView);
10
- /** Android fallback. iOS resolves SmoothClipView.ios.tsx instead. */
11
- export function SmoothClipView({
12
- driver,
13
- children,
14
- ...viewProps
15
- }) {
16
- const {
17
- driverId,
18
- initialPresentation,
19
- source
20
- } = getDriverState(driver);
21
- const {
22
- clip
23
- } = initialPresentation;
24
- useEffect(() => registerDriverView(driver), [driver]);
25
- const nativeRef = useAnimatedRef();
26
- useAnimatedReaction(() => source.value, (presentation, previousPresentation) => {
27
- if (!isFiniteClipPresentation(presentation) || clipPresentationEquals(previousPresentation, presentation)) {
28
- return;
29
- }
30
- dispatchCommand(nativeRef, 'setClipPresentation', [presentation.clip.x, presentation.clip.y, presentation.clip.width, presentation.clip.height, presentation.clip.radius, presentation.contentTranslateX, presentation.contentTranslateY]);
31
- }, [nativeRef, source]);
32
- const nativeProps = {
33
- ...viewProps,
34
- driverId,
35
- initialClipX: clip.x,
36
- initialClipY: clip.y,
37
- initialClipWidth: clip.width,
38
- initialClipHeight: clip.height,
39
- initialClipRadius: clip.radius,
40
- initialContentTranslateX: initialPresentation.contentTranslateX,
41
- initialContentTranslateY: initialPresentation.contentTranslateY
42
- };
43
- return /*#__PURE__*/_jsx(AnimatedNativeSmoothClipView, {
44
- ref: nativeRef,
45
- ...nativeProps,
46
- children: children
47
- });
48
- }
3
+ export { renderSmoothClipView, sanitizeSmoothClipStyle, SmoothClipView } from "./SmoothClipView.ios.js";
49
4
  //# sourceMappingURL=SmoothClipView.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["useEffect","Animated","dispatchCommand","useAnimatedReaction","useAnimatedRef","getDriverState","registerDriverView","clipPresentationEquals","isFiniteClipPresentation","NativeSmoothClipView","jsx","_jsx","AnimatedNativeSmoothClipView","createAnimatedComponent","SmoothClipView","driver","children","viewProps","driverId","initialPresentation","source","clip","nativeRef","value","presentation","previousPresentation","x","y","width","height","radius","contentTranslateX","contentTranslateY","nativeProps","initialClipX","initialClipY","initialClipWidth","initialClipHeight","initialClipRadius","initialContentTranslateX","initialContentTranslateY","ref"],"sourceRoot":"../../src","sources":["SmoothClipView.tsx"],"mappings":";;AACA,SAAyBA,SAAS,QAAQ,OAAO;AAEjD,OAAOC,QAAQ,IACbC,eAAe,EACfC,mBAAmB,EACnBC,cAAc,QACT,yBAAyB;AAEhC,SAASC,cAAc,EAAEC,kBAAkB,QAAQ,kBAAe;AAClE,SAASC,sBAAsB,EAAEC,wBAAwB,QAAQ,eAAY;AAC7E,OAAOC,oBAAoB,MAEpB,iCAAiC;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAEzC,MAAMC,4BAA4B,GAChCX,QAAQ,CAACY,uBAAuB,CAACJ,oBAAoB,CAAC;AAOxD;AACA,OAAO,SAASK,cAAcA,CAAC;EAC7BC,MAAM;EACNC,QAAQ;EACR,GAAGC;AACgB,CAAC,EAAE;EACtB,MAAM;IAAEC,QAAQ;IAAEC,mBAAmB;IAAEC;EAAO,CAAC,GAAGf,cAAc,CAACU,MAAM,CAAC;EACxE,MAAM;IAAEM;EAAK,CAAC,GAAGF,mBAAmB;EACpCnB,SAAS,CAAC,MAAMM,kBAAkB,CAACS,MAAM,CAAC,EAAE,CAACA,MAAM,CAAC,CAAC;EACrD,MAAMO,SAAS,GACblB,cAAc,CAAkD,CAAC;EAEnED,mBAAmB,CACjB,MAAMiB,MAAM,CAACG,KAAK,EAClB,CAACC,YAAY,EAAEC,oBAAoB,KAAK;IACtC,IACE,CAACjB,wBAAwB,CAACgB,YAAY,CAAC,IACvCjB,sBAAsB,CAACkB,oBAAoB,EAAED,YAAY,CAAC,EAC1D;MACA;IACF;IAEAtB,eAAe,CAACoB,SAAS,EAAE,qBAAqB,EAAE,CAChDE,YAAY,CAACH,IAAI,CAACK,CAAC,EACnBF,YAAY,CAACH,IAAI,CAACM,CAAC,EACnBH,YAAY,CAACH,IAAI,CAACO,KAAK,EACvBJ,YAAY,CAACH,IAAI,CAACQ,MAAM,EACxBL,YAAY,CAACH,IAAI,CAACS,MAAM,EACxBN,YAAY,CAACO,iBAAiB,EAC9BP,YAAY,CAACQ,iBAAiB,CAC/B,CAAC;EACJ,CAAC,EACD,CAACV,SAAS,EAAEF,MAAM,CACpB,CAAC;EAED,MAAMa,WAAwB,GAAG;IAC/B,GAAGhB,SAAS;IACZC,QAAQ;IACRgB,YAAY,EAAEb,IAAI,CAACK,CAAC;IACpBS,YAAY,EAAEd,IAAI,CAACM,CAAC;IACpBS,gBAAgB,EAAEf,IAAI,CAACO,KAAK;IAC5BS,iBAAiB,EAAEhB,IAAI,CAACQ,MAAM;IAC9BS,iBAAiB,EAAEjB,IAAI,CAACS,MAAM;IAC9BS,wBAAwB,EAAEpB,mBAAmB,CAACY,iBAAiB;IAC/DS,wBAAwB,EAAErB,mBAAmB,CAACa;EAChD,CAAC;EAED,oBACErB,IAAA,CAACC,4BAA4B;IAAC6B,GAAG,EAAEnB,SAAU;IAAA,GAAKW,WAAW;IAAAjB,QAAA,EAC1DA;EAAQ,CACmB,CAAC;AAEnC","ignoreList":[]}
1
+ {"version":3,"names":["renderSmoothClipView","sanitizeSmoothClipStyle","SmoothClipView"],"sourceRoot":"../../src","sources":["SmoothClipView.tsx"],"mappings":";;AAAA,SACEA,oBAAoB,EACpBC,uBAAuB,EACvBC,cAAc,QACT,yBAAsB","ignoreList":[]}
@@ -12,34 +12,54 @@ export interface NativeProps extends ViewProps {
12
12
  initialClipY: CodegenTypes.Double;
13
13
  initialClipWidth: CodegenTypes.Double;
14
14
  initialClipHeight: CodegenTypes.Double;
15
- initialClipRadius: CodegenTypes.Double;
15
+ initialClipTopLeftRadius: CodegenTypes.Double;
16
+ initialClipTopRightRadius: CodegenTypes.Double;
17
+ initialClipBottomRightRadius: CodegenTypes.Double;
18
+ initialClipBottomLeftRadius: CodegenTypes.Double;
19
+ initialClipCurve: CodegenTypes.Int32;
16
20
  initialContentTranslateX: CodegenTypes.Double;
17
21
  initialContentTranslateY: CodegenTypes.Double;
22
+ initialContentScale: CodegenTypes.Double;
23
+ initialClipBoxShadowEnabled: boolean;
24
+ initialClipBoxShadowRed: CodegenTypes.Double;
25
+ initialClipBoxShadowGreen: CodegenTypes.Double;
26
+ initialClipBoxShadowBlue: CodegenTypes.Double;
27
+ initialClipBoxShadowAlpha: CodegenTypes.Double;
28
+ initialClipBoxShadowOffsetX: CodegenTypes.Double;
29
+ initialClipBoxShadowOffsetY: CodegenTypes.Double;
30
+ initialClipBoxShadowBlurRadius: CodegenTypes.Double;
31
+ initialClipBoxShadowSpreadDistance: CodegenTypes.Double;
18
32
  }
19
33
 
20
34
  interface NativeCommands {
21
- setClipGeometry: (
22
- viewRef: React.ElementRef<HostComponent<NativeProps>>,
23
- x: CodegenTypes.Double,
24
- y: CodegenTypes.Double,
25
- width: CodegenTypes.Double,
26
- height: CodegenTypes.Double,
27
- radius: CodegenTypes.Double
28
- ) => void;
29
35
  setClipPresentation: (
30
36
  viewRef: React.ElementRef<HostComponent<NativeProps>>,
31
37
  x: CodegenTypes.Double,
32
38
  y: CodegenTypes.Double,
33
39
  width: CodegenTypes.Double,
34
40
  height: CodegenTypes.Double,
35
- radius: CodegenTypes.Double,
41
+ topLeftRadius: CodegenTypes.Double,
42
+ topRightRadius: CodegenTypes.Double,
43
+ bottomRightRadius: CodegenTypes.Double,
44
+ bottomLeftRadius: CodegenTypes.Double,
45
+ curveCode: CodegenTypes.Int32,
36
46
  contentTranslateX: CodegenTypes.Double,
37
- contentTranslateY: CodegenTypes.Double
47
+ contentTranslateY: CodegenTypes.Double,
48
+ contentScale: CodegenTypes.Double,
49
+ shadowEnabled: boolean,
50
+ shadowRed: CodegenTypes.Double,
51
+ shadowGreen: CodegenTypes.Double,
52
+ shadowBlue: CodegenTypes.Double,
53
+ shadowAlpha: CodegenTypes.Double,
54
+ shadowOffsetX: CodegenTypes.Double,
55
+ shadowOffsetY: CodegenTypes.Double,
56
+ shadowBlurRadius: CodegenTypes.Double,
57
+ shadowSpreadDistance: CodegenTypes.Double
38
58
  ) => void;
39
59
  }
40
60
 
41
61
  export const Commands: NativeCommands = codegenNativeCommands<NativeCommands>({
42
- supportedCommands: ['setClipGeometry', 'setClipPresentation'],
62
+ supportedCommands: ['setClipPresentation'],
43
63
  });
44
64
 
45
65
  export default codegenNativeComponent<NativeProps>(
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { getSmoothClipCapabilities } from "./capabilities.native.js";
4
+ //# sourceMappingURL=capabilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getSmoothClipCapabilities"],"sourceRoot":"../../src","sources":["capabilities.ts"],"mappings":";;AAAA,SAASA,yBAAyB,QAAQ,0BAAuB","ignoreList":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ import NativeSmoothClipModule from './smoothClipNative';
4
+ let cached;
5
+ export function getSmoothClipCapabilities() {
6
+ if (cached) return cached;
7
+ let autonomousComplexPathAnimation = false;
8
+ try {
9
+ autonomousComplexPathAnimation = NativeSmoothClipModule.supportsAutonomousComplexPathAnimation() === true;
10
+ } catch {
11
+ autonomousComplexPathAnimation = false;
12
+ }
13
+ cached = {
14
+ autonomousComplexPathAnimation
15
+ };
16
+ return cached;
17
+ }
18
+ //# sourceMappingURL=capabilities.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeSmoothClipModule","cached","getSmoothClipCapabilities","autonomousComplexPathAnimation","supportsAutonomousComplexPathAnimation"],"sourceRoot":"../../src","sources":["capabilities.native.ts"],"mappings":";;AAAA,OAAOA,sBAAsB,MAAM,oBAAoB;AAGvD,IAAIC,MAA0C;AAE9C,OAAO,SAASC,yBAAyBA,CAAA,EAA2B;EAClE,IAAID,MAAM,EAAE,OAAOA,MAAM;EACzB,IAAIE,8BAA8B,GAAG,KAAK;EAC1C,IAAI;IACFA,8BAA8B,GAC5BH,sBAAsB,CAACI,sCAAsC,CAAC,CAAC,KAAK,IAAI;EAC5E,CAAC,CAAC,MAAM;IACND,8BAA8B,GAAG,KAAK;EACxC;EACAF,MAAM,GAAG;IACPE;EACF,CAAC;EACD,OAAOF,MAAM;AACf","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ //# sourceMappingURL=capabilityTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["capabilityTypes.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ const controllers = new WeakMap();
4
+ export function setControllerRef(controller, value) {
5
+ controllers.set(controller, value);
6
+ }
7
+ export function getControllerRef(controller) {
8
+ const value = controllers.get(controller);
9
+ if (!value) {
10
+ throw new Error('[SmoothClipView] Controllers must be created by useSmoothClipController.');
11
+ }
12
+ return value;
13
+ }
14
+ export function unwrapSmoothClipRef(ref) {
15
+ 'worklet';
16
+
17
+ const internal = ref;
18
+ if (internal === undefined || !Number.isSafeInteger(internal.id) || internal.id <= 0) {
19
+ return undefined;
20
+ }
21
+ return internal;
22
+ }
23
+ export function createSmoothClipRef(id) {
24
+ return {
25
+ id
26
+ };
27
+ }
28
+ //# sourceMappingURL=controllerInternals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["controllers","WeakMap","setControllerRef","controller","value","set","getControllerRef","get","Error","unwrapSmoothClipRef","ref","internal","undefined","Number","isSafeInteger","id","createSmoothClipRef"],"sourceRoot":"../../src","sources":["controllerInternals.ts"],"mappings":";;AAUA,MAAMA,WAAW,GAAG,IAAIC,OAAO,CAG7B,CAAC;AAEH,OAAO,SAASC,gBAAgBA,CAC9BC,UAAgC,EAChCC,KAAmC,EAC7B;EACNJ,WAAW,CAACK,GAAG,CAACF,UAAU,EAAEC,KAAK,CAAC;AACpC;AAEA,OAAO,SAASE,gBAAgBA,CAC9BH,UAAgC,EACF;EAC9B,MAAMC,KAAK,GAAGJ,WAAW,CAACO,GAAG,CAACJ,UAAU,CAAC;EACzC,IAAI,CAACC,KAAK,EAAE;IACV,MAAM,IAAII,KAAK,CACb,0EACF,CAAC;EACH;EACA,OAAOJ,KAAK;AACd;AAEA,OAAO,SAASK,mBAAmBA,CACjCC,GAA8B,EACK;EACnC,SAAS;;EACT,MAAMC,QAAQ,GAAGD,GAAwC;EACzD,IACEC,QAAQ,KAAKC,SAAS,IACtB,CAACC,MAAM,CAACC,aAAa,CAACH,QAAQ,CAACI,EAAE,CAAC,IAClCJ,QAAQ,CAACI,EAAE,IAAI,CAAC,EAChB;IACA,OAAOH,SAAS;EAClB;EACA,OAAOD,QAAQ;AACjB;AAEA,OAAO,SAASK,mBAAmBA,CAACD,EAAU,EAAiB;EAC7D,OAAO;IAAEA;EAAG,CAAC;AACf","ignoreList":[]}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ import NativeSmoothClipModule from "./NativeSmoothClipModule.js";
4
+
5
+ /** Destroy from the React Native runtime; native forwards to the UI thread. */
6
+ export function destroyController(controllerId) {
7
+ NativeSmoothClipModule.destroyDriver(controllerId);
8
+ }
9
+ //# sourceMappingURL=controllerLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["NativeSmoothClipModule","destroyController","controllerId","destroyDriver"],"sourceRoot":"../../src","sources":["controllerLifecycle.ts"],"mappings":";;AAAA,OAAOA,sBAAsB,MAAM,6BAA0B;;AAE7D;AACA,OAAO,SAASC,iBAAiBA,CAACC,YAAoB,EAAQ;EAC5DF,sBAAsB,CAACG,aAAa,CAACD,YAAY,CAAC;AACpD","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export {};
4
+ //# sourceMappingURL=controllerTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sourceRoot":"../../src","sources":["controllerTypes.ts"],"mappings":"","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { useSmoothClipController } from "./controllers.native.js";
4
+ //# sourceMappingURL=controllers.android.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useSmoothClipController"],"sourceRoot":"../../src","sources":["controllers.android.ts"],"mappings":";;AAAA,SAASA,uBAAuB,QAAQ,yBAAsB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { useSmoothClipController } from "./controllers.native.js";
4
+ //# sourceMappingURL=controllers.ios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useSmoothClipController"],"sourceRoot":"../../src","sources":["controllers.ios.ts"],"mappings":";;AAAA,SAASA,uBAAuB,QAAQ,yBAAsB","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+
3
+ export { useSmoothClipController } from "./controllers.native.js";
4
+ //# sourceMappingURL=controllers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useSmoothClipController"],"sourceRoot":"../../src","sources":["controllers.ts"],"mappings":";;AAAA,SAASA,uBAAuB,QAAQ,yBAAsB","ignoreList":[]}
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+
3
+ import { useEffect, useRef } from 'react';
4
+ import { scheduleOnUI } from 'react-native-worklets';
5
+ import { createSmoothClipRef, setControllerRef } from "./controllerInternals.js";
6
+ import { destroyController } from "./controllerLifecycle.js";
7
+ import { allocateSmoothClipId } from "./ids.js";
8
+ import { canonicalizeClipPresentation, createClipPresentation } from "./geometry.js";
9
+ import { useSmoothClipGroup } from "./groups.native.js";
10
+ import { presentationPacket } from "./presentationCodec.js";
11
+ import NativeSmoothClipModule from './smoothClipNative';
12
+ const setClipPresentationHostFunction = NativeSmoothClipModule.setClipPresentation;
13
+ export function useSmoothClipController(initialValue, options = {}) {
14
+ // A controller is intentionally a one-member transaction group. This keeps
15
+ // validation, native dispatch, cancellation, completion, and lifecycle races
16
+ // on the same path as multi-member transitions.
17
+ const group = useSmoothClipGroup(options);
18
+ const initialRequested = 'clip' in initialValue ? initialValue : createClipPresentation(initialValue);
19
+ const canonicalInitial = canonicalizeClipPresentation(initialRequested);
20
+ if (canonicalInitial === null) {
21
+ throw new Error('[SmoothClipView] Initial presentation must be finite.');
22
+ }
23
+ const initialFrameRef = useRef(null);
24
+ initialFrameRef.current ??= canonicalInitial;
25
+ const initialFrame = initialFrameRef.current;
26
+ const idRef = useRef(0);
27
+ const controllerRef = useRef(null);
28
+ if (idRef.current === 0) idRef.current = allocateSmoothClipId();
29
+ const controllerId = idRef.current;
30
+ if (controllerRef.current === null) {
31
+ const ref = createSmoothClipRef(controllerId);
32
+ const controller = {
33
+ ref,
34
+ ui: {
35
+ beginInteraction() {
36
+ 'worklet';
37
+
38
+ return group.ui.beginInteraction([ref])[0]?.frame ?? initialFrame;
39
+ },
40
+ setFrame(frame) {
41
+ 'worklet';
42
+
43
+ group.ui.setFrames([{
44
+ clip: ref,
45
+ frame
46
+ }]);
47
+ },
48
+ animateTo(target, animation, completionTag = 0) {
49
+ 'worklet';
50
+
51
+ return group.ui.animateTo([{
52
+ clip: ref,
53
+ target
54
+ }], animation, completionTag);
55
+ },
56
+ cancel(run) {
57
+ 'worklet';
58
+
59
+ return group.ui.cancel(run)[0]?.frame ?? initialFrame;
60
+ }
61
+ },
62
+ react: {
63
+ animateTo(target, animation) {
64
+ return group.react.animateTo([{
65
+ clip: ref,
66
+ target
67
+ }], animation);
68
+ }
69
+ }
70
+ };
71
+ setControllerRef(controller, {
72
+ ref,
73
+ initialFrame
74
+ });
75
+ controllerRef.current = controller;
76
+ }
77
+ useEffect(() => {
78
+ scheduleOnUI((id, frame) => {
79
+ 'worklet';
80
+
81
+ setClipPresentationHostFunction(id, presentationPacket(frame), true, false);
82
+ }, controllerId, initialFrame);
83
+ return () => {
84
+ destroyController(controllerId);
85
+ };
86
+ }, [controllerId, initialFrame]);
87
+ return controllerRef.current;
88
+ }
89
+ //# sourceMappingURL=controllers.native.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useEffect","useRef","scheduleOnUI","createSmoothClipRef","setControllerRef","destroyController","allocateSmoothClipId","canonicalizeClipPresentation","createClipPresentation","useSmoothClipGroup","presentationPacket","NativeSmoothClipModule","setClipPresentationHostFunction","setClipPresentation","useSmoothClipController","initialValue","options","group","initialRequested","canonicalInitial","Error","initialFrameRef","current","initialFrame","idRef","controllerRef","controllerId","ref","controller","ui","beginInteraction","frame","setFrame","setFrames","clip","animateTo","target","animation","completionTag","cancel","run","react","id"],"sourceRoot":"../../src","sources":["controllers.native.ts"],"mappings":"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","ignoreList":[]}