@rafaelaugusto/jolt 0.1.0-beta.9 → 0.1.0-rc.2

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 (576) hide show
  1. package/README.md +167 -21
  2. package/dist/animate.d.ts +25 -4
  3. package/dist/animate.d.ts.map +1 -1
  4. package/dist/animate.js +67 -26
  5. package/dist/animate.js.map +1 -1
  6. package/dist/blur/index.d.ts +6 -0
  7. package/dist/blur/index.d.ts.map +1 -0
  8. package/dist/blur/index.js +196 -0
  9. package/dist/blur/index.js.map +1 -0
  10. package/dist/blur/native.d.ts +17 -0
  11. package/dist/blur/native.d.ts.map +1 -0
  12. package/dist/blur/native.js +44 -0
  13. package/dist/blur/native.js.map +1 -0
  14. package/dist/blur/types.d.ts +32 -0
  15. package/dist/blur/types.d.ts.map +1 -0
  16. package/dist/blur/types.js +2 -0
  17. package/dist/blur/types.js.map +1 -0
  18. package/dist/bottom-sheet/geometry.d.ts +18 -0
  19. package/dist/bottom-sheet/geometry.d.ts.map +1 -0
  20. package/dist/bottom-sheet/geometry.js +51 -0
  21. package/dist/bottom-sheet/geometry.js.map +1 -0
  22. package/dist/bottom-sheet/index.d.ts +56 -0
  23. package/dist/bottom-sheet/index.d.ts.map +1 -0
  24. package/dist/bottom-sheet/index.js +462 -0
  25. package/dist/bottom-sheet/index.js.map +1 -0
  26. package/dist/bottom-sheet/native.d.ts +11 -0
  27. package/dist/bottom-sheet/native.d.ts.map +1 -0
  28. package/dist/bottom-sheet/native.js +173 -0
  29. package/dist/bottom-sheet/native.js.map +1 -0
  30. package/dist/config.d.ts +9 -0
  31. package/dist/config.d.ts.map +1 -1
  32. package/dist/config.js +40 -1
  33. package/dist/config.js.map +1 -1
  34. package/dist/decay.d.ts +1 -0
  35. package/dist/decay.d.ts.map +1 -1
  36. package/dist/decay.js +7 -0
  37. package/dist/decay.js.map +1 -1
  38. package/dist/drag-physics.d.ts +6 -1
  39. package/dist/drag-physics.d.ts.map +1 -1
  40. package/dist/drag.d.ts +17 -3
  41. package/dist/drag.d.ts.map +1 -1
  42. package/dist/drag.js +34 -11
  43. package/dist/drag.js.map +1 -1
  44. package/dist/driver/android-gradient.d.ts +5 -0
  45. package/dist/driver/android-gradient.d.ts.map +1 -0
  46. package/dist/driver/android-gradient.js +99 -0
  47. package/dist/driver/android-gradient.js.map +1 -0
  48. package/dist/driver/android-particles.d.ts +6 -0
  49. package/dist/driver/android-particles.d.ts.map +1 -0
  50. package/dist/driver/android-particles.js +93 -0
  51. package/dist/driver/android-particles.js.map +1 -0
  52. package/dist/driver/android.d.ts.map +1 -1
  53. package/dist/driver/android.js +27 -1
  54. package/dist/driver/android.js.map +1 -1
  55. package/dist/driver/frame.d.ts +3 -0
  56. package/dist/driver/frame.d.ts.map +1 -0
  57. package/dist/driver/frame.js +7 -0
  58. package/dist/driver/frame.js.map +1 -0
  59. package/dist/driver/index.d.ts +4 -0
  60. package/dist/driver/index.d.ts.map +1 -1
  61. package/dist/driver/index.js.map +1 -1
  62. package/dist/driver/ios-gradient.d.ts +5 -0
  63. package/dist/driver/ios-gradient.d.ts.map +1 -0
  64. package/dist/driver/ios-gradient.js +131 -0
  65. package/dist/driver/ios-gradient.js.map +1 -0
  66. package/dist/driver/ios-scroll-delegate.d.ts +4 -0
  67. package/dist/driver/ios-scroll-delegate.d.ts.map +1 -0
  68. package/dist/driver/ios-scroll-delegate.js +26 -0
  69. package/dist/driver/ios-scroll-delegate.js.map +1 -0
  70. package/dist/driver/ios.d.ts.map +1 -1
  71. package/dist/driver/ios.js +9 -0
  72. package/dist/driver/ios.js.map +1 -1
  73. package/dist/easing.d.ts +3 -1
  74. package/dist/easing.d.ts.map +1 -1
  75. package/dist/easing.js +18 -1
  76. package/dist/easing.js.map +1 -1
  77. package/dist/engine.d.ts +31 -2
  78. package/dist/engine.d.ts.map +1 -1
  79. package/dist/engine.js +194 -42
  80. package/dist/engine.js.map +1 -1
  81. package/dist/gesture-native.d.ts +28 -0
  82. package/dist/gesture-native.d.ts.map +1 -0
  83. package/dist/gesture-native.js +61 -0
  84. package/dist/gesture-native.js.map +1 -0
  85. package/dist/gestures/index.d.ts +69 -0
  86. package/dist/gestures/index.d.ts.map +1 -0
  87. package/dist/gestures/index.js +262 -0
  88. package/dist/gestures/index.js.map +1 -0
  89. package/dist/glass/index.d.ts +55 -0
  90. package/dist/glass/index.d.ts.map +1 -0
  91. package/dist/glass/index.js +205 -0
  92. package/dist/glass/index.js.map +1 -0
  93. package/dist/gradient-binding.d.ts +38 -0
  94. package/dist/gradient-binding.d.ts.map +1 -0
  95. package/dist/gradient-binding.js +128 -0
  96. package/dist/gradient-binding.js.map +1 -0
  97. package/dist/gradient.d.ts +105 -0
  98. package/dist/gradient.d.ts.map +1 -0
  99. package/dist/gradient.js +514 -0
  100. package/dist/gradient.js.map +1 -0
  101. package/dist/gravity.d.ts +13 -0
  102. package/dist/gravity.d.ts.map +1 -0
  103. package/dist/gravity.js +84 -0
  104. package/dist/gravity.js.map +1 -0
  105. package/dist/haptics.d.ts.map +1 -1
  106. package/dist/haptics.js +101 -28
  107. package/dist/haptics.js.map +1 -1
  108. package/dist/image-effect.d.ts +1 -0
  109. package/dist/image-effect.d.ts.map +1 -1
  110. package/dist/image-effect.js +10 -2
  111. package/dist/image-effect.js.map +1 -1
  112. package/dist/index.d.ts +19 -7
  113. package/dist/index.d.ts.map +1 -1
  114. package/dist/index.js +10 -4
  115. package/dist/index.js.map +1 -1
  116. package/dist/inspector/index.d.ts +86 -0
  117. package/dist/inspector/index.d.ts.map +1 -0
  118. package/dist/inspector/index.js +419 -0
  119. package/dist/inspector/index.js.map +1 -0
  120. package/dist/inspector/plot.d.ts +4 -0
  121. package/dist/inspector/plot.d.ts.map +1 -0
  122. package/dist/inspector/plot.js +23 -0
  123. package/dist/inspector/plot.js.map +1 -0
  124. package/dist/inspector/probe.d.ts +19 -0
  125. package/dist/inspector/probe.d.ts.map +1 -0
  126. package/dist/inspector/probe.js +37 -0
  127. package/dist/inspector/probe.js.map +1 -0
  128. package/dist/inspector/tuning.d.ts +19 -0
  129. package/dist/inspector/tuning.d.ts.map +1 -0
  130. package/dist/inspector/tuning.js +37 -0
  131. package/dist/inspector/tuning.js.map +1 -0
  132. package/dist/interactive-navigation/index.d.ts +44 -0
  133. package/dist/interactive-navigation/index.d.ts.map +1 -0
  134. package/dist/interactive-navigation/index.js +350 -0
  135. package/dist/interactive-navigation/index.js.map +1 -0
  136. package/dist/keyboard.d.ts +24 -0
  137. package/dist/keyboard.d.ts.map +1 -1
  138. package/dist/keyboard.js +199 -6
  139. package/dist/keyboard.js.map +1 -1
  140. package/dist/live-spring-driver.d.ts +52 -0
  141. package/dist/live-spring-driver.d.ts.map +1 -0
  142. package/dist/live-spring-driver.js +104 -0
  143. package/dist/live-spring-driver.js.map +1 -0
  144. package/dist/mixer.d.ts +55 -0
  145. package/dist/mixer.d.ts.map +1 -0
  146. package/dist/mixer.js +286 -0
  147. package/dist/mixer.js.map +1 -0
  148. package/dist/motion-scope.d.ts +8 -2
  149. package/dist/motion-scope.d.ts.map +1 -1
  150. package/dist/motion-scope.js +24 -3
  151. package/dist/motion-scope.js.map +1 -1
  152. package/dist/motion-states.d.ts +19 -7
  153. package/dist/motion-states.d.ts.map +1 -1
  154. package/dist/motion-states.js +116 -26
  155. package/dist/motion-states.js.map +1 -1
  156. package/dist/motion-value.d.ts +227 -0
  157. package/dist/motion-value.d.ts.map +1 -0
  158. package/dist/motion-value.js +1074 -0
  159. package/dist/motion-value.js.map +1 -0
  160. package/dist/native/index.d.ts +10 -0
  161. package/dist/native/index.d.ts.map +1 -0
  162. package/dist/native/index.js +6 -0
  163. package/dist/native/index.js.map +1 -0
  164. package/dist/native-properties.d.ts +28 -0
  165. package/dist/native-properties.d.ts.map +1 -0
  166. package/dist/native-properties.js +154 -0
  167. package/dist/native-properties.js.map +1 -0
  168. package/dist/native-property-driver.d.ts +19 -0
  169. package/dist/native-property-driver.d.ts.map +1 -0
  170. package/dist/native-property-driver.js +69 -0
  171. package/dist/native-property-driver.js.map +1 -0
  172. package/dist/native-property.d.ts +37 -0
  173. package/dist/native-property.d.ts.map +1 -0
  174. package/dist/native-property.js +285 -0
  175. package/dist/native-property.js.map +1 -0
  176. package/dist/particles.d.ts +5 -2
  177. package/dist/particles.d.ts.map +1 -1
  178. package/dist/particles.js +16 -10
  179. package/dist/particles.js.map +1 -1
  180. package/dist/path.d.ts.map +1 -1
  181. package/dist/path.js +2 -2
  182. package/dist/path.js.map +1 -1
  183. package/dist/physics/index.d.ts +139 -0
  184. package/dist/physics/index.d.ts.map +1 -0
  185. package/dist/physics/index.js +316 -0
  186. package/dist/physics/index.js.map +1 -0
  187. package/dist/physics/native.d.ts +54 -0
  188. package/dist/physics/native.d.ts.map +1 -0
  189. package/dist/physics/native.js +64 -0
  190. package/dist/physics/native.js.map +1 -0
  191. package/dist/playback-group.d.ts.map +1 -1
  192. package/dist/playback-group.js +17 -1
  193. package/dist/playback-group.js.map +1 -1
  194. package/dist/playback.d.ts +15 -0
  195. package/dist/playback.d.ts.map +1 -1
  196. package/dist/playback.js +23 -0
  197. package/dist/playback.js.map +1 -1
  198. package/dist/predictive-back/index.d.ts +45 -0
  199. package/dist/predictive-back/index.d.ts.map +1 -0
  200. package/dist/predictive-back/index.js +220 -0
  201. package/dist/predictive-back/index.js.map +1 -0
  202. package/dist/predictive-back/presentation.d.ts +4 -0
  203. package/dist/predictive-back/presentation.d.ts.map +1 -0
  204. package/dist/predictive-back/presentation.js +3 -0
  205. package/dist/predictive-back/presentation.js.map +1 -0
  206. package/dist/press.d.ts.map +1 -1
  207. package/dist/press.js +11 -2
  208. package/dist/press.js.map +1 -1
  209. package/dist/reorder/handle.d.ts +6 -0
  210. package/dist/reorder/handle.d.ts.map +1 -0
  211. package/dist/reorder/handle.js +10 -0
  212. package/dist/reorder/handle.js.map +1 -0
  213. package/dist/reorder/index.d.ts +10 -0
  214. package/dist/reorder/index.d.ts.map +1 -0
  215. package/dist/reorder/index.js +233 -0
  216. package/dist/reorder/index.js.map +1 -0
  217. package/dist/reorder/list-view.d.ts +5 -0
  218. package/dist/reorder/list-view.d.ts.map +1 -0
  219. package/dist/reorder/list-view.js +238 -0
  220. package/dist/reorder/list-view.js.map +1 -0
  221. package/dist/reorder/model.d.ts +6 -0
  222. package/dist/reorder/model.d.ts.map +1 -0
  223. package/dist/reorder/model.js +30 -0
  224. package/dist/reorder/model.js.map +1 -0
  225. package/dist/reorder/surface.d.ts +6 -0
  226. package/dist/reorder/surface.d.ts.map +1 -0
  227. package/dist/reorder/surface.js +10 -0
  228. package/dist/reorder/surface.js.map +1 -0
  229. package/dist/reorder/types.d.ts +92 -0
  230. package/dist/reorder/types.d.ts.map +1 -0
  231. package/dist/reorder/types.js +2 -0
  232. package/dist/reorder/types.js.map +1 -0
  233. package/dist/sampling.d.ts +35 -0
  234. package/dist/sampling.d.ts.map +1 -0
  235. package/dist/sampling.js +123 -0
  236. package/dist/sampling.js.map +1 -0
  237. package/dist/scene-appearance.d.ts +14 -0
  238. package/dist/scene-appearance.d.ts.map +1 -0
  239. package/dist/scene-appearance.js +68 -0
  240. package/dist/scene-appearance.js.map +1 -0
  241. package/dist/scene-camera.d.ts +5 -0
  242. package/dist/scene-camera.d.ts.map +1 -0
  243. package/dist/scene-camera.js +23 -0
  244. package/dist/scene-camera.js.map +1 -0
  245. package/dist/scene-shader.d.ts +18 -0
  246. package/dist/scene-shader.d.ts.map +1 -0
  247. package/dist/scene-shader.js +76 -0
  248. package/dist/scene-shader.js.map +1 -0
  249. package/dist/scroll-header/geometry.d.ts +18 -0
  250. package/dist/scroll-header/geometry.d.ts.map +1 -0
  251. package/dist/scroll-header/geometry.js +46 -0
  252. package/dist/scroll-header/geometry.js.map +1 -0
  253. package/dist/scroll-header/index.d.ts +48 -0
  254. package/dist/scroll-header/index.d.ts.map +1 -0
  255. package/dist/scroll-header/index.js +399 -0
  256. package/dist/scroll-header/index.js.map +1 -0
  257. package/dist/scroll-header/native.d.ts +28 -0
  258. package/dist/scroll-header/native.d.ts.map +1 -0
  259. package/dist/scroll-header/native.js +43 -0
  260. package/dist/scroll-header/native.js.map +1 -0
  261. package/dist/sensors/index.d.ts +69 -0
  262. package/dist/sensors/index.d.ts.map +1 -0
  263. package/dist/sensors/index.js +149 -0
  264. package/dist/sensors/index.js.map +1 -0
  265. package/dist/sensors/native.d.ts +20 -0
  266. package/dist/sensors/native.d.ts.map +1 -0
  267. package/dist/sensors/native.js +48 -0
  268. package/dist/sensors/native.js.map +1 -0
  269. package/dist/sequence.d.ts +24 -0
  270. package/dist/sequence.d.ts.map +1 -1
  271. package/dist/sequence.js +181 -19
  272. package/dist/sequence.js.map +1 -1
  273. package/dist/shapes/android.d.ts +3 -0
  274. package/dist/shapes/android.d.ts.map +1 -0
  275. package/dist/shapes/android.js +51 -0
  276. package/dist/shapes/android.js.map +1 -0
  277. package/dist/shapes/index.d.ts +6 -0
  278. package/dist/shapes/index.d.ts.map +1 -0
  279. package/dist/shapes/index.js +238 -0
  280. package/dist/shapes/index.js.map +1 -0
  281. package/dist/shapes/ios.d.ts +3 -0
  282. package/dist/shapes/ios.d.ts.map +1 -0
  283. package/dist/shapes/ios.js +164 -0
  284. package/dist/shapes/ios.js.map +1 -0
  285. package/dist/shapes/native.d.ts +18 -0
  286. package/dist/shapes/native.d.ts.map +1 -0
  287. package/dist/shapes/native.js +10 -0
  288. package/dist/shapes/native.js.map +1 -0
  289. package/dist/shapes/path.d.ts +10 -0
  290. package/dist/shapes/path.d.ts.map +1 -0
  291. package/dist/shapes/path.js +106 -0
  292. package/dist/shapes/path.js.map +1 -0
  293. package/dist/shapes/types.d.ts +55 -0
  294. package/dist/shapes/types.d.ts.map +1 -0
  295. package/dist/shapes/types.js +11 -0
  296. package/dist/shapes/types.js.map +1 -0
  297. package/dist/shared-layout/index.d.ts +40 -0
  298. package/dist/shared-layout/index.d.ts.map +1 -0
  299. package/dist/shared-layout/index.js +267 -0
  300. package/dist/shared-layout/index.js.map +1 -0
  301. package/dist/shared-layout/native.d.ts +15 -0
  302. package/dist/shared-layout/native.d.ts.map +1 -0
  303. package/dist/shared-layout/native.js +79 -0
  304. package/dist/shared-layout/native.js.map +1 -0
  305. package/dist/shared-layout/timing.d.ts +9 -0
  306. package/dist/shared-layout/timing.d.ts.map +1 -0
  307. package/dist/shared-layout/timing.js +68 -0
  308. package/dist/shared-layout/timing.js.map +1 -0
  309. package/dist/shared-navigation/entry.d.ts +51 -0
  310. package/dist/shared-navigation/entry.d.ts.map +1 -0
  311. package/dist/shared-navigation/entry.js +619 -0
  312. package/dist/shared-navigation/entry.js.map +1 -0
  313. package/dist/shared-navigation/index.d.ts +58 -0
  314. package/dist/shared-navigation/index.d.ts.map +1 -0
  315. package/dist/shared-navigation/index.js +318 -0
  316. package/dist/shared-navigation/index.js.map +1 -0
  317. package/dist/shared-navigation/return-signal.d.ts +16 -0
  318. package/dist/shared-navigation/return-signal.d.ts.map +1 -0
  319. package/dist/shared-navigation/return-signal.js +35 -0
  320. package/dist/shared-navigation/return-signal.js.map +1 -0
  321. package/dist/shared-navigation/return-target.d.ts +32 -0
  322. package/dist/shared-navigation/return-target.d.ts.map +1 -0
  323. package/dist/shared-navigation/return-target.js +168 -0
  324. package/dist/shared-navigation/return-target.js.map +1 -0
  325. package/dist/shared-navigation/scope.d.ts +4 -0
  326. package/dist/shared-navigation/scope.d.ts.map +1 -0
  327. package/dist/shared-navigation/scope.js +2 -0
  328. package/dist/shared-navigation/scope.js.map +1 -0
  329. package/dist/shared-navigation/targets.d.ts +6 -0
  330. package/dist/shared-navigation/targets.d.ts.map +1 -0
  331. package/dist/shared-navigation/targets.js +36 -0
  332. package/dist/shared-navigation/targets.js.map +1 -0
  333. package/dist/size-layout.d.ts +19 -0
  334. package/dist/size-layout.d.ts.map +1 -0
  335. package/dist/size-layout.js +216 -0
  336. package/dist/size-layout.js.map +1 -0
  337. package/dist/size.d.ts +19 -0
  338. package/dist/size.d.ts.map +1 -0
  339. package/dist/size.js +251 -0
  340. package/dist/size.js.map +1 -0
  341. package/dist/spring.d.ts +2 -0
  342. package/dist/spring.d.ts.map +1 -1
  343. package/dist/spring.js +11 -0
  344. package/dist/spring.js.map +1 -1
  345. package/dist/svg-path.d.ts +18 -0
  346. package/dist/svg-path.d.ts.map +1 -1
  347. package/dist/svg-path.js +3 -2
  348. package/dist/svg-path.js.map +1 -1
  349. package/dist/testing/clock.d.ts +40 -0
  350. package/dist/testing/clock.d.ts.map +1 -0
  351. package/dist/testing/clock.js +116 -0
  352. package/dist/testing/clock.js.map +1 -0
  353. package/dist/testing/handoff-recorder.d.ts +8 -0
  354. package/dist/testing/handoff-recorder.d.ts.map +1 -0
  355. package/dist/testing/handoff-recorder.js +77 -0
  356. package/dist/testing/handoff-recorder.js.map +1 -0
  357. package/dist/testing/index.d.ts +5 -0
  358. package/dist/testing/index.d.ts.map +1 -0
  359. package/dist/testing/index.js +5 -0
  360. package/dist/testing/index.js.map +1 -0
  361. package/dist/testing/native.d.ts +46 -0
  362. package/dist/testing/native.d.ts.map +1 -0
  363. package/dist/testing/native.js +313 -0
  364. package/dist/testing/native.js.map +1 -0
  365. package/dist/testing/presentation.d.ts +11 -0
  366. package/dist/testing/presentation.d.ts.map +1 -0
  367. package/dist/testing/presentation.js +45 -0
  368. package/dist/testing/presentation.js.map +1 -0
  369. package/dist/testing/replay.d.ts +39 -0
  370. package/dist/testing/replay.d.ts.map +1 -0
  371. package/dist/testing/replay.js +99 -0
  372. package/dist/testing/replay.js.map +1 -0
  373. package/dist/testing/scroll-handoff-native.d.ts +10 -0
  374. package/dist/testing/scroll-handoff-native.d.ts.map +1 -0
  375. package/dist/testing/scroll-handoff-native.js +151 -0
  376. package/dist/testing/scroll-handoff-native.js.map +1 -0
  377. package/dist/testing/scroll-handoff.d.ts +25 -0
  378. package/dist/testing/scroll-handoff.d.ts.map +1 -0
  379. package/dist/testing/scroll-handoff.js +127 -0
  380. package/dist/testing/scroll-handoff.js.map +1 -0
  381. package/dist/testing/sensors.d.ts +13 -0
  382. package/dist/testing/sensors.d.ts.map +1 -0
  383. package/dist/testing/sensors.js +26 -0
  384. package/dist/testing/sensors.js.map +1 -0
  385. package/dist/testing/trace.d.ts +101 -0
  386. package/dist/testing/trace.d.ts.map +1 -0
  387. package/dist/testing/trace.js +263 -0
  388. package/dist/testing/trace.js.map +1 -0
  389. package/dist/timed-animation.d.ts +38 -0
  390. package/dist/timed-animation.d.ts.map +1 -0
  391. package/dist/timed-animation.js +177 -0
  392. package/dist/timed-animation.js.map +1 -0
  393. package/dist/track.d.ts +3 -0
  394. package/dist/track.d.ts.map +1 -1
  395. package/dist/track.js +281 -40
  396. package/dist/track.js.map +1 -1
  397. package/dist/transition.d.ts +54 -2
  398. package/dist/transition.d.ts.map +1 -1
  399. package/dist/transition.js +128 -8
  400. package/dist/transition.js.map +1 -1
  401. package/dist/types.d.ts +10 -1
  402. package/dist/types.d.ts.map +1 -1
  403. package/dist/value-observers.d.ts +22 -0
  404. package/dist/value-observers.d.ts.map +1 -0
  405. package/dist/value-observers.js +122 -0
  406. package/dist/value-observers.js.map +1 -0
  407. package/dist/value-track.d.ts +13 -0
  408. package/dist/value-track.d.ts.map +1 -0
  409. package/dist/value-track.js +59 -0
  410. package/dist/value-track.js.map +1 -0
  411. package/dist/vue/index.d.ts +33 -3
  412. package/dist/vue/index.d.ts.map +1 -1
  413. package/dist/vue/index.js +118 -3
  414. package/dist/vue/index.js.map +1 -1
  415. package/dist/zoomable.d.ts +1 -1
  416. package/dist/zoomable.d.ts.map +1 -1
  417. package/package.json +68 -3
  418. package/platforms/android/include.gradle +10 -0
  419. package/platforms/android/java/org/rafaelaugusto/jolt/BlurEffect.java +89 -0
  420. package/platforms/android/java/org/rafaelaugusto/jolt/CircleMath.java +158 -0
  421. package/platforms/android/java/org/rafaelaugusto/jolt/CircleWorld.java +221 -0
  422. package/platforms/android/java/org/rafaelaugusto/jolt/GestureSession.java +227 -0
  423. package/platforms/android/java/org/rafaelaugusto/jolt/GestureSurface.java +54 -0
  424. package/platforms/android/java/org/rafaelaugusto/jolt/GradientLayer.java +224 -0
  425. package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFrame.java +53 -0
  426. package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFrameFollower.java +57 -0
  427. package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardObserver.java +97 -0
  428. package/platforms/android/java/org/rafaelaugusto/jolt/LiveSpring.java +277 -0
  429. package/platforms/android/java/org/rafaelaugusto/jolt/MotionProbe.java +70 -0
  430. package/platforms/android/java/org/rafaelaugusto/jolt/ParticleEmitter.java +192 -0
  431. package/platforms/android/java/org/rafaelaugusto/jolt/ParticleSimulation.java +114 -0
  432. package/platforms/android/java/org/rafaelaugusto/jolt/PredictiveBackSession.java +212 -0
  433. package/platforms/android/java/org/rafaelaugusto/jolt/ReorderHandle.java +25 -0
  434. package/platforms/android/java/org/rafaelaugusto/jolt/ReorderSession.java +213 -0
  435. package/platforms/android/java/org/rafaelaugusto/jolt/ReorderSurface.java +27 -0
  436. package/platforms/android/java/org/rafaelaugusto/jolt/ScrollHeader.java +84 -0
  437. package/platforms/android/java/org/rafaelaugusto/jolt/SensorMath.java +28 -0
  438. package/platforms/android/java/org/rafaelaugusto/jolt/SensorSource.java +217 -0
  439. package/platforms/android/java/org/rafaelaugusto/jolt/ShapeLayer.java +120 -0
  440. package/platforms/android/java/org/rafaelaugusto/jolt/SharedLayoutFlight.java +287 -0
  441. package/platforms/android/java/org/rafaelaugusto/jolt/SharedNavigationScene.java +115 -0
  442. package/platforms/android/java/org/rafaelaugusto/jolt/SpringState.java +39 -0
  443. package/platforms/android/proguard-rules.pro +20 -0
  444. package/platforms/ios/build.xcconfig +1 -1
  445. package/platforms/ios/src/JoltBlur.h +14 -0
  446. package/platforms/ios/src/JoltBlur.m +86 -0
  447. package/platforms/ios/src/JoltCircleMath.h +191 -0
  448. package/platforms/ios/src/JoltCircleWorld.h +18 -0
  449. package/platforms/ios/src/JoltCircleWorld.m +218 -0
  450. package/platforms/ios/src/JoltGestureSession.h +23 -0
  451. package/platforms/ios/src/JoltGestureSession.m +251 -0
  452. package/platforms/ios/src/JoltInteractiveNavigation.h +23 -0
  453. package/platforms/ios/src/JoltInteractiveNavigation.m +255 -0
  454. package/platforms/ios/src/JoltLiveSpring.h +29 -0
  455. package/platforms/ios/src/JoltLiveSpring.m +243 -0
  456. package/platforms/ios/src/JoltMotionProbe.h +9 -0
  457. package/platforms/ios/src/JoltMotionProbe.m +72 -0
  458. package/platforms/ios/src/JoltReorderSession.h +15 -0
  459. package/platforms/ios/src/JoltReorderSession.m +205 -0
  460. package/platforms/ios/src/JoltScrollHeader.h +13 -0
  461. package/platforms/ios/src/JoltScrollHeader.m +101 -0
  462. package/platforms/ios/src/JoltSensorMath.h +39 -0
  463. package/platforms/ios/src/JoltSensorSource.h +13 -0
  464. package/platforms/ios/src/JoltSensorSource.m +201 -0
  465. package/platforms/ios/src/JoltSharedLayoutFlight.h +19 -0
  466. package/platforms/ios/src/JoltSharedLayoutFlight.m +250 -0
  467. package/platforms/ios/src/JoltSpringState.h +35 -0
  468. package/platforms/ios/src/module.modulemap +10 -0
  469. package/src/android-plugin.d.ts +464 -0
  470. package/src/animate.ts +129 -15
  471. package/src/blur/index.ts +195 -0
  472. package/src/blur/native.ts +70 -0
  473. package/src/blur/types.ts +32 -0
  474. package/src/bottom-sheet/geometry.ts +84 -0
  475. package/src/bottom-sheet/index.ts +536 -0
  476. package/src/bottom-sheet/native.ts +214 -0
  477. package/src/config.ts +39 -1
  478. package/src/decay.ts +9 -0
  479. package/src/drag.ts +67 -21
  480. package/src/driver/android-gradient.ts +116 -0
  481. package/src/driver/android-particles.ts +118 -0
  482. package/src/driver/android.ts +31 -1
  483. package/src/driver/frame.ts +10 -0
  484. package/src/driver/index.ts +4 -0
  485. package/src/driver/ios-gradient.ts +136 -0
  486. package/src/driver/ios-scroll-delegate.ts +23 -0
  487. package/src/driver/ios.ts +10 -0
  488. package/src/easing.ts +21 -1
  489. package/src/engine.ts +209 -60
  490. package/src/gesture-native.ts +139 -0
  491. package/src/gestures/index.ts +365 -0
  492. package/src/glass/index.ts +218 -0
  493. package/src/gradient-binding.ts +158 -0
  494. package/src/gradient.ts +663 -0
  495. package/src/gravity.ts +107 -0
  496. package/src/haptics.ts +106 -28
  497. package/src/image-effect.ts +10 -2
  498. package/src/index.ts +56 -7
  499. package/src/inspector/index.ts +523 -0
  500. package/src/inspector/plot.ts +27 -0
  501. package/src/inspector/probe.ts +50 -0
  502. package/src/inspector/tuning.ts +51 -0
  503. package/src/interactive-navigation/index.ts +427 -0
  504. package/src/ios-plugin.d.ts +280 -0
  505. package/src/keyboard.ts +231 -7
  506. package/src/live-spring-driver.ts +181 -0
  507. package/src/mixer.ts +312 -0
  508. package/src/motion-scope.ts +39 -6
  509. package/src/motion-states.ts +149 -42
  510. package/src/motion-value.ts +1289 -0
  511. package/src/native/index.ts +30 -0
  512. package/src/native-properties.ts +188 -0
  513. package/src/native-property-driver.ts +123 -0
  514. package/src/native-property.ts +366 -0
  515. package/src/particles.ts +18 -17
  516. package/src/path.ts +2 -1
  517. package/src/physics/index.ts +476 -0
  518. package/src/physics/native.ts +121 -0
  519. package/src/playback-group.ts +17 -1
  520. package/src/playback.ts +41 -0
  521. package/src/predictive-back/index.ts +280 -0
  522. package/src/predictive-back/presentation.ts +6 -0
  523. package/src/press.ts +10 -2
  524. package/src/reorder/handle.ts +9 -0
  525. package/src/reorder/index.ts +243 -0
  526. package/src/reorder/list-view.ts +262 -0
  527. package/src/reorder/model.ts +47 -0
  528. package/src/reorder/surface.ts +10 -0
  529. package/src/reorder/types.ts +87 -0
  530. package/src/sampling.ts +173 -0
  531. package/src/scene-appearance.ts +92 -0
  532. package/src/scene-camera.ts +30 -0
  533. package/src/scene-shader.ts +139 -0
  534. package/src/scroll-header/geometry.ts +88 -0
  535. package/src/scroll-header/index.ts +530 -0
  536. package/src/scroll-header/native.ts +89 -0
  537. package/src/sensors/index.ts +246 -0
  538. package/src/sensors/native.ts +72 -0
  539. package/src/sequence.ts +209 -20
  540. package/src/shapes/android.ts +63 -0
  541. package/src/shapes/index.ts +267 -0
  542. package/src/shapes/ios.ts +194 -0
  543. package/src/shapes/native.ts +27 -0
  544. package/src/shapes/path.ts +127 -0
  545. package/src/shapes/types.ts +63 -0
  546. package/src/shared-layout/index.ts +343 -0
  547. package/src/shared-layout/native.ts +138 -0
  548. package/src/shared-layout/timing.ts +87 -0
  549. package/src/shared-navigation/entry.ts +695 -0
  550. package/src/shared-navigation/index.ts +414 -0
  551. package/src/shared-navigation/return-signal.ts +41 -0
  552. package/src/shared-navigation/return-target.ts +197 -0
  553. package/src/shared-navigation/scope.ts +3 -0
  554. package/src/shared-navigation/targets.ts +38 -0
  555. package/src/size-layout.ts +237 -0
  556. package/src/size.ts +302 -0
  557. package/src/spring.ts +18 -0
  558. package/src/svg-path.ts +8 -3
  559. package/src/testing/clock.ts +128 -0
  560. package/src/testing/handoff-recorder.ts +98 -0
  561. package/src/testing/index.ts +4 -0
  562. package/src/testing/native.ts +386 -0
  563. package/src/testing/presentation.ts +46 -0
  564. package/src/testing/replay.ts +149 -0
  565. package/src/testing/scroll-handoff-native.ts +201 -0
  566. package/src/testing/scroll-handoff.ts +140 -0
  567. package/src/testing/sensors.ts +41 -0
  568. package/src/testing/trace.ts +340 -0
  569. package/src/timed-animation.ts +192 -0
  570. package/src/track.ts +334 -38
  571. package/src/transition.ts +197 -9
  572. package/src/types.ts +11 -1
  573. package/src/value-observers.ts +147 -0
  574. package/src/value-track.ts +71 -0
  575. package/src/vue/index.ts +147 -1
  576. package/src/zoomable.ts +1 -1
package/src/keyboard.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import { Application, Utils, isAndroid, isIOS, type View } from '@nativescript/core'
2
- import { stop, toView } from './animate.js'
2
+ import { animate, stop, toView } from './animate.js'
3
+ import type { EasingFunction, EasingName } from './easing.js'
4
+ import type { Spring, Transition, Tween } from './transition.js'
3
5
  import type { Target } from './types.js'
4
6
 
5
7
  export interface KeyboardOptions {
@@ -7,7 +9,180 @@ export interface KeyboardOptions {
7
9
  offset?: number
8
10
  }
9
11
 
12
+ export interface KeyboardState {
13
+ /** Whether a docked software keyboard covers part of the window. */
14
+ readonly visible: boolean
15
+ /** DIPs of the window the keyboard covers, from its bottom edge. Zero when hidden or floating. */
16
+ readonly height: number
17
+ /** Milliseconds the keyboard takes to get there. Zero when it changes at once. */
18
+ readonly duration: number
19
+ /** The keyboard's own timing, to pass to `animate()` and move in step with it. */
20
+ readonly transition: Transition
21
+ }
22
+
10
23
  const BEGIN_FROM_CURRENT_STATE = 4
24
+ const IOS_KEYBOARD_CURVE = 7
25
+ // Measured: Core Animation plays the keyboard's spring (stiffness 1000, mass 3) critically damped in 500 ms.
26
+ const iosKeyboard: Spring = {
27
+ type: 'spring',
28
+ stiffness: 1000,
29
+ mass: 3,
30
+ damping: 2 * Math.sqrt(3000),
31
+ }
32
+ const iosCurves: readonly EasingName[] = ['easeInOut', 'easeIn', 'easeOut', 'linear']
33
+ // Before Android 11 nothing reports the keyboard's timing. Measured on an Android 9 emulator,
34
+ // its window fades and slides into place in about 150 ms, decelerating, and leaves as quickly.
35
+ const LEGACY_DURATION = 150
36
+ const legacyShow: Tween = { duration: LEGACY_DURATION, ease: 'quadOut' }
37
+ const legacyHide: Tween = { duration: LEGACY_DURATION, ease: 'quadIn' }
38
+ const legacy = () => isAndroid && android.os.Build.VERSION.SDK_INT < 30
39
+ const hidden: KeyboardState = Object.freeze({
40
+ visible: false,
41
+ height: 0,
42
+ duration: 0,
43
+ transition: { duration: 0 },
44
+ })
45
+
46
+ const listeners = new Set<(keyboard: KeyboardState) => void>()
47
+ let state = hidden
48
+ let unwatch: (() => void) | undefined
49
+
50
+ /**
51
+ * Calls back whenever the keyboard shows, hides or changes height, with how much
52
+ * of the window it covers and its timing. Returns a cleanup function.
53
+ *
54
+ * ```ts
55
+ * const off = onKeyboard(({ visible, transition }) => {
56
+ * animate(header, { scale: visible ? 0.8 : 1 }, transition)
57
+ * })
58
+ * ```
59
+ */
60
+ export function onKeyboard(callback: (keyboard: KeyboardState) => void): () => void {
61
+ if (typeof callback !== 'function')
62
+ throw new TypeError('onKeyboard() takes a callback.')
63
+ const listener = (keyboard: KeyboardState) => callback(keyboard)
64
+ if (listeners.size === 0) {
65
+ state = hidden
66
+ unwatch = isIOS ? watchIOS() : isAndroid ? watchAndroid() : undefined
67
+ }
68
+ listeners.add(listener)
69
+ return () => {
70
+ if (!listeners.delete(listener) || listeners.size > 0) return
71
+ unwatch?.()
72
+ unwatch = undefined
73
+ }
74
+ }
75
+
76
+ /** The last state reported while someone listens. */
77
+ export function currentKeyboard(): KeyboardState {
78
+ return state
79
+ }
80
+
81
+ function update(height: number, duration: number, transition: Transition) {
82
+ if (height === state.height) return
83
+ state = Object.freeze({ visible: height > 0, height, duration, transition })
84
+ for (const listener of [...listeners]) listener(state)
85
+ }
86
+
87
+ function watchIOS() {
88
+ const name = UIKeyboardWillChangeFrameNotification
89
+ const observer = Application.ios.addNotificationObserver(
90
+ name,
91
+ (notification: NSNotification) => {
92
+ const info = notification.userInfo
93
+ const window = Application.ios.window
94
+ const end = info?.objectForKey(UIKeyboardFrameEndUserInfoKey)?.CGRectValue as
95
+ CGRect | undefined
96
+ if (!info || !window || !end) return
97
+ const frame = window.convertRectFromWindow(end, null)
98
+ const bottom = window.bounds.size.height
99
+ const docked =
100
+ frame.size.height > 0 &&
101
+ frame.origin.y < bottom &&
102
+ frame.origin.y + frame.size.height >= bottom - 0.5
103
+ const reported = numberIn(info, UIKeyboardAnimationDurationUserInfoKey) * 1000
104
+ const curve = numberIn(info, UIKeyboardAnimationCurveUserInfoKey)
105
+ const height = docked ? bottom - frame.origin.y : 0
106
+ if (!reported) return update(height, 0, { duration: 0 })
107
+ if (curve === IOS_KEYBOARD_CURVE) return update(height, 500, iosKeyboard)
108
+ update(height, reported, {
109
+ duration: reported,
110
+ ease: iosCurves[curve] ?? 'easeInOut',
111
+ })
112
+ },
113
+ )
114
+ return () => Application.ios.removeNotificationObserver(observer, name)
115
+ }
116
+
117
+ function watchAndroid() {
118
+ const density = Utils.layout.getDisplayDensity()
119
+ let observer:
120
+ | org.rafaelaugusto.jolt.KeyboardObserver
121
+ | org.rafaelaugusto.jolt.KeyboardFrame
122
+ | undefined
123
+ let stopped = false
124
+ const attach = () => {
125
+ Application.off(Application.launchEvent, attach)
126
+ if (stopped || observer) return
127
+ const activity =
128
+ Application.android.foregroundActivity ?? Application.android.startActivity
129
+ const root = activity?.getWindow()?.getDecorView()
130
+ if (!root) return
131
+ try {
132
+ observer = legacy()
133
+ ? new org.rafaelaugusto.jolt.KeyboardFrame(
134
+ root,
135
+ new org.rafaelaugusto.jolt.KeyboardFrame.Listener({
136
+ onChange: (height) =>
137
+ update(
138
+ height / density,
139
+ LEGACY_DURATION,
140
+ height ? legacyShow : legacyHide,
141
+ ),
142
+ }),
143
+ )
144
+ : new org.rafaelaugusto.jolt.KeyboardObserver(
145
+ root,
146
+ new org.rafaelaugusto.jolt.KeyboardObserver.Listener({
147
+ onChange: (height, duration, curve) =>
148
+ update(
149
+ height / density,
150
+ duration,
151
+ duration
152
+ ? { duration, ease: curve ? sampled(curve) : 'linear' }
153
+ : { duration: 0 },
154
+ ),
155
+ }),
156
+ )
157
+ } catch {
158
+ // A JS-only update cannot install the native plugin.
159
+ return
160
+ }
161
+ observer.attach()
162
+ const height = observer.height() / density
163
+ if (height > 0) state = Object.freeze({ ...hidden, visible: true, height })
164
+ }
165
+ if (Application.android.foregroundActivity ?? Application.android.startActivity)
166
+ attach()
167
+ else Application.on(Application.launchEvent, attach)
168
+ return () => {
169
+ stopped = true
170
+ Application.off(Application.launchEvent, attach)
171
+ observer?.detach()
172
+ observer = undefined
173
+ }
174
+ }
175
+
176
+ function sampled(curve: ArrayLike<number>): EasingFunction {
177
+ const values = Array.from({ length: curve.length }, (_, i) => curve[i]!)
178
+ const last = values.length - 1
179
+ if (last < 1) return (progress) => progress
180
+ return (progress) => {
181
+ const position = Math.min(Math.max(progress, 0), 1) * last
182
+ const index = Math.min(Math.floor(position), last - 1)
183
+ return values[index]! + (values[index + 1]! - values[index]!) * (position - index)
184
+ }
185
+ }
11
186
 
12
187
  /**
13
188
  * Lifts the view by its overlap with the software keyboard, at the keyboard's
@@ -55,12 +230,9 @@ function followIOS(view: View, offset: number) {
55
230
  const apply = () => {
56
231
  view.translateY = overlap ? -overlap : 0
57
232
  }
58
- const duration = info.objectForKey(UIKeyboardAnimationDurationUserInfoKey)
59
- ?.doubleValue as number | undefined
233
+ const duration = numberIn(info, UIKeyboardAnimationDurationUserInfoKey)
60
234
  if (!duration) return apply()
61
- const curve =
62
- (info.objectForKey(UIKeyboardAnimationCurveUserInfoKey)?.integerValue as
63
- number | undefined) ?? 0
235
+ const curve = numberIn(info, UIKeyboardAnimationCurveUserInfoKey)
64
236
  // The keyboard's curve is private; shifted into the options it still applies.
65
237
  UIView.animateWithDurationDelayOptionsAnimationsCompletion(
66
238
  duration,
@@ -89,7 +261,7 @@ function followIOS(view: View, offset: number) {
89
261
  }
90
262
 
91
263
  function followAndroid(view: View, offset: number) {
92
- if (android.os.Build.VERSION.SDK_INT < 30) return () => {}
264
+ if (legacy()) return followLegacy(view, offset)
93
265
  const density = Utils.layout.getDisplayDensity()
94
266
  let disposed = false
95
267
  let follower: org.rafaelaugusto.jolt.KeyboardFollower | undefined
@@ -130,3 +302,55 @@ function followAndroid(view: View, offset: number) {
130
302
  if (view.isLoaded) attach()
131
303
  return cleanup
132
304
  }
305
+
306
+ /** Android 7 to 10: no frame-by-frame progress, so the view animates with the keyboard's usual timing. */
307
+ function followLegacy(view: View, offset: number) {
308
+ const density = Utils.layout.getDisplayDensity()
309
+ let disposed = false
310
+ let follower: org.rafaelaugusto.jolt.KeyboardFrameFollower | undefined
311
+ const attach = () => {
312
+ if (disposed || follower) return
313
+ const native = view.nativeViewProtected as android.view.View | undefined
314
+ if (!native) return
315
+ try {
316
+ follower = new org.rafaelaugusto.jolt.KeyboardFrameFollower(
317
+ native,
318
+ offset * density,
319
+ new org.rafaelaugusto.jolt.KeyboardFrameFollower.Listener({
320
+ onMove: (from, to, keyboard) => {
321
+ stop(view, ['y'])
322
+ view.translateY = from / density
323
+ animate(view, { y: to / density }, keyboard ? legacyShow : legacyHide)
324
+ },
325
+ }),
326
+ )
327
+ } catch {
328
+ // A JS-only update cannot install the native plugin. Leave the platform's resize in place.
329
+ return
330
+ }
331
+ follower.attach()
332
+ }
333
+ const cleanup = () => {
334
+ if (disposed) return
335
+ disposed = true
336
+ view.off('loaded', attach)
337
+ view.off('unloaded', cleanup)
338
+ if (follower) {
339
+ follower.detach()
340
+ follower = undefined
341
+ stop(view, ['y'])
342
+ view.translateY = 0
343
+ }
344
+ }
345
+ view.on('loaded', attach)
346
+ view.on('unloaded', cleanup)
347
+ if (view.isLoaded) attach()
348
+ return cleanup
349
+ }
350
+
351
+ /** The runtime hands NSNumber values over as plain numbers. */
352
+ function numberIn(info: NSDictionary<unknown, unknown>, key: string): number {
353
+ const value = info.objectForKey(key) as number | NSNumber | null | undefined
354
+ if (typeof value === 'number') return value
355
+ return value?.doubleValue ?? 0
356
+ }
@@ -0,0 +1,181 @@
1
+ import { isAndroid, type View } from '@nativescript/core'
2
+ import type { NumericProperty } from './properties.js'
3
+ import { retainInteractiveLayout } from './driver/ios-layout.js'
4
+
5
+ export interface LiveMapping {
6
+ input: readonly number[]
7
+ output: readonly number[]
8
+ clamp: boolean
9
+ }
10
+ export interface LiveSpringPhysics {
11
+ stiffness: number
12
+ damping: number
13
+ mass: number
14
+ restDelta: number
15
+ restSpeed: number
16
+ }
17
+ export interface LiveInput {
18
+ value: number
19
+ running: boolean
20
+ elapsed: number
21
+ duration: number
22
+ delay: number
23
+ repeat: number
24
+ reverse: boolean
25
+ to: number
26
+ times: readonly number[]
27
+ values: readonly number[]
28
+ }
29
+ export interface LiveBinding {
30
+ value(): number
31
+ layers(inputs: readonly LiveInput[]): void
32
+ cancel(): void
33
+ }
34
+ export interface LiveNode {
35
+ position(): number
36
+ velocity(): number
37
+ moving(): boolean
38
+ follow(source: LiveNode, maps: readonly LiveMapping[]): void
39
+ update(input: LiveInput): void
40
+ reduced(value: boolean): void
41
+ paused(value: boolean): void
42
+ bind(view: View, property: NumericProperty, maps: readonly LiveMapping[]): LiveBinding
43
+ dispose(): void
44
+ }
45
+ export interface LiveSpringDriver {
46
+ create(initial: number, physics: LiveSpringPhysics, reduced: boolean): LiveNode
47
+ sync(view: View): void
48
+ }
49
+ let override: LiveSpringDriver | undefined
50
+ export function setLiveSpringDriver(driver: LiveSpringDriver | undefined) {
51
+ override = driver
52
+ }
53
+ export function liveSpringDriver(): LiveSpringDriver {
54
+ if (override) return override
55
+ if (!available())
56
+ throw new Error(
57
+ 'springValue() needs the Jolt native classes. Rebuild the native app after upgrading Jolt.',
58
+ )
59
+ return nativeDriver
60
+ }
61
+ function available() {
62
+ return isAndroid
63
+ ? typeof org !== 'undefined' &&
64
+ typeof org.rafaelaugusto.jolt.LiveSpring === 'function'
65
+ : typeof JoltLiveSpring !== 'undefined'
66
+ }
67
+ export function syncLiveSprings(view: View) {
68
+ if (override) override.sync(view)
69
+ else if (available() && view.nativeViewProtected) nativeDriver.sync(view)
70
+ }
71
+ const handles = new WeakMap<
72
+ LiveNode,
73
+ org.rafaelaugusto.jolt.LiveSpring | JoltLiveSpring
74
+ >()
75
+ /** Internal native input connection; never exposes handles through the public value API. */
76
+ export function nativeLiveNode(node: LiveNode) {
77
+ const handle = handles.get(node)
78
+ if (!handle) throw new Error('A gesture needs a native live value node.')
79
+ return handle
80
+ }
81
+ const nativeDriver: LiveSpringDriver = {
82
+ create(initial, physics, reduced) {
83
+ const { stiffness, damping, mass, restDelta, restSpeed } = physics
84
+ if (isAndroid) {
85
+ const native = new org.rafaelaugusto.jolt.LiveSpring(
86
+ initial,
87
+ stiffness,
88
+ damping,
89
+ mass,
90
+ restDelta,
91
+ restSpeed,
92
+ reduced,
93
+ )
94
+ const node: LiveNode = {
95
+ position: () => native.getPosition(),
96
+ velocity: () => native.getVelocity(),
97
+ moving: () => native.isMoving(),
98
+ follow: (source, maps) =>
99
+ native.follow(
100
+ handles.get(source) as org.rafaelaugusto.jolt.LiveSpring,
101
+ JSON.stringify(maps),
102
+ ),
103
+ update: (input) =>
104
+ input.running
105
+ ? native.updateInput(JSON.stringify(input))
106
+ : native.setTarget(input.value),
107
+ reduced: (value) => native.setReduced(value),
108
+ paused: (value) => native.setPaused(value),
109
+ bind(view, property, maps) {
110
+ const binding = native.bind(
111
+ view.nativeViewProtected,
112
+ property,
113
+ JSON.stringify(maps),
114
+ )
115
+ return {
116
+ value: () => binding.getValue(),
117
+ layers: (inputs) => binding.setLayers(JSON.stringify(inputs)),
118
+ cancel: () => binding.cancel(),
119
+ }
120
+ },
121
+ dispose: () => native.dispose(),
122
+ }
123
+ handles.set(node, native)
124
+ return node
125
+ }
126
+ const native = JoltLiveSpring.createStiffnessDampingMassRestDeltaRestSpeedReduced(
127
+ initial,
128
+ stiffness,
129
+ damping,
130
+ mass,
131
+ restDelta,
132
+ restSpeed,
133
+ reduced,
134
+ )
135
+ const node: LiveNode = {
136
+ position: () => native.position,
137
+ velocity: () => native.velocity,
138
+ moving: () => native.moving,
139
+ follow: (source, maps) =>
140
+ native.followMappings(
141
+ handles.get(source) as JoltLiveSpring,
142
+ JSON.stringify(maps),
143
+ ),
144
+ update: (input) =>
145
+ input.running
146
+ ? native.updateInput(JSON.stringify(input))
147
+ : native.setTarget(input.value),
148
+ reduced: (value) => native.setReduced(value),
149
+ paused: (value) => native.setPaused(value),
150
+ bind(view, property, maps) {
151
+ const releaseLayout = retainInteractiveLayout(view)
152
+ let binding: JoltLiveSpringBinding
153
+ try {
154
+ binding = native.bindPropertyMappings(
155
+ view.nativeViewProtected,
156
+ property,
157
+ JSON.stringify(maps),
158
+ )
159
+ } catch (error) {
160
+ releaseLayout()
161
+ throw error
162
+ }
163
+ return {
164
+ value: () => binding.value,
165
+ layers: (inputs) => binding.setLayers(JSON.stringify(inputs)),
166
+ cancel: () => {
167
+ binding.cancel()
168
+ releaseLayout()
169
+ },
170
+ }
171
+ },
172
+ dispose: () => native.dispose(),
173
+ }
174
+ handles.set(node, native)
175
+ return node
176
+ },
177
+ sync(view) {
178
+ if (isAndroid) org.rafaelaugusto.jolt.LiveSpring.sync(view.nativeViewProtected)
179
+ else JoltLiveSpring.sync(view.nativeViewProtected)
180
+ },
181
+ }