react-native-smooth-clip-view 0.3.0 → 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 (199) hide show
  1. package/README.md +132 -388
  2. package/android/build.gradle +3 -3
  3. package/android/proguard-rules.pro +2 -2
  4. package/android/src/main/cpp/SmoothClipAndroid.h +9 -12
  5. package/android/src/main/cpp/SmoothClipBindings.cpp +300 -704
  6. package/android/src/main/cpp/SmoothClipRegistry.cpp +348 -594
  7. package/android/src/main/java/com/smoothclipview/ClipGeometryNormalizer.kt +36 -227
  8. package/android/src/main/java/com/smoothclipview/SmoothClipBindings.kt +16 -19
  9. package/android/src/main/java/com/smoothclipview/SmoothClipModule.kt +36 -294
  10. package/android/src/main/java/com/smoothclipview/SmoothClipView.kt +344 -488
  11. package/android/src/main/java/com/smoothclipview/SmoothClipViewManager.kt +75 -77
  12. package/cpp/SmoothClipAnimationCurve.h +237 -346
  13. package/cpp/SmoothClipRegistry.h +24 -52
  14. package/cpp/SmoothClipSharedGeometry.h +64 -94
  15. package/cpp/SmoothClipVelocityTracker.h +5 -5
  16. package/ios/SmoothClipGeometry.h +23 -34
  17. package/ios/SmoothClipRegistry.mm +206 -711
  18. package/ios/SmoothClipTurboModule.cpp +217 -715
  19. package/ios/SmoothClipTurboModule.h +54 -297
  20. package/ios/SmoothClipView.mm +599 -505
  21. package/ios/SmoothClipViewRegistry.h +2 -7
  22. package/lib/module/NativeSmoothClipModule.js.map +1 -1
  23. package/lib/module/SmoothClipView.ios.js +84 -17
  24. package/lib/module/SmoothClipView.ios.js.map +1 -1
  25. package/lib/module/SmoothClipView.js +1 -1
  26. package/lib/module/SmoothClipView.js.map +1 -1
  27. package/lib/module/SmoothClipViewNativeComponent.ts +20 -26
  28. package/lib/module/capabilities.native.js +1 -19
  29. package/lib/module/capabilities.native.js.map +1 -1
  30. package/lib/module/capabilityTypes.js +0 -9
  31. package/lib/module/capabilityTypes.js.map +1 -1
  32. package/lib/module/controllerInternals.js +28 -0
  33. package/lib/module/controllerInternals.js.map +1 -0
  34. package/lib/module/controllerLifecycle.js +9 -0
  35. package/lib/module/controllerLifecycle.js.map +1 -0
  36. package/lib/module/controllerTypes.js +4 -0
  37. package/lib/module/controllerTypes.js.map +1 -0
  38. package/lib/module/controllers.android.js +4 -0
  39. package/lib/module/controllers.android.js.map +1 -0
  40. package/lib/module/controllers.ios.js +4 -0
  41. package/lib/module/controllers.ios.js.map +1 -0
  42. package/lib/module/controllers.js +4 -0
  43. package/lib/module/controllers.js.map +1 -0
  44. package/lib/module/controllers.native.js +89 -0
  45. package/lib/module/controllers.native.js.map +1 -0
  46. package/lib/module/geometry.js +71 -51
  47. package/lib/module/geometry.js.map +1 -1
  48. package/lib/module/groupTypes.js +4 -0
  49. package/lib/module/{groupDriverTypes.js.map → groupTypes.js.map} +1 -1
  50. package/lib/module/groups.android.js +4 -0
  51. package/lib/module/groups.android.js.map +1 -0
  52. package/lib/module/groups.ios.js +4 -0
  53. package/lib/module/groups.ios.js.map +1 -0
  54. package/lib/module/groups.js +4 -0
  55. package/lib/module/groups.js.map +1 -0
  56. package/lib/module/groups.native.js +399 -0
  57. package/lib/module/groups.native.js.map +1 -0
  58. package/lib/module/ids.js +8 -0
  59. package/lib/module/ids.js.map +1 -0
  60. package/lib/module/index.js +3 -3
  61. package/lib/module/index.js.map +1 -1
  62. package/lib/module/nativeCompletion.js +37 -16
  63. package/lib/module/nativeCompletion.js.map +1 -1
  64. package/lib/module/presentationCodec.js +81 -0
  65. package/lib/module/presentationCodec.js.map +1 -0
  66. package/lib/typescript/src/NativeSmoothClipModule.d.ts +14 -23
  67. package/lib/typescript/src/NativeSmoothClipModule.d.ts.map +1 -1
  68. package/lib/typescript/src/SmoothClipView.d.ts +1 -1
  69. package/lib/typescript/src/SmoothClipView.d.ts.map +1 -1
  70. package/lib/typescript/src/SmoothClipView.ios.d.ts +18 -14
  71. package/lib/typescript/src/SmoothClipView.ios.d.ts.map +1 -1
  72. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts +10 -5
  73. package/lib/typescript/src/SmoothClipViewNativeComponent.d.ts.map +1 -1
  74. package/lib/typescript/src/capabilities.native.d.ts +1 -1
  75. package/lib/typescript/src/capabilities.native.d.ts.map +1 -1
  76. package/lib/typescript/src/capabilityTypes.d.ts +0 -6
  77. package/lib/typescript/src/capabilityTypes.d.ts.map +1 -1
  78. package/lib/typescript/src/controllerInternals.d.ts +14 -0
  79. package/lib/typescript/src/controllerInternals.d.ts.map +1 -0
  80. package/lib/typescript/src/controllerLifecycle.d.ts +3 -0
  81. package/lib/typescript/src/controllerLifecycle.d.ts.map +1 -0
  82. package/lib/typescript/src/controllerTypes.d.ts +62 -0
  83. package/lib/typescript/src/controllerTypes.d.ts.map +1 -0
  84. package/lib/typescript/src/controllers.android.d.ts +2 -0
  85. package/lib/typescript/src/controllers.android.d.ts.map +1 -0
  86. package/lib/typescript/src/controllers.d.ts +2 -0
  87. package/lib/typescript/src/controllers.d.ts.map +1 -0
  88. package/lib/typescript/src/controllers.ios.d.ts +2 -0
  89. package/lib/typescript/src/controllers.ios.d.ts.map +1 -0
  90. package/lib/typescript/src/controllers.native.d.ts +3 -0
  91. package/lib/typescript/src/controllers.native.d.ts.map +1 -0
  92. package/lib/typescript/src/geometry.d.ts +22 -12
  93. package/lib/typescript/src/geometry.d.ts.map +1 -1
  94. package/lib/typescript/src/groupTypes.d.ts +31 -0
  95. package/lib/typescript/src/groupTypes.d.ts.map +1 -0
  96. package/lib/typescript/src/groups.android.d.ts +2 -0
  97. package/lib/typescript/src/groups.android.d.ts.map +1 -0
  98. package/lib/typescript/src/groups.d.ts +2 -0
  99. package/lib/typescript/src/groups.d.ts.map +1 -0
  100. package/lib/typescript/src/groups.ios.d.ts +2 -0
  101. package/lib/typescript/src/groups.ios.d.ts.map +1 -0
  102. package/lib/typescript/src/groups.native.d.ts +3 -0
  103. package/lib/typescript/src/groups.native.d.ts.map +1 -0
  104. package/lib/typescript/src/ids.d.ts +2 -0
  105. package/lib/typescript/src/ids.d.ts.map +1 -0
  106. package/lib/typescript/src/index.d.ts +6 -6
  107. package/lib/typescript/src/index.d.ts.map +1 -1
  108. package/lib/typescript/src/nativeCompletion.d.ts +16 -6
  109. package/lib/typescript/src/nativeCompletion.d.ts.map +1 -1
  110. package/lib/typescript/src/presentationCodec.d.ts +10 -0
  111. package/lib/typescript/src/presentationCodec.d.ts.map +1 -0
  112. package/package.json +8 -3
  113. package/src/NativeSmoothClipModule.ts +41 -292
  114. package/src/SmoothClipView.ios.tsx +130 -23
  115. package/src/SmoothClipView.tsx +5 -1
  116. package/src/SmoothClipViewNativeComponent.ts +20 -26
  117. package/src/capabilities.native.ts +2 -52
  118. package/src/capabilityTypes.ts +0 -14
  119. package/src/controllerInternals.ts +52 -0
  120. package/src/controllerLifecycle.ts +6 -0
  121. package/src/controllerTypes.ts +87 -0
  122. package/src/controllers.android.ts +1 -0
  123. package/src/controllers.ios.ts +1 -0
  124. package/src/controllers.native.ts +104 -0
  125. package/src/controllers.ts +1 -0
  126. package/src/geometry.ts +118 -74
  127. package/src/groupTypes.ts +53 -0
  128. package/src/groups.android.ts +1 -0
  129. package/src/groups.ios.ts +1 -0
  130. package/src/groups.native.ts +604 -0
  131. package/src/groups.ts +1 -0
  132. package/src/ids.ts +6 -0
  133. package/src/index.ts +20 -28
  134. package/src/nativeCompletion.ts +67 -32
  135. package/src/presentationCodec.ts +134 -0
  136. package/lib/module/driverState.js +0 -82
  137. package/lib/module/driverState.js.map +0 -1
  138. package/lib/module/driverTypes.js +0 -4
  139. package/lib/module/driverTypes.js.map +0 -1
  140. package/lib/module/drivers.android.js +0 -6
  141. package/lib/module/drivers.android.js.map +0 -1
  142. package/lib/module/drivers.ios.js +0 -6
  143. package/lib/module/drivers.ios.js.map +0 -1
  144. package/lib/module/drivers.js +0 -4
  145. package/lib/module/drivers.js.map +0 -1
  146. package/lib/module/drivers.native.js +0 -756
  147. package/lib/module/drivers.native.js.map +0 -1
  148. package/lib/module/groupDriverTypes.js +0 -4
  149. package/lib/module/groupDrivers.android.js +0 -4
  150. package/lib/module/groupDrivers.android.js.map +0 -1
  151. package/lib/module/groupDrivers.ios.js +0 -4
  152. package/lib/module/groupDrivers.ios.js.map +0 -1
  153. package/lib/module/groupDrivers.js +0 -4
  154. package/lib/module/groupDrivers.js.map +0 -1
  155. package/lib/module/groupDrivers.native.js +0 -799
  156. package/lib/module/groupDrivers.native.js.map +0 -1
  157. package/lib/module/presentationProtocol.js +0 -15
  158. package/lib/module/presentationProtocol.js.map +0 -1
  159. package/lib/module/reactRequests.js +0 -56
  160. package/lib/module/reactRequests.js.map +0 -1
  161. package/lib/typescript/src/driverState.d.ts +0 -26
  162. package/lib/typescript/src/driverState.d.ts.map +0 -1
  163. package/lib/typescript/src/driverTypes.d.ts +0 -121
  164. package/lib/typescript/src/driverTypes.d.ts.map +0 -1
  165. package/lib/typescript/src/drivers.android.d.ts +0 -3
  166. package/lib/typescript/src/drivers.android.d.ts.map +0 -1
  167. package/lib/typescript/src/drivers.d.ts +0 -3
  168. package/lib/typescript/src/drivers.d.ts.map +0 -1
  169. package/lib/typescript/src/drivers.ios.d.ts +0 -3
  170. package/lib/typescript/src/drivers.ios.d.ts.map +0 -1
  171. package/lib/typescript/src/drivers.native.d.ts +0 -5
  172. package/lib/typescript/src/drivers.native.d.ts.map +0 -1
  173. package/lib/typescript/src/groupDriverTypes.d.ts +0 -66
  174. package/lib/typescript/src/groupDriverTypes.d.ts.map +0 -1
  175. package/lib/typescript/src/groupDrivers.android.d.ts +0 -2
  176. package/lib/typescript/src/groupDrivers.android.d.ts.map +0 -1
  177. package/lib/typescript/src/groupDrivers.d.ts +0 -2
  178. package/lib/typescript/src/groupDrivers.d.ts.map +0 -1
  179. package/lib/typescript/src/groupDrivers.ios.d.ts +0 -2
  180. package/lib/typescript/src/groupDrivers.ios.d.ts.map +0 -1
  181. package/lib/typescript/src/groupDrivers.native.d.ts +0 -4
  182. package/lib/typescript/src/groupDrivers.native.d.ts.map +0 -1
  183. package/lib/typescript/src/presentationProtocol.d.ts +0 -4
  184. package/lib/typescript/src/presentationProtocol.d.ts.map +0 -1
  185. package/lib/typescript/src/reactRequests.d.ts +0 -9
  186. package/lib/typescript/src/reactRequests.d.ts.map +0 -1
  187. package/src/driverState.ts +0 -118
  188. package/src/driverTypes.ts +0 -171
  189. package/src/drivers.android.ts +0 -8
  190. package/src/drivers.ios.ts +0 -8
  191. package/src/drivers.native.ts +0 -1599
  192. package/src/drivers.ts +0 -6
  193. package/src/groupDriverTypes.ts +0 -117
  194. package/src/groupDrivers.android.ts +0 -1
  195. package/src/groupDrivers.ios.ts +0 -1
  196. package/src/groupDrivers.native.ts +0 -1189
  197. package/src/groupDrivers.ts +0 -1
  198. package/src/presentationProtocol.ts +0 -28
  199. package/src/reactRequests.ts +0 -76
@@ -20,8 +20,6 @@ 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,
24
- var presentationVersion: Int = 1,
25
23
  var topLeftRadius: Double = 0.0,
26
24
  var topRightRadius: Double = 0.0,
27
25
  var bottomRightRadius: Double = 0.0,
@@ -30,6 +28,15 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
30
28
  var contentTranslateX: Double = 0.0,
31
29
  var contentTranslateY: Double = 0.0,
32
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,
33
40
  var driverId: Double = 0.0,
34
41
  // Whether any prop setter ran in the current update transaction.
35
42
  var dirty: Boolean = false,
@@ -97,16 +104,6 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
97
104
  pending(view).height = value
98
105
  }
99
106
 
100
- @ReactProp(name = "initialClipRadius")
101
- override fun setInitialClipRadius(view: SmoothClipView, value: Double) {
102
- pending(view).radius = value
103
- }
104
-
105
- @ReactProp(name = "presentationVersion")
106
- override fun setPresentationVersion(view: SmoothClipView, value: Int) {
107
- pending(view).presentationVersion = value
108
- }
109
-
110
107
  @ReactProp(name = "initialClipTopLeftRadius")
111
108
  override fun setInitialClipTopLeftRadius(view: SmoothClipView, value: Double) {
112
109
  pending(view).topLeftRadius = value
@@ -147,41 +144,36 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
147
144
  pending(view).contentScale = value
148
145
  }
149
146
 
150
- override fun setClipGeometry(
151
- view: SmoothClipView,
152
- x: Double,
153
- y: Double,
154
- width: Double,
155
- height: Double,
156
- radius: Double,
157
- ) {
158
- view.commandIsAuthoritative = true
159
- view.setClipGeometryDip(x, y, width, height, radius)
147
+ @ReactProp(name = "initialClipBoxShadowEnabled")
148
+ override fun setInitialClipBoxShadowEnabled(view: SmoothClipView, value: Boolean) {
149
+ pending(view).shadowEnabled = value
160
150
  }
161
151
 
162
- override fun setClipPresentation(
163
- view: SmoothClipView,
164
- x: Double,
165
- y: Double,
166
- width: Double,
167
- height: Double,
168
- radius: Double,
169
- contentTranslateX: Double,
170
- contentTranslateY: Double,
171
- ) {
172
- view.commandIsAuthoritative = true
173
- view.setClipPresentationDip(
174
- x,
175
- y,
176
- width,
177
- height,
178
- radius,
179
- contentTranslateX,
180
- contentTranslateY,
181
- )
182
- }
152
+ @ReactProp(name = "initialClipBoxShadowRed")
153
+ override fun setInitialClipBoxShadowRed(view: SmoothClipView, value: Double) { pending(view).shadowRed = value }
183
154
 
184
- override fun setClipPresentationV2(
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
+
176
+ override fun setClipPresentation(
185
177
  view: SmoothClipView,
186
178
  x: Double,
187
179
  y: Double,
@@ -195,9 +187,18 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
195
187
  contentTranslateX: Double,
196
188
  contentTranslateY: Double,
197
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,
198
199
  ) {
199
200
  view.commandIsAuthoritative = true
200
- view.setClipPresentationV2Dip(
201
+ view.setClipPresentationDip(
201
202
  x,
202
203
  y,
203
204
  width,
@@ -210,6 +211,15 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
210
211
  contentTranslateX,
211
212
  contentTranslateY,
212
213
  contentScale,
214
+ shadowEnabled,
215
+ shadowRed,
216
+ shadowGreen,
217
+ shadowBlue,
218
+ shadowAlpha,
219
+ shadowOffsetX,
220
+ shadowOffsetY,
221
+ shadowBlurRadius,
222
+ shadowSpreadDistance,
213
223
  )
214
224
  }
215
225
 
@@ -228,8 +238,7 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
228
238
  }
229
239
  view.boundDriverId = initial.driverId
230
240
  if (initial.driverId != 0.0) {
231
- if (initial.presentationVersion >= 2) {
232
- SmoothClipBindings.nativeRegisterViewV2(
241
+ SmoothClipBindings.nativeRegisterView(
233
242
  initial.driverId,
234
243
  view,
235
244
  initial.x,
@@ -244,33 +253,24 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
244
253
  initial.contentTranslateX,
245
254
  initial.contentTranslateY,
246
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,
247
265
  view.densityScale(),
248
266
  view.width.toDouble(),
249
267
  view.height.toDouble(),
250
268
  view.isHostLifecycleVisible(),
251
269
  )
252
- } else {
253
- SmoothClipBindings.nativeRegisterView(
254
- initial.driverId,
255
- view,
256
- initial.x,
257
- initial.y,
258
- initial.width,
259
- initial.height,
260
- initial.radius,
261
- initial.contentTranslateX,
262
- initial.contentTranslateY,
263
- view.densityScale(),
264
- view.width.toDouble(),
265
- view.height.toDouble(),
266
- view.isHostLifecycleVisible(),
267
- )
268
- }
269
270
  } else if (!view.commandIsAuthoritative) {
270
271
  // Command-driven mode (driverId 0): the initial props are the only
271
272
  // source of the first clip, so apply them directly.
272
- if (initial.presentationVersion >= 2) {
273
- view.setClipPresentationV2Dip(
273
+ view.setClipPresentationDip(
274
274
  initial.x,
275
275
  initial.y,
276
276
  initial.width,
@@ -283,18 +283,16 @@ class SmoothClipViewManager : ViewGroupManager<SmoothClipView>(),
283
283
  initial.contentTranslateX,
284
284
  initial.contentTranslateY,
285
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,
286
295
  )
287
- } else {
288
- view.setClipPresentationDip(
289
- initial.x,
290
- initial.y,
291
- initial.width,
292
- initial.height,
293
- initial.radius,
294
- initial.contentTranslateX,
295
- initial.contentTranslateY,
296
- )
297
- }
298
296
  } else {
299
297
  view.reapplyClipPresentation()
300
298
  }