react-native-smooth-clip-view 0.2.9 → 0.3.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 (130) hide show
  1. package/README.md +60 -21
  2. package/android/build.gradle +6 -2
  3. package/android/proguard-rules.pro +3 -3
  4. package/android/src/main/cpp/SmoothClipAndroid.h +10 -0
  5. package/android/src/main/cpp/SmoothClipBindings.cpp +890 -4
  6. package/android/src/main/cpp/SmoothClipRegistry.cpp +1056 -44
  7. package/android/src/main/java/com/smoothclipview/ClipGeometryNormalizer.kt +265 -0
  8. package/android/src/main/java/com/smoothclipview/SmoothClipBindings.kt +21 -0
  9. package/android/src/main/java/com/smoothclipview/SmoothClipModule.kt +283 -0
  10. package/android/src/main/java/com/smoothclipview/SmoothClipView.kt +371 -18
  11. package/android/src/main/java/com/smoothclipview/SmoothClipViewManager.kt +138 -24
  12. package/cpp/SmoothClipAnimationCurve.h +151 -122
  13. package/cpp/SmoothClipRegistry.h +95 -3
  14. package/cpp/SmoothClipSharedGeometry.h +146 -7
  15. package/cpp/SmoothClipVelocityTracker.h +13 -9
  16. package/ios/SmoothClipGeometry.h +184 -6
  17. package/ios/SmoothClipRegistry.mm +1028 -22
  18. package/ios/SmoothClipRegistrySnapshot.h +13 -0
  19. package/ios/SmoothClipTurboModule.cpp +857 -2
  20. package/ios/SmoothClipTurboModule.h +310 -0
  21. package/ios/SmoothClipView.mm +714 -183
  22. package/ios/SmoothClipViewRegistry.h +1 -0
  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 +22 -6
  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 +27 -1
  31. package/lib/module/capabilities.js +4 -0
  32. package/lib/module/capabilities.js.map +1 -0
  33. package/lib/module/capabilities.native.js +36 -0
  34. package/lib/module/capabilities.native.js.map +1 -0
  35. package/lib/module/capabilityTypes.js +11 -0
  36. package/lib/module/capabilityTypes.js.map +1 -0
  37. package/lib/module/driverState.js +0 -28
  38. package/lib/module/driverState.js.map +1 -1
  39. package/lib/module/drivers.js +1 -281
  40. package/lib/module/drivers.js.map +1 -1
  41. package/lib/module/drivers.native.js +263 -63
  42. package/lib/module/drivers.native.js.map +1 -1
  43. package/lib/module/geometry.js +147 -17
  44. package/lib/module/geometry.js.map +1 -1
  45. package/lib/module/groupDriverTypes.js +4 -0
  46. package/lib/module/groupDriverTypes.js.map +1 -0
  47. package/lib/module/groupDrivers.android.js +4 -0
  48. package/lib/module/groupDrivers.android.js.map +1 -0
  49. package/lib/module/groupDrivers.ios.js +4 -0
  50. package/lib/module/groupDrivers.ios.js.map +1 -0
  51. package/lib/module/groupDrivers.js +4 -0
  52. package/lib/module/groupDrivers.js.map +1 -0
  53. package/lib/module/groupDrivers.native.js +799 -0
  54. package/lib/module/groupDrivers.native.js.map +1 -0
  55. package/lib/module/index.js +3 -2
  56. package/lib/module/index.js.map +1 -1
  57. package/lib/module/presentationProtocol.js +15 -0
  58. package/lib/module/presentationProtocol.js.map +1 -0
  59. package/lib/typescript/src/NativeSmoothClipModule.d.ts +25 -0
  60. package/lib/typescript/src/NativeSmoothClipModule.d.ts.map +1 -1
  61. package/lib/typescript/src/SmoothClipView.d.ts +2 -10
  62. package/lib/typescript/src/SmoothClipView.d.ts.map +1 -1
  63. package/lib/typescript/src/SmoothClipView.ios.d.ts +133 -2
  64. package/lib/typescript/src/SmoothClipView.ios.d.ts.map +1 -1
  65. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts +8 -0
  66. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts.map +1 -1
  67. package/lib/typescript/src/capabilities.d.ts +3 -0
  68. package/lib/typescript/src/capabilities.d.ts.map +1 -0
  69. package/lib/typescript/src/capabilities.native.d.ts +3 -0
  70. package/lib/typescript/src/capabilities.native.d.ts.map +1 -0
  71. package/lib/typescript/src/capabilityTypes.d.ts +10 -0
  72. package/lib/typescript/src/capabilityTypes.d.ts.map +1 -0
  73. package/lib/typescript/src/driverState.d.ts +1 -6
  74. package/lib/typescript/src/driverState.d.ts.map +1 -1
  75. package/lib/typescript/src/driverTypes.d.ts +25 -11
  76. package/lib/typescript/src/driverTypes.d.ts.map +1 -1
  77. package/lib/typescript/src/drivers.d.ts +2 -4
  78. package/lib/typescript/src/drivers.d.ts.map +1 -1
  79. package/lib/typescript/src/drivers.native.d.ts.map +1 -1
  80. package/lib/typescript/src/geometry.d.ts +36 -2
  81. package/lib/typescript/src/geometry.d.ts.map +1 -1
  82. package/lib/typescript/src/groupDriverTypes.d.ts +66 -0
  83. package/lib/typescript/src/groupDriverTypes.d.ts.map +1 -0
  84. package/lib/typescript/src/groupDrivers.android.d.ts +2 -0
  85. package/lib/typescript/src/groupDrivers.android.d.ts.map +1 -0
  86. package/lib/typescript/src/groupDrivers.d.ts +2 -0
  87. package/lib/typescript/src/groupDrivers.d.ts.map +1 -0
  88. package/lib/typescript/src/groupDrivers.ios.d.ts +2 -0
  89. package/lib/typescript/src/groupDrivers.ios.d.ts.map +1 -0
  90. package/lib/typescript/src/groupDrivers.native.d.ts +4 -0
  91. package/lib/typescript/src/groupDrivers.native.d.ts.map +1 -0
  92. package/lib/typescript/src/index.d.ts +6 -3
  93. package/lib/typescript/src/index.d.ts.map +1 -1
  94. package/lib/typescript/src/presentationProtocol.d.ts +4 -0
  95. package/lib/typescript/src/presentationProtocol.d.ts.map +1 -0
  96. package/package.json +10 -11
  97. package/src/NativeSmoothClipModule.ts +275 -0
  98. package/src/SmoothClipView.ios.tsx +30 -11
  99. package/src/SmoothClipView.tsx +2 -76
  100. package/src/SmoothClipViewNativeComponent.ts +27 -1
  101. package/src/capabilities.native.ts +69 -0
  102. package/src/capabilities.ts +2 -0
  103. package/src/capabilityTypes.ts +17 -0
  104. package/src/driverState.ts +1 -41
  105. package/src/driverTypes.ts +42 -11
  106. package/src/drivers.native.ts +824 -124
  107. package/src/drivers.ts +2 -423
  108. package/src/geometry.ts +231 -27
  109. package/src/groupDriverTypes.ts +117 -0
  110. package/src/groupDrivers.android.ts +1 -0
  111. package/src/groupDrivers.ios.ts +1 -0
  112. package/src/groupDrivers.native.ts +1189 -0
  113. package/src/groupDrivers.ts +1 -0
  114. package/src/index.ts +30 -2
  115. package/src/presentationProtocol.ts +28 -0
  116. package/lib/module/SmoothClipView.web.js +0 -54
  117. package/lib/module/SmoothClipView.web.js.map +0 -1
  118. package/lib/module/index.web.js +0 -8
  119. package/lib/module/index.web.js.map +0 -1
  120. package/lib/module/webClipPath.js +0 -25
  121. package/lib/module/webClipPath.js.map +0 -1
  122. package/lib/typescript/src/SmoothClipView.web.d.ts +0 -10
  123. package/lib/typescript/src/SmoothClipView.web.d.ts.map +0 -1
  124. package/lib/typescript/src/index.web.d.ts +0 -9
  125. package/lib/typescript/src/index.web.d.ts.map +0 -1
  126. package/lib/typescript/src/webClipPath.d.ts +0 -7
  127. package/lib/typescript/src/webClipPath.d.ts.map +0 -1
  128. package/src/SmoothClipView.web.tsx +0 -66
  129. package/src/index.web.ts +0 -23
  130. package/src/webClipPath.ts +0 -30
@@ -1,5 +1,5 @@
1
1
  import type { SharedValue } from 'react-native-reanimated';
2
- import type { SmoothClipPresentation } from './geometry.js';
2
+ import type { CanonicalSmoothClipPresentation, SmoothClipPresentation } from './geometry.js';
3
3
  export type ClipReduceMotion = 'system' | 'always' | 'never';
4
4
  /** Options shared by every animation kind. */
5
5
  type ClipAnimationBase = Readonly<{
@@ -11,12 +11,11 @@ type ClipAnimationBase = Readonly<{
11
11
  * reached native — a gated per-frame reaction may not have flushed it.
12
12
  * Also re-grabs from a running animation (which an implicit interactive
13
13
  * start would silently skip). Non-finite `from` rejects the whole call.
14
- * On the native drivers `driver.presentation.value` is not written from
15
- * `from` (it stays stale until success sets it to the target); the web
16
- * fallback does write it — its presentation SharedValue is the render
17
- * channel itself. Against a held pending-animation latch, explicit `from`
18
- * is newer intent: the fused write cancels that latch once unfinished,
19
- * applies `from`, and starts the replacement from that native value.
14
+ * `driver.presentation.value` is not written from `from`; it stays stale
15
+ * until success sets it to the target. Against a held pending-animation
16
+ * latch, explicit `from` is newer intent: the fused write cancels that latch
17
+ * once unfinished, applies `from`, and starts the replacement from that
18
+ * native value.
20
19
  *
21
20
  * Keyframes interpolate absolutely, so pass `frames[0].presentation` —
22
21
  * the seed renders it before the first animation frame, making the
@@ -73,7 +72,7 @@ export type SmoothClipDriverOptions = Readonly<{
73
72
  velocityTracking?: boolean;
74
73
  }>;
75
74
  export type SmoothClipUIControls = Readonly<{
76
- beginInteraction(): SmoothClipPresentation;
75
+ beginInteraction(): CanonicalSmoothClipPresentation;
77
76
  set(presentation: SmoothClipPresentation): void;
78
77
  /**
79
78
  * Per-frame hot path: writes geometry straight to native without touching
@@ -88,20 +87,35 @@ export type SmoothClipUIControls = Readonly<{
88
87
  * this call and the handoff into one.
89
88
  */
90
89
  setScalars(x: number, y: number, width: number, height: number, radius: number, contentTranslateX: number, contentTranslateY: number): void;
90
+ /**
91
+ * V2 per-frame hot path. Curve code is 0 for circular and 1 for continuous;
92
+ * invalid codes reject the complete write.
93
+ */
94
+ setPresentationScalars(x: number, y: number, width: number, height: number, topLeftRadius: number, topRightRadius: number, bottomRightRadius: number, bottomLeftRadius: number, curveCode: number, contentTranslateX: number, contentTranslateY: number, contentScale: number): void;
91
95
  animateTo(presentation: SmoothClipPresentation, animation: SmoothClipAnimation): number;
92
- cancel(animationId?: number, behavior?: 'current' | 'target'): SmoothClipPresentation;
96
+ cancel(animationId?: number, behavior?: 'current' | 'target'): CanonicalSmoothClipPresentation;
93
97
  }>;
94
98
  export type SmoothClipReactControls = Readonly<{
95
- beginInteraction(): Promise<SmoothClipPresentation>;
99
+ beginInteraction(): Promise<CanonicalSmoothClipPresentation>;
96
100
  set(presentation: SmoothClipPresentation): Promise<void>;
97
101
  animateTo(presentation: SmoothClipPresentation, animation: SmoothClipAnimation): Promise<number>;
98
- cancel(animationId?: number, behavior?: 'current' | 'target'): Promise<SmoothClipPresentation>;
102
+ cancel(animationId?: number, behavior?: 'current' | 'target'): Promise<CanonicalSmoothClipPresentation>;
103
+ }>;
104
+ /** @internal Worklet-serializable driver identity used by atomic groups. */
105
+ export type SmoothClipDriverHandle = Readonly<{
106
+ driverId: number;
107
+ presentation: SharedValue<SmoothClipPresentation>;
108
+ ownership: SharedValue<number>;
109
+ activeAnimationId: SharedValue<number>;
110
+ disposed: SharedValue<number>;
99
111
  }>;
100
112
  export type SmoothClipDriver = Readonly<{
101
113
  kind: 'hybrid';
102
114
  presentation: SharedValue<SmoothClipPresentation>;
103
115
  ui: SmoothClipUIControls;
104
116
  react: SmoothClipReactControls;
117
+ /** @internal Do not read or mutate directly. */
118
+ __smoothClipHandle?: SmoothClipDriverHandle;
105
119
  }>;
106
120
  export {};
107
121
  //# sourceMappingURL=driverTypes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"driverTypes.d.ts","sourceRoot":"","sources":["../../../src/driverTypes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"driverTypes.d.ts","sourceRoot":"","sources":["../../../src/driverTypes.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- import type { KeyframedClipAnimation, SmoothClipDriver, SmoothClipDriverOptions, SpringClipAnimation, TimingClipAnimation } from './driverTypes.js';
2
- import { type ClipGeometry, type SmoothClipPresentation } from './geometry.js';
3
- export declare function useSmoothClipDriver(initialValue: ClipGeometry | SmoothClipPresentation, options?: SmoothClipDriverOptions): SmoothClipDriver;
4
- export type { KeyframedClipAnimation, SpringClipAnimation, TimingClipAnimation, };
1
+ export { useSmoothClipDriver } from './drivers.native.js';
2
+ export type { KeyframedClipAnimation, SpringClipAnimation, TimingClipAnimation, } from './drivers.native.js';
5
3
  //# sourceMappingURL=drivers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../../../src/drivers.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,sBAAsB,EAEtB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,kBAAe,CAAC;AAYvB,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC5B,MAAM,eAAY,CAAC;AA6FpB,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,GAAG,sBAAsB,EACnD,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CA+RlB;AAED,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"drivers.d.ts","sourceRoot":"","sources":["../../../src/drivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAkB,CAAC;AACvD,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,qBAAkB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"drivers.native.d.ts","sourceRoot":"","sources":["../../../src/drivers.native.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,sBAAsB,EAEtB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,kBAAe,CAAC;AAavB,OAAO,EAIL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC5B,MAAM,eAAY,CAAC;AAuMpB,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,GAAG,sBAAsB,EACnD,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CA6oBlB;AAED,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,CAAC"}
1
+ {"version":3,"file":"drivers.native.d.ts","sourceRoot":"","sources":["../../../src/drivers.native.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,sBAAsB,EAEtB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACpB,MAAM,kBAAe,CAAC;AAavB,OAAO,EAML,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC5B,MAAM,eAAY,CAAC;AAyWpB,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,YAAY,GAAG,sBAAsB,EACnD,OAAO,GAAE,uBAA4B,GACpC,gBAAgB,CAqqClB;AAED,YAAY,EACV,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GACpB,CAAC"}
@@ -1,9 +1,29 @@
1
+ export type ClipCurve = 'circular' | 'continuous';
1
2
  export type ClipGeometry = Readonly<{
2
3
  x: number;
3
4
  y: number;
4
5
  width: number;
5
6
  height: number;
7
+ /** Default for every corner without an explicit override. */
6
8
  radius: number;
9
+ topLeftRadius?: number;
10
+ topRightRadius?: number;
11
+ bottomRightRadius?: number;
12
+ bottomLeftRadius?: number;
13
+ curve?: ClipCurve;
14
+ }>;
15
+ export type CanonicalClipGeometry = Readonly<{
16
+ x: number;
17
+ y: number;
18
+ width: number;
19
+ height: number;
20
+ /** Normalized legacy all-corners value retained for V1 compatibility. */
21
+ radius: number;
22
+ topLeftRadius: number;
23
+ topRightRadius: number;
24
+ bottomRightRadius: number;
25
+ bottomLeftRadius: number;
26
+ curve: ClipCurve;
7
27
  }>;
8
28
  export type ClipBounds = Readonly<{
9
29
  width: number;
@@ -13,15 +33,29 @@ export type SmoothClipPresentation = Readonly<{
13
33
  clip: ClipGeometry;
14
34
  contentTranslateX: number;
15
35
  contentTranslateY: number;
36
+ /** Defaults to 1 when omitted. */
37
+ contentScale?: number;
38
+ }>;
39
+ export type CanonicalSmoothClipPresentation = Readonly<{
40
+ clip: CanonicalClipGeometry;
41
+ contentTranslateX: number;
42
+ contentTranslateY: number;
43
+ contentScale: number;
16
44
  }>;
17
- export declare function createClipPresentation(clip: ClipGeometry, contentTranslateX?: number, contentTranslateY?: number): SmoothClipPresentation;
18
45
  export declare function isFiniteClipGeometry(geometry: ClipGeometry): boolean;
19
46
  export declare function clipGeometryEquals(first: ClipGeometry | null, second: ClipGeometry): boolean;
20
47
  export declare function isFiniteClipPresentation(presentation: SmoothClipPresentation): boolean;
21
48
  export declare function clipPresentationEquals(first: SmoothClipPresentation | null, second: SmoothClipPresentation): boolean;
49
+ /**
50
+ * Expands presentation defaults and applies CSS proportional corner scaling.
51
+ */
52
+ export declare function canonicalizeClipGeometry(geometry: ClipGeometry): CanonicalClipGeometry | null;
53
+ export declare function canonicalizeClipPresentation(presentation: SmoothClipPresentation): CanonicalSmoothClipPresentation | null;
54
+ export declare function createClipPresentation(clip: ClipGeometry, contentTranslateX?: number, contentTranslateY?: number, contentScale?: number): CanonicalSmoothClipPresentation;
22
55
  /**
23
56
  * Mirrors the native geometry contract for tests and non-native fallbacks.
24
57
  * Native remains authoritative because its bounds are the actual rendered size.
25
58
  */
26
- export declare function normalizeClipGeometry(geometry: ClipGeometry, bounds: ClipBounds): ClipGeometry | null;
59
+ export declare function normalizeClipGeometry(geometry: ClipGeometry, bounds: ClipBounds): CanonicalClipGeometry | null;
60
+ export declare function normalizeClipPresentation(presentation: SmoothClipPresentation, bounds: ClipBounds): CanonicalSmoothClipPresentation | null;
27
61
  //# sourceMappingURL=geometry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/geometry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC,CAAC;AAEH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,iBAAiB,SAAI,EACrB,iBAAiB,SAAI,GACpB,sBAAsB,CAGxB;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CASpE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,GAAG,IAAI,EAC1B,MAAM,EAAE,YAAY,GACnB,OAAO,CAUT;AAED,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,sBAAsB,GACnC,OAAO,CAOT;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,sBAAsB,GAAG,IAAI,EACpC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAQT;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,UAAU,GACjB,YAAY,GAAG,IAAI,CAoCrB"}
1
+ {"version":3,"file":"geometry.d.ts","sourceRoot":"","sources":["../../../src/geometry.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,CAAC;AAElD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC;IAClC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC,CAAC;AAEH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,QAAQ,CAAC;IAC5C,IAAI,EAAE,YAAY,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kCAAkC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,MAAM,MAAM,+BAA+B,GAAG,QAAQ,CAAC;IACrD,IAAI,EAAE,qBAAqB,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC,CAAC;AAYH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAcpE;AA2BD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,GAAG,IAAI,EAC1B,MAAM,EAAE,YAAY,GACnB,OAAO,CAeT;AAOD,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,sBAAsB,GACnC,OAAO,CAUT;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,sBAAsB,GAAG,IAAI,EACpC,MAAM,EAAE,sBAAsB,GAC7B,OAAO,CAST;AAsDD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,GACrB,qBAAqB,GAAG,IAAI,CAa9B;AAED,wBAAgB,4BAA4B,CAC1C,YAAY,EAAE,sBAAsB,GACnC,+BAA+B,GAAG,IAAI,CAaxC;AAID,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,iBAAiB,SAAI,EACrB,iBAAiB,SAAI,EACrB,YAAY,SAAI,GACf,+BAA+B,CAsBjC;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,UAAU,GACjB,qBAAqB,GAAG,IAAI,CA0B9B;AAED,wBAAgB,yBAAyB,CACvC,YAAY,EAAE,sBAAsB,EACpC,MAAM,EAAE,UAAU,GACjB,+BAA+B,GAAG,IAAI,CAaxC"}
@@ -0,0 +1,66 @@
1
+ import type { ClipReduceMotion, SmoothClipDriver, SpringClipAnimation, TimingClipAnimation } from './driverTypes.js';
2
+ import type { CanonicalSmoothClipPresentation, SmoothClipPresentation } from './geometry.js';
3
+ export type SmoothClipGroupAnimationResult = Readonly<{
4
+ groupId: number;
5
+ finished: boolean;
6
+ }>;
7
+ export type SmoothClipGroupSnapshot = Readonly<{
8
+ driver: SmoothClipDriver;
9
+ presentation: CanonicalSmoothClipPresentation;
10
+ ready: boolean;
11
+ }>;
12
+ export type SmoothClipBatchEntry = Readonly<{
13
+ driver: SmoothClipDriver;
14
+ presentation: SmoothClipPresentation;
15
+ }>;
16
+ export type SmoothClipGroupMotionEntry = Readonly<{
17
+ driver: SmoothClipDriver;
18
+ target: SmoothClipPresentation;
19
+ from?: SmoothClipPresentation;
20
+ }>;
21
+ export type SmoothClipGroupKeyframeEntry = SmoothClipGroupMotionEntry & Readonly<{
22
+ frames: readonly Readonly<{
23
+ offset: number;
24
+ presentation: SmoothClipPresentation;
25
+ }>[];
26
+ }>;
27
+ export type SmoothClipGroupSuspensionPolicy = 'pause' | 'finish';
28
+ export type SmoothClipGroupCancelBehavior = 'freeze' | 'finish';
29
+ type SmoothClipGroupAnimationBase = Readonly<{
30
+ suspensionPolicy?: SmoothClipGroupSuspensionPolicy;
31
+ }>;
32
+ export type SmoothClipGroupTimingAnimation = Omit<TimingClipAnimation, 'from'> & SmoothClipGroupAnimationBase;
33
+ export type SmoothClipGroupSpringAnimation = Omit<SpringClipAnimation, 'from'> & SmoothClipGroupAnimationBase;
34
+ export type SmoothClipGroupKeyframeAnimation = Readonly<{
35
+ type: 'keyframes';
36
+ duration: number;
37
+ suspensionPolicy?: SmoothClipGroupSuspensionPolicy;
38
+ }>;
39
+ export type SmoothClipGroupMotionAnimation = SmoothClipGroupTimingAnimation | SmoothClipGroupSpringAnimation;
40
+ export type SmoothClipGroupDriverOptions = Readonly<{
41
+ reduceMotion?: ClipReduceMotion;
42
+ onAnimationComplete?: (result: SmoothClipGroupAnimationResult) => void;
43
+ }>;
44
+ export interface SmoothClipGroupUIControls {
45
+ beginInteraction(drivers: readonly SmoothClipDriver[]): readonly SmoothClipGroupSnapshot[];
46
+ snapshotCurrent(drivers: readonly SmoothClipDriver[]): readonly SmoothClipGroupSnapshot[];
47
+ setBatch(entries: readonly SmoothClipBatchEntry[]): void;
48
+ animateTo(entries: readonly SmoothClipGroupMotionEntry[], animation: SmoothClipGroupMotionAnimation): number;
49
+ animateTo(entries: readonly SmoothClipGroupKeyframeEntry[], animation: SmoothClipGroupKeyframeAnimation): number;
50
+ cancel(groupId: number, behavior?: SmoothClipGroupCancelBehavior): readonly SmoothClipGroupSnapshot[];
51
+ }
52
+ export interface SmoothClipGroupReactControls {
53
+ beginInteraction(drivers: readonly SmoothClipDriver[]): Promise<readonly SmoothClipGroupSnapshot[]>;
54
+ snapshotCurrent(drivers: readonly SmoothClipDriver[]): Promise<readonly SmoothClipGroupSnapshot[]>;
55
+ setBatch(entries: readonly SmoothClipBatchEntry[]): Promise<void>;
56
+ animateTo(entries: readonly SmoothClipGroupMotionEntry[], animation: SmoothClipGroupMotionAnimation): Promise<number>;
57
+ animateTo(entries: readonly SmoothClipGroupKeyframeEntry[], animation: SmoothClipGroupKeyframeAnimation): Promise<number>;
58
+ cancel(groupId: number, behavior?: SmoothClipGroupCancelBehavior): Promise<readonly SmoothClipGroupSnapshot[]>;
59
+ }
60
+ export type SmoothClipGroupDriver = Readonly<{
61
+ kind: 'group';
62
+ ui: SmoothClipGroupUIControls;
63
+ react: SmoothClipGroupReactControls;
64
+ }>;
65
+ export {};
66
+ //# sourceMappingURL=groupDriverTypes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupDriverTypes.d.ts","sourceRoot":"","sources":["../../../src/groupDriverTypes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { useSmoothClipGroupDriver } from './groupDrivers.native.js';
2
+ //# sourceMappingURL=groupDrivers.android.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupDrivers.android.d.ts","sourceRoot":"","sources":["../../../src/groupDrivers.android.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useSmoothClipGroupDriver } from './groupDrivers.native.js';
2
+ //# sourceMappingURL=groupDrivers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupDrivers.d.ts","sourceRoot":"","sources":["../../../src/groupDrivers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useSmoothClipGroupDriver } from './groupDrivers.native.js';
2
+ //# sourceMappingURL=groupDrivers.ios.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupDrivers.ios.d.ts","sourceRoot":"","sources":["../../../src/groupDrivers.ios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { SmoothClipGroupAnimationResult, SmoothClipGroupDriver, SmoothClipGroupDriverOptions } from './groupDriverTypes.js';
2
+ export declare function useSmoothClipGroupDriver(options?: SmoothClipGroupDriverOptions): SmoothClipGroupDriver;
3
+ export type { SmoothClipGroupAnimationResult };
4
+ //# sourceMappingURL=groupDrivers.native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"groupDrivers.native.d.ts","sourceRoot":"","sources":["../../../src/groupDrivers.native.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAEV,8BAA8B,EAE9B,qBAAqB,EACrB,4BAA4B,EAM7B,MAAM,uBAAoB,CAAC;AAomB5B,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,4BAAiC,GACzC,qBAAqB,CA2hBvB;AAgBD,YAAY,EAAE,8BAA8B,EAAE,CAAC"}
@@ -1,9 +1,12 @@
1
1
  export { SmoothClipView } from './SmoothClipView';
2
2
  export type { SmoothClipViewProps } from './SmoothClipView';
3
3
  export { useSmoothClipDriver } from './drivers';
4
+ export { useSmoothClipGroupDriver } from './groupDrivers';
5
+ export { getSmoothClipCapabilities } from './capabilities';
6
+ export type { SmoothClipCapabilities } from './capabilityTypes.js';
4
7
  export type { ClipAnimationResult, ClipReduceMotion, KeyframedClipAnimation, SmoothClipDriver, SmoothClipDriverOptions, SmoothClipReactControls, SmoothClipUIControls, SmoothClipAnimation, SpringClipAnimation, TimingClipAnimation, } from './driverTypes.js';
8
+ export type { SmoothClipBatchEntry, SmoothClipGroupAnimationResult, SmoothClipGroupCancelBehavior, SmoothClipGroupDriver, SmoothClipGroupDriverOptions, SmoothClipGroupKeyframeAnimation, SmoothClipGroupKeyframeEntry, SmoothClipGroupMotionAnimation, SmoothClipGroupMotionEntry, SmoothClipGroupReactControls, SmoothClipGroupSnapshot, SmoothClipGroupSpringAnimation, SmoothClipGroupSuspensionPolicy, SmoothClipGroupTimingAnimation, SmoothClipGroupUIControls, } from './groupDriverTypes.js';
5
9
  export { ClipEasings } from './easings.js';
6
- export { normalizeClipGeometry } from './geometry.js';
7
- export { createClipPresentation } from './geometry.js';
8
- export type { ClipBounds, ClipGeometry, SmoothClipPresentation, } from './geometry.js';
10
+ export { canonicalizeClipGeometry, canonicalizeClipPresentation, createClipPresentation, normalizeClipGeometry, normalizeClipPresentation, } from './geometry.js';
11
+ export type { CanonicalClipGeometry, CanonicalSmoothClipPresentation, ClipBounds, ClipCurve, ClipGeometry, SmoothClipPresentation, } from './geometry.js';
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAe,CAAC;AACvB,OAAO,EAAE,WAAW,EAAE,MAAM,cAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAY,CAAC;AACnD,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAY,CAAC;AACpD,YAAY,EACV,UAAU,EACV,YAAY,EACZ,sBAAsB,GACvB,MAAM,eAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,sBAAmB,CAAC;AAChE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,gBAAgB,EAChB,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,kBAAe,CAAC;AACvB,YAAY,EACV,oBAAoB,EACpB,8BAA8B,EAC9B,6BAA6B,EAC7B,qBAAqB,EACrB,4BAA4B,EAC5B,gCAAgC,EAChC,4BAA4B,EAC5B,8BAA8B,EAC9B,0BAA0B,EAC1B,4BAA4B,EAC5B,uBAAuB,EACvB,8BAA8B,EAC9B,+BAA+B,EAC/B,8BAA8B,EAC9B,yBAAyB,GAC1B,MAAM,uBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,cAAW,CAAC;AACxC,OAAO,EACL,wBAAwB,EACxB,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,yBAAyB,GAC1B,MAAM,eAAY,CAAC;AACpB,YAAY,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,UAAU,EACV,SAAS,EACT,YAAY,EACZ,sBAAsB,GACvB,MAAM,eAAY,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CanonicalSmoothClipPresentation } from './geometry.js';
2
+ export declare function isV1CompatiblePresentation(presentation: CanonicalSmoothClipPresentation): boolean;
3
+ export declare function assertInitialPresentationProtocol(presentation: CanonicalSmoothClipPresentation, protocolVersion: 1 | 2): void;
4
+ //# sourceMappingURL=presentationProtocol.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"presentationProtocol.d.ts","sourceRoot":"","sources":["../../../src/presentationProtocol.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,eAAY,CAAC;AAElE,wBAAgB,0BAA0B,CACxC,YAAY,EAAE,+BAA+B,GAC5C,OAAO,CAUT;AAED,wBAAgB,iCAAiC,CAC/C,YAAY,EAAE,+BAA+B,EAC7C,eAAe,EAAE,CAAC,GAAG,CAAC,GACrB,IAAI,CAQN"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-smooth-clip-view",
3
- "version": "0.2.9",
3
+ "version": "0.3.0",
4
4
  "description": "Layout-free animated rounded clipping for React Native Fabric",
5
5
  "main": "./lib/module/index.js",
6
6
  "module": "./lib/module/index.js",
@@ -51,8 +51,7 @@
51
51
  "clipping",
52
52
  "fabric",
53
53
  "ios",
54
- "android",
55
- "web"
54
+ "android"
56
55
  ],
57
56
  "repository": {
58
57
  "type": "git",
@@ -75,10 +74,10 @@
75
74
  "@eslint/eslintrc": "^3.3.5",
76
75
  "@eslint/js": "^9.39.4",
77
76
  "@jest/globals": "^29.7.0",
78
- "@react-native/babel-preset": "0.86.0",
79
- "@react-native/eslint-config": "0.86.0",
80
- "@react-native/jest-preset": "0.86.0",
81
- "@react-native/metro-config": "0.86.0",
77
+ "@react-native/babel-preset": "0.86.2",
78
+ "@react-native/eslint-config": "0.86.2",
79
+ "@react-native/jest-preset": "0.86.2",
80
+ "@react-native/metro-config": "0.86.2",
82
81
  "@release-it/conventional-changelog": "^11.0.1",
83
82
  "@types/react": "^19.2.0",
84
83
  "commitlint": "^21.0.2",
@@ -92,16 +91,16 @@
92
91
  "lefthook": "^2.1.9",
93
92
  "prettier": "^3.8.3",
94
93
  "react": "19.2.3",
95
- "react-native": "0.86.0",
94
+ "react-native": "0.86.2",
96
95
  "react-native-builder-bob": "^0.43.0",
97
- "react-native-reanimated": "4.5.0",
98
- "react-native-worklets": "0.10.0",
96
+ "react-native-reanimated": "4.5.1",
97
+ "react-native-worklets": "0.10.4",
99
98
  "release-it": "^20.2.0",
100
99
  "turbo": "^2.9.16",
101
100
  "typescript": "^6.0.3"
102
101
  },
103
102
  "peerDependencies": {
104
- "react": "*",
103
+ "react": ">=19.2.0",
105
104
  "react-native": ">=0.86.0",
106
105
  "react-native-reanimated": ">=4.5.0",
107
106
  "react-native-worklets": ">=0.10.0"