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
@@ -20,9 +20,23 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
20
20
  var y: Double = 0.0,
21
21
  var width: Double = 0.0,
22
22
  var height: Double = 0.0,
23
- var radius: Double = 0.0,
23
+ var topLeftRadius: Double = 0.0,
24
+ var topRightRadius: Double = 0.0,
25
+ var bottomRightRadius: Double = 0.0,
26
+ var bottomLeftRadius: Double = 0.0,
27
+ var curveCode: Int = CLIP_CURVE_CIRCULAR,
24
28
  var contentTranslateX: Double = 0.0,
25
29
  var contentTranslateY: Double = 0.0,
30
+ var contentScale: Double = 1.0,
31
+ var shadowEnabled: Boolean = false,
32
+ var shadowRed: Double = 0.0,
33
+ var shadowGreen: Double = 0.0,
34
+ var shadowBlue: Double = 0.0,
35
+ var shadowAlpha: Double = 1.0,
36
+ var shadowOffsetX: Double = 0.0,
37
+ var shadowOffsetY: Double = 0.0,
38
+ var shadowBlurRadius: Double = 0.0,
39
+ var shadowSpreadDistance: Double = 0.0,
26
40
  var driverId: Double = 0.0,
27
41
  // Whether any prop setter ran in the current update transaction.
28
42
  var dirty: Boolean = false,
@@ -90,9 +104,29 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
90
104
  pending(view).height = value
91
105
  }
92
106
 
93
- @ReactProp(name = "initialClipRadius")
94
- override fun setInitialClipRadius(view: SmoothClipView, value: Double) {
95
- pending(view).radius = value
107
+ @ReactProp(name = "initialClipTopLeftRadius")
108
+ override fun setInitialClipTopLeftRadius(view: SmoothClipView, value: Double) {
109
+ pending(view).topLeftRadius = value
110
+ }
111
+
112
+ @ReactProp(name = "initialClipTopRightRadius")
113
+ override fun setInitialClipTopRightRadius(view: SmoothClipView, value: Double) {
114
+ pending(view).topRightRadius = value
115
+ }
116
+
117
+ @ReactProp(name = "initialClipBottomRightRadius")
118
+ override fun setInitialClipBottomRightRadius(view: SmoothClipView, value: Double) {
119
+ pending(view).bottomRightRadius = value
120
+ }
121
+
122
+ @ReactProp(name = "initialClipBottomLeftRadius")
123
+ override fun setInitialClipBottomLeftRadius(view: SmoothClipView, value: Double) {
124
+ pending(view).bottomLeftRadius = value
125
+ }
126
+
127
+ @ReactProp(name = "initialClipCurve")
128
+ override fun setInitialClipCurve(view: SmoothClipView, value: Int) {
129
+ pending(view).curveCode = value
96
130
  }
97
131
 
98
132
  @ReactProp(name = "initialContentTranslateX")
@@ -105,27 +139,63 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
105
139
  pending(view).contentTranslateY = value
106
140
  }
107
141
 
108
- override fun setClipGeometry(
109
- view: SmoothClipView,
110
- x: Double,
111
- y: Double,
112
- width: Double,
113
- height: Double,
114
- radius: Double,
115
- ) {
116
- view.commandIsAuthoritative = true
117
- view.setClipGeometryDip(x, y, width, height, radius)
142
+ @ReactProp(name = "initialContentScale")
143
+ override fun setInitialContentScale(view: SmoothClipView, value: Double) {
144
+ pending(view).contentScale = value
145
+ }
146
+
147
+ @ReactProp(name = "initialClipBoxShadowEnabled")
148
+ override fun setInitialClipBoxShadowEnabled(view: SmoothClipView, value: Boolean) {
149
+ pending(view).shadowEnabled = value
118
150
  }
119
151
 
152
+ @ReactProp(name = "initialClipBoxShadowRed")
153
+ override fun setInitialClipBoxShadowRed(view: SmoothClipView, value: Double) { pending(view).shadowRed = value }
154
+
155
+ @ReactProp(name = "initialClipBoxShadowGreen")
156
+ override fun setInitialClipBoxShadowGreen(view: SmoothClipView, value: Double) { pending(view).shadowGreen = value }
157
+
158
+ @ReactProp(name = "initialClipBoxShadowBlue")
159
+ override fun setInitialClipBoxShadowBlue(view: SmoothClipView, value: Double) { pending(view).shadowBlue = value }
160
+
161
+ @ReactProp(name = "initialClipBoxShadowAlpha")
162
+ override fun setInitialClipBoxShadowAlpha(view: SmoothClipView, value: Double) { pending(view).shadowAlpha = value }
163
+
164
+ @ReactProp(name = "initialClipBoxShadowOffsetX")
165
+ override fun setInitialClipBoxShadowOffsetX(view: SmoothClipView, value: Double) { pending(view).shadowOffsetX = value }
166
+
167
+ @ReactProp(name = "initialClipBoxShadowOffsetY")
168
+ override fun setInitialClipBoxShadowOffsetY(view: SmoothClipView, value: Double) { pending(view).shadowOffsetY = value }
169
+
170
+ @ReactProp(name = "initialClipBoxShadowBlurRadius")
171
+ override fun setInitialClipBoxShadowBlurRadius(view: SmoothClipView, value: Double) { pending(view).shadowBlurRadius = value }
172
+
173
+ @ReactProp(name = "initialClipBoxShadowSpreadDistance")
174
+ override fun setInitialClipBoxShadowSpreadDistance(view: SmoothClipView, value: Double) { pending(view).shadowSpreadDistance = value }
175
+
120
176
  override fun setClipPresentation(
121
177
  view: SmoothClipView,
122
178
  x: Double,
123
179
  y: Double,
124
180
  width: Double,
125
181
  height: Double,
126
- radius: Double,
182
+ topLeftRadius: Double,
183
+ topRightRadius: Double,
184
+ bottomRightRadius: Double,
185
+ bottomLeftRadius: Double,
186
+ curveCode: Int,
127
187
  contentTranslateX: Double,
128
188
  contentTranslateY: Double,
189
+ contentScale: Double,
190
+ shadowEnabled: Boolean,
191
+ shadowRed: Double,
192
+ shadowGreen: Double,
193
+ shadowBlue: Double,
194
+ shadowAlpha: Double,
195
+ shadowOffsetX: Double,
196
+ shadowOffsetY: Double,
197
+ shadowBlurRadius: Double,
198
+ shadowSpreadDistance: Double,
129
199
  ) {
130
200
  view.commandIsAuthoritative = true
131
201
  view.setClipPresentationDip(
@@ -133,9 +203,23 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
133
203
  y,
134
204
  width,
135
205
  height,
136
- radius,
206
+ topLeftRadius,
207
+ topRightRadius,
208
+ bottomRightRadius,
209
+ bottomLeftRadius,
210
+ curveCode,
137
211
  contentTranslateX,
138
212
  contentTranslateY,
213
+ contentScale,
214
+ shadowEnabled,
215
+ shadowRed,
216
+ shadowGreen,
217
+ shadowBlue,
218
+ shadowAlpha,
219
+ shadowOffsetX,
220
+ shadowOffsetY,
221
+ shadowBlurRadius,
222
+ shadowSpreadDistance,
139
223
  )
140
224
  }
141
225
 
@@ -155,32 +239,60 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
155
239
  view.boundDriverId = initial.driverId
156
240
  if (initial.driverId != 0.0) {
157
241
  SmoothClipBindings.nativeRegisterView(
158
- initial.driverId,
159
- view,
160
- initial.x,
161
- initial.y,
162
- initial.width,
163
- initial.height,
164
- initial.radius,
165
- initial.contentTranslateX,
166
- initial.contentTranslateY,
167
- view.densityScale(),
168
- view.width.toDouble(),
169
- view.height.toDouble(),
170
- view.isHostLifecycleVisible(),
171
- )
242
+ initial.driverId,
243
+ view,
244
+ initial.x,
245
+ initial.y,
246
+ initial.width,
247
+ initial.height,
248
+ initial.topLeftRadius,
249
+ initial.topRightRadius,
250
+ initial.bottomRightRadius,
251
+ initial.bottomLeftRadius,
252
+ initial.curveCode,
253
+ initial.contentTranslateX,
254
+ initial.contentTranslateY,
255
+ initial.contentScale,
256
+ initial.shadowEnabled,
257
+ initial.shadowRed,
258
+ initial.shadowGreen,
259
+ initial.shadowBlue,
260
+ initial.shadowAlpha,
261
+ initial.shadowOffsetX,
262
+ initial.shadowOffsetY,
263
+ initial.shadowBlurRadius,
264
+ initial.shadowSpreadDistance,
265
+ view.densityScale(),
266
+ view.width.toDouble(),
267
+ view.height.toDouble(),
268
+ view.isHostLifecycleVisible(),
269
+ )
172
270
  } else if (!view.commandIsAuthoritative) {
173
271
  // Command-driven mode (driverId 0): the initial props are the only
174
272
  // source of the first clip, so apply them directly.
175
273
  view.setClipPresentationDip(
176
- initial.x,
177
- initial.y,
178
- initial.width,
179
- initial.height,
180
- initial.radius,
181
- initial.contentTranslateX,
182
- initial.contentTranslateY,
183
- )
274
+ initial.x,
275
+ initial.y,
276
+ initial.width,
277
+ initial.height,
278
+ initial.topLeftRadius,
279
+ initial.topRightRadius,
280
+ initial.bottomRightRadius,
281
+ initial.bottomLeftRadius,
282
+ initial.curveCode,
283
+ initial.contentTranslateX,
284
+ initial.contentTranslateY,
285
+ initial.contentScale,
286
+ initial.shadowEnabled,
287
+ initial.shadowRed,
288
+ initial.shadowGreen,
289
+ initial.shadowBlue,
290
+ initial.shadowAlpha,
291
+ initial.shadowOffsetX,
292
+ initial.shadowOffsetY,
293
+ initial.shadowBlurRadius,
294
+ initial.shadowSpreadDistance,
295
+ )
184
296
  } else {
185
297
  view.reapplyClipPresentation()
186
298
  }