@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
@@ -0,0 +1,427 @@
1
+ import { ReturnScope } from '../shared-navigation/return-signal.js'
2
+ import {
3
+ Application,
4
+ Image,
5
+ isIOS,
6
+ SharedTransition,
7
+ Transition,
8
+ Trace,
9
+ type EventData,
10
+ type Frame,
11
+ type NavigationTransition,
12
+ type Page,
13
+ type NavigationData,
14
+ } from '@nativescript/core'
15
+ import {
16
+ resolveReturnTarget,
17
+ validateReturnTarget,
18
+ focusReturnTarget,
19
+ type SharedReturnTarget,
20
+ } from '../shared-navigation/return-target.js'
21
+ import { find, radius, supportedImage } from '../shared-navigation/targets.js'
22
+ import { onReducedMotion, reducedMotion, timeScale } from '../config.js'
23
+ import { springPhysics } from '../spring.js'
24
+ import { springs, type Spring } from '../transition.js'
25
+
26
+ export type InteractiveNavigationState =
27
+ 'ready' | 'animating' | 'idle' | 'dragging' | 'finishing' | 'cancelling' | 'disposed'
28
+ export interface InteractiveNavigationEvent {
29
+ state: InteractiveNavigationState
30
+ outcome?: 'completed' | 'cancelled'
31
+ shared?: { status: 'ready' | 'unavailable'; reason?: string }
32
+ /** Present on finishing/cancelling. Velocity is page widths per second. */
33
+ release?: Readonly<{ progress: number; velocity: number }>
34
+ }
35
+ export interface InteractiveNavigationOptions {
36
+ /** Optional stable image/card identity in the two pages. Unsupported pairs use normal page motion. */
37
+ shared?: { tag: string; maxSnapshotPixels?: number; returnTarget?: SharedReturnTarget }
38
+ /** Same physics as Jolt's live springs. Default smooth; settling is bounded at 3 s. */
39
+ spring?:
40
+ | keyof typeof springs
41
+ | Pick<Spring, 'duration' | 'bounce' | 'stiffness' | 'damping' | 'mass'>
42
+ /** Synchronous extra gate. Page.enableSwipeBackNavigation is always respected. */
43
+ canBegin?: () => boolean
44
+ /** Lifecycle only. Finger updates and spring playback stay in Objective-C. */
45
+ onState?: (event: InteractiveNavigationEvent) => void
46
+ }
47
+ export interface InteractiveNavigation {
48
+ readonly supported: boolean
49
+ /** Use for ONE pushed Frame entry. Pass to Frame.navigate or router.push. */
50
+ readonly transition: NavigationTransition | undefined
51
+ readonly state: InteractiveNavigationState
52
+ /** Rolls back a held drag. A release already committed to UIKit finishes normally. */
53
+ cancel(): void
54
+ /** Detaches the gesture; future programmatic back uses UIKit's default transition. */
55
+ dispose(): void
56
+ }
57
+
58
+ /** Interactive iOS page navigation using Core's existing UINavigationController delegate. */
59
+ export function interactiveNavigation(
60
+ frame: Frame,
61
+ options: InteractiveNavigationOptions = {},
62
+ ): InteractiveNavigation {
63
+ if (
64
+ options.shared &&
65
+ (typeof options.shared.tag !== 'string' || !options.shared.tag.trim())
66
+ )
67
+ throw new TypeError('A nonempty sharedTransitionTag is required.')
68
+ validateReturnTarget(options.shared?.returnTarget)
69
+ const budget = options.shared?.maxSnapshotPixels ?? 8_000_000
70
+ if (!Number.isSafeInteger(budget) || budget <= 0 || budget > 32_000_000)
71
+ throw new RangeError('maxSnapshotPixels must be a positive integer at most 32000000.')
72
+ const input =
73
+ typeof options.spring === 'string' ? springs[options.spring] : options.spring
74
+ if (options.spring !== undefined && !input)
75
+ throw new TypeError('Unknown navigation spring.')
76
+ for (const [key, value] of Object.entries(input ?? {}) as [string, unknown][]) {
77
+ if (!['type', 'duration', 'bounce', 'stiffness', 'damping', 'mass'].includes(key))
78
+ throw new TypeError(`Unsupported navigation spring option: ${key}.`)
79
+ if (key === 'type' && value !== 'spring')
80
+ throw new TypeError('Interactive navigation requires a spring.')
81
+ if (key !== 'type' && (typeof value !== 'number' || !Number.isFinite(value)))
82
+ throw new RangeError(`${key} must be finite.`)
83
+ if (['duration', 'stiffness', 'mass'].includes(key) && (value as number) <= 0)
84
+ throw new RangeError(`${key} must be positive.`)
85
+ if (key === 'damping' && (value as number) < 0)
86
+ throw new RangeError('damping must be nonnegative.')
87
+ }
88
+ const physics = springPhysics(input ?? springs.smooth)
89
+ if (Object.values(physics).some((value) => !Number.isFinite(value)))
90
+ throw new RangeError('Navigation spring physics must be finite.')
91
+ const supported = isIOS && typeof JoltInteractiveNavigation !== 'undefined'
92
+ let state: InteractiveNavigationState = 'ready'
93
+ let native: JoltInteractiveNavigation | undefined, page: Page | undefined
94
+ let candidate: Page | undefined
95
+ let start: (() => void) | undefined
96
+ let transitioning = false
97
+ let fromPage: Page | undefined, toPage: Page | undefined
98
+ let shared: InteractiveNavigationEvent['shared']
99
+ let targetScope: ReturnScope | undefined
100
+ let detachTarget: (() => void) | undefined
101
+ let resolvedReturn: import('@nativescript/core').View | undefined
102
+ let returning = false
103
+ let suspended = false
104
+ let resumeTimer: ReturnType<typeof setTimeout> | undefined
105
+ const originalPage = frame.currentPage
106
+ function prepareShared() {
107
+ if (!native || !options.shared) return
108
+ if (returning && options.shared.returnTarget && toPage) {
109
+ targetScope?.abort()
110
+ detachTarget?.()
111
+ detachTarget = undefined
112
+ const scope = (targetScope = new ReturnScope())
113
+ resolvedReturn = undefined
114
+ const targetPage = toPage,
115
+ owner = native,
116
+ sharedOptions = options.shared
117
+ void resolveReturnTarget(
118
+ sharedOptions.returnTarget!,
119
+ sharedOptions.tag,
120
+ targetPage,
121
+ scope.signal,
122
+ ).then((result) => {
123
+ if (scope.signal.aborted || state === 'disposed' || native !== owner) return
124
+ if (result.view) {
125
+ resolvedReturn = result.view
126
+ installShared()
127
+ const target = result.view
128
+ const invalidated = () => {
129
+ shared = { status: 'unavailable', reason: 'target-invalidated' }
130
+ owner.cancel()
131
+ }
132
+ const events = [
133
+ 'bindingContextChange',
134
+ 'sharedTransitionTagChange',
135
+ 'imageSourceChange',
136
+ 'unloaded',
137
+ ]
138
+ for (const event of events) target.on(event, invalidated)
139
+ detachTarget = () => {
140
+ for (const event of events) target.off(event, invalidated)
141
+ }
142
+ } else shared = { status: 'unavailable', reason: result.reason }
143
+ owner.completeSharedPreparation()
144
+ })
145
+ return
146
+ }
147
+ installShared()
148
+ }
149
+ function installShared() {
150
+ if (!native || !options.shared) return
151
+ const unavailable = (reason: string) => {
152
+ shared = { status: 'unavailable', reason }
153
+ }
154
+ if (reducedMotion()) return unavailable('reduced-motion')
155
+ const sources = find(fromPage, options.shared.tag, true),
156
+ targets = find(toPage, options.shared.tag, true)
157
+ if (sources.length !== 1)
158
+ return unavailable(sources.length ? 'duplicate-source' : 'missing-source')
159
+ if (targets.length !== 1)
160
+ return unavailable(targets.length ? 'duplicate-target' : 'missing-target')
161
+ const source = sources[0]!,
162
+ target = targets[0]!,
163
+ image = source instanceof Image
164
+ if (
165
+ image &&
166
+ (!supportedImage(source) ||
167
+ !supportedImage(target) ||
168
+ (source.src !== target.src && source.imageSource !== target.imageSource))
169
+ )
170
+ return unavailable('unsupported-image')
171
+ if (!image && target instanceof Image) return unavailable('content-mismatch')
172
+ try {
173
+ shared = native.prepareSharedFromToImageFromRadiusToRadiusMaxPixels(
174
+ source.nativeViewProtected,
175
+ target.nativeViewProtected,
176
+ image,
177
+ radius(source),
178
+ radius(target),
179
+ budget,
180
+ )
181
+ ? { status: 'ready' }
182
+ : { status: 'unavailable', reason: 'unsupported-geometry' }
183
+ } catch {
184
+ unavailable('native-unavailable')
185
+ }
186
+ }
187
+ let transition: NavigationTransition | undefined
188
+ let releaseMotion: (() => void) | undefined
189
+ const emit = (
190
+ next: InteractiveNavigationState,
191
+ outcome?: InteractiveNavigationEvent['outcome'],
192
+ release?: InteractiveNavigationEvent['release'],
193
+ ) => {
194
+ if (state === 'disposed') return
195
+ state = next
196
+ try {
197
+ options.onState?.({
198
+ state,
199
+ ...(shared ? { shared } : {}),
200
+ ...(outcome ? { outcome } : {}),
201
+ ...(release ? { release } : {}),
202
+ })
203
+ } catch (error) {
204
+ Trace.write(
205
+ `Interactive navigation observer failed: ${String(error)}`,
206
+ 'Jolt',
207
+ Trace.messageType.error,
208
+ )
209
+ }
210
+ }
211
+ const cancel = () => {
212
+ targetScope?.abort()
213
+ native?.cancel()
214
+ }
215
+ const suspend = () => {
216
+ suspended = true
217
+ if (resumeTimer !== undefined) clearTimeout(resumeTimer)
218
+ resumeTimer = undefined
219
+ cancel()
220
+ }
221
+ const unload = () => {
222
+ // Core unloads the root view in the background, without removing its routes.
223
+ if (suspended) cancel()
224
+ else control.dispose()
225
+ }
226
+ const shown = () => native?.sync()
227
+ const swipeChanged = () => {
228
+ void Promise.resolve().then(shown)
229
+ }
230
+ const arrived = () => {
231
+ if (transitioning) return
232
+ // clearHistory/replace/programmatic pop also release the entry's recognizer.
233
+ if (
234
+ page &&
235
+ frame.currentPage !== page &&
236
+ !frame.backStack.some((entry) => entry.resolvedPage === page)
237
+ )
238
+ void Promise.resolve().then(() => control.dispose())
239
+ else shown()
240
+ }
241
+ const resume = () => {
242
+ suspended = false
243
+ // Core raises resume before reloading the root. A macrotask lets that load
244
+ // finish, including when native callbacks drain JS microtasks in between.
245
+ if (resumeTimer !== undefined) clearTimeout(resumeTimer)
246
+ resumeTimer = setTimeout(() => {
247
+ resumeTimer = undefined
248
+ if (frame.isLoaded) arrived()
249
+ else control.dispose()
250
+ }, 0)
251
+ }
252
+ const entering = (args: EventData) => {
253
+ const event = args as NavigationData
254
+ if (!page && !event.isBack) candidate = event.entry?.resolvedPage
255
+ }
256
+ class PageMotion extends Transition {
257
+ override setupInteractiveGesture(callback: () => void) {
258
+ start = callback
259
+ }
260
+ override iosNavigatedController(
261
+ nav: UINavigationController,
262
+ operation: number,
263
+ from: UIViewController,
264
+ to: UIViewController,
265
+ ) {
266
+ if (state === 'disposed' || nav !== frame.ios.controller) return undefined
267
+ if (operation === 1) {
268
+ // An entry owns one transition. Reusing its instance never steals another page.
269
+ if (page || candidate?.ios !== to) return undefined
270
+ page = candidate
271
+ page.on('enableSwipeBackNavigationChange', swipeChanged)
272
+ }
273
+ if (!page) return undefined
274
+ const pages = [
275
+ originalPage,
276
+ page,
277
+ ...frame.backStack.map((entry) => entry.resolvedPage),
278
+ ]
279
+ fromPage = pages.find((candidate) => candidate?.ios === from)
280
+ toPage = pages.find((candidate) => candidate?.ios === to)
281
+ shared = undefined
282
+ returning = operation !== 1
283
+ transitioning = true
284
+ if (!native) {
285
+ native = JoltInteractiveNavigation.attachStiffnessDampingMassShouldBeginOnEvent(
286
+ nav,
287
+ physics.stiffness,
288
+ physics.damping,
289
+ physics.mass,
290
+ () => {
291
+ try {
292
+ return (
293
+ state === 'idle' &&
294
+ !suspended &&
295
+ frame.isLoaded &&
296
+ !!start &&
297
+ !reducedMotion() &&
298
+ !!page &&
299
+ frame.currentPage === page &&
300
+ page.enableSwipeBackNavigation &&
301
+ frame.canGoBack() &&
302
+ (options.canBegin?.() ?? true) === true
303
+ )
304
+ } catch {
305
+ return false
306
+ }
307
+ },
308
+ (event) => {
309
+ if (state === 'disposed') return
310
+ if (event === 8) {
311
+ prepareShared()
312
+ return
313
+ }
314
+ if (event === 2) {
315
+ transitioning = true
316
+ frame.transitionId = this.id
317
+ SharedTransition.updateState(this.id, {
318
+ interactiveBegan: true,
319
+ interactiveCancelled: false,
320
+ })
321
+ emit('dragging')
322
+ start?.()
323
+ } else if (event === 3 || event === 4) {
324
+ emit(
325
+ event === 3 ? 'finishing' : 'cancelling',
326
+ undefined,
327
+ native && { progress: native.progress, velocity: native.velocity },
328
+ )
329
+ } else if (event === 0) emit('animating')
330
+ else {
331
+ targetScope?.abort()
332
+ targetScope = undefined
333
+ detachTarget?.()
334
+ detachTarget = undefined
335
+ if (returning && event !== 6 && toPage && options.shared?.returnTarget) {
336
+ let focus = resolvedReturn
337
+ if (!focus)
338
+ try {
339
+ focus = options.shared.returnTarget.fallbackFocus?.(toPage)
340
+ } catch {}
341
+ focusReturnTarget(toPage, focus)
342
+ }
343
+ transitioning = false
344
+ SharedTransition.updateState(this.id, {
345
+ interactiveBegan: false,
346
+ interactiveCancelled: event === 6,
347
+ })
348
+ emit(
349
+ 'idle',
350
+ event === 5 ? 'completed' : event === 6 ? 'cancelled' : undefined,
351
+ )
352
+ arrived()
353
+ }
354
+ },
355
+ )
356
+ }
357
+ if (options.shared) native.sharedEnabled = true
358
+ native.sharedDeferred = !!(returning && options.shared?.returnTarget)
359
+ native.prepareOperationPresentedReducedTimeScale(
360
+ operation,
361
+ page.ios,
362
+ reducedMotion(),
363
+ timeScale(),
364
+ )
365
+ return native
366
+ }
367
+ override iosInteractionDismiss() {
368
+ return native?.interactive ? native : undefined
369
+ }
370
+ }
371
+ const control: InteractiveNavigation = {
372
+ supported,
373
+ get transition() {
374
+ return transition
375
+ },
376
+ get state() {
377
+ return state
378
+ },
379
+ cancel,
380
+ dispose() {
381
+ if (state === 'disposed') return
382
+ targetScope?.abort()
383
+ targetScope = undefined
384
+ detachTarget?.()
385
+ detachTarget = undefined
386
+ // Complete UIKit's context before releasing Core's interactive state.
387
+ native?.disposeRestoringSwipe(
388
+ !!page?.enableSwipeBackNavigation && frame.canGoBack(),
389
+ )
390
+ native = undefined
391
+ emit('disposed')
392
+ releaseMotion?.()
393
+ if (resumeTimer !== undefined) clearTimeout(resumeTimer)
394
+ resumeTimer = undefined
395
+ frame.off('unloaded', unload)
396
+ frame.off('navigatingTo', entering)
397
+ frame.off('navigatedTo', arrived)
398
+ frame.off('viewControllerShown', shown)
399
+ Application.off(Application.suspendEvent, suspend)
400
+ Application.off(Application.resumeEvent, resume)
401
+ if (transition?.instance) SharedTransition.finishState(transition.instance.id)
402
+ page?.off('enableSwipeBackNavigationChange', swipeChanged)
403
+ start = undefined
404
+ page = undefined
405
+ candidate = undefined
406
+ fromPage = undefined
407
+ toPage = undefined
408
+ },
409
+ }
410
+ if (supported) {
411
+ if (!frame.isLoaded || !frame.ios?.controller)
412
+ throw new Error('Create interactiveNavigation after the Frame is loaded.')
413
+ transition = SharedTransition.custom(new PageMotion(), {
414
+ interactive: { dismiss: {} },
415
+ })
416
+ frame.on('navigatingTo', entering)
417
+ frame.on('navigatedTo', arrived)
418
+ frame.on('viewControllerShown', shown)
419
+ frame.on('unloaded', unload)
420
+ Application.on(Application.suspendEvent, suspend)
421
+ Application.on(Application.resumeEvent, resume)
422
+ releaseMotion = onReducedMotion((value) => {
423
+ if (value) cancel()
424
+ })
425
+ }
426
+ return control
427
+ }
@@ -1,3 +1,136 @@
1
+ declare class JoltBlur extends NSObject {
2
+ static attachOptions(view: UIView, options: string): JoltBlur
3
+ static liveCount(): number
4
+ static activeCount(): number
5
+ paint(amount: number): void
6
+ play(program: string): void
7
+ controlPaused(time: number, paused: boolean): void
8
+ resize(): void
9
+ snapshot(): string
10
+ dispose(): void
11
+ }
12
+ declare class JoltSensorSource extends NSObject {
13
+ static createOptionsOnState(
14
+ kind: string,
15
+ options: string,
16
+ changed: () => void,
17
+ ): JoltSensorSource
18
+ static activeCount(): number
19
+ static sourceCount(): number
20
+ connectIndex(node: JoltLiveSpring, index: number): void
21
+ setEnabledPaused(active: boolean, paused: boolean): void
22
+ snapshot(): string
23
+ recenter(): void
24
+ replay(trace: string): void
25
+ dispose(): void
26
+ }
27
+ declare class JoltScrollHeader extends NSObject {
28
+ static attachNodeTitleToolbarTitleToolbarDiagnosticOptionsOnState(
29
+ list: UITableView,
30
+ node: JoltLiveSpring,
31
+ title: UIView,
32
+ toolbarTitle: UIView,
33
+ toolbar: UIView,
34
+ diagnostic: UILabel | null,
35
+ options: string,
36
+ onState: () => void,
37
+ ): JoltScrollHeader
38
+ static activeCount(): number
39
+ configure(options: string): void
40
+ snapshot(): string
41
+ scrollAnimated(offset: number, animated: boolean): void
42
+ setEnabled(value: boolean): void
43
+ dispose(): void
44
+ }
45
+ declare class JoltMotionProbe extends NSObject {
46
+ static startViewCapacityHertz(
47
+ view: UIView,
48
+ capacity: number,
49
+ hertz: number,
50
+ ): JoltMotionProbe
51
+ static activeCount(): number
52
+ drain(): string
53
+ dispose(): void
54
+ }
55
+ declare class JoltReorderHandle extends UIButton {
56
+ onMove: ((direction: number) => void) | null
57
+ }
58
+ declare class JoltReorderSession extends NSObject {
59
+ static attachOptionsOnState(
60
+ list: UITableView,
61
+ options: string,
62
+ callback: (state: number, index: number, toIndex: number) => void,
63
+ ): JoltReorderSession
64
+ readonly active: boolean
65
+ registerHandle(view: UIView): void
66
+ setEnabled(enabled: boolean): void
67
+ setReducedMotion(reduced: boolean): void
68
+ cancel(): void
69
+ dispose(): void
70
+ }
71
+ declare class JoltGestureSession extends NSObject {
72
+ static supportsContactEvents(): boolean
73
+ static supportsScrollReplay(): boolean
74
+ static hasSession(surface: UIView): boolean
75
+ replayScrollDeltaVelocity(phase: number, delta: number, velocity: number): void
76
+ replayScrollOffset(offset: number): void
77
+ static attachScrollXYScaleRotationOptionsOnState(
78
+ surface: UIView,
79
+ scroll: UIScrollView | null,
80
+ x: JoltLiveSpring,
81
+ y: JoltLiveSpring,
82
+ scale: JoltLiveSpring,
83
+ rotation: JoltLiveSpring,
84
+ options: string,
85
+ onState: (state: number, velocityX: number, velocityY: number) => void,
86
+ ): JoltGestureSession
87
+ readonly active: boolean
88
+ cancel(): void
89
+ refreshScrollDelegate(): void
90
+ setEnabled(value: boolean): void
91
+ settleXYScaleRotationAnimated(
92
+ x: number,
93
+ y: number,
94
+ scale: number,
95
+ rotation: number,
96
+ animated: boolean,
97
+ ): void
98
+ updateLeftRightTopBottom(left: number, right: number, top: number, bottom: number): void
99
+ dispose(): void
100
+ }
101
+ declare class JoltLiveSpring extends NSObject {
102
+ static createStiffnessDampingMassRestDeltaRestSpeedReduced(
103
+ initial: number,
104
+ stiffness: number,
105
+ damping: number,
106
+ mass: number,
107
+ restDelta: number,
108
+ restSpeed: number,
109
+ reduced: boolean,
110
+ ): JoltLiveSpring
111
+ static activeCount(): number
112
+ static nodeCount(): number
113
+ static sync(view: UIView): void
114
+ readonly position: number
115
+ readonly velocity: number
116
+ readonly moving: boolean
117
+ followMappings(source: JoltLiveSpring, mappings: string): void
118
+ updateInput(snapshot: string): void
119
+ setTarget(value: number): void
120
+ setReduced(value: boolean): void
121
+ setPaused(value: boolean): void
122
+ bindPropertyMappings(
123
+ view: UIView,
124
+ property: string,
125
+ mappings: string,
126
+ ): JoltLiveSpringBinding
127
+ dispose(): void
128
+ }
129
+ declare class JoltLiveSpringBinding extends NSObject {
130
+ readonly value: number
131
+ setLayers(inputs: string): void
132
+ cancel(): void
133
+ }
1
134
  declare class JoltInteractiveAnimation extends NSObject {
2
135
  static startViewLayersKeyPathValuesTimesDurationDelayRepeatReverseFinalValueStartedAtCompletion(
3
136
  view: UIView,
@@ -79,3 +212,150 @@ declare class JoltPhotoZoom extends NSObject {
79
212
  layout(): void
80
213
  stop(): void
81
214
  }
215
+
216
+ declare class JoltPropertySink extends NSObject {
217
+ static scalarTargetKeyPath(target: NSObject, keyPath: string): JoltPropertySink
218
+ readonly dimensions: number
219
+ readonly alive: boolean
220
+ readonly compiled: boolean
221
+ read(): NSArray<number>
222
+ write(values: NSArray<number>): void
223
+ dispose(): void
224
+ }
225
+ declare class JoltPropertyPlayer extends NSObject {
226
+ static startSinkTimesValuesFinalValueDurationDelayRepeatReverseCompletion(
227
+ sink: JoltPropertySink,
228
+ times: NSArray<number>,
229
+ values: NSArray<number>,
230
+ finalValue: NSArray<number>,
231
+ duration: number,
232
+ delay: number,
233
+ repeat: number,
234
+ reverse: boolean,
235
+ completion: (completed: boolean) => void,
236
+ ): JoltPropertyPlayer
237
+ readonly elapsed: number
238
+ readonly frames: number
239
+ static activeCount(): number
240
+ controlPaused(time: number, paused: boolean): void
241
+ cancel(): void
242
+ }
243
+ declare class JoltReferenceProperties extends NSObject {
244
+ static sceneFieldOfView(camera: NSObject): JoltPropertySink
245
+ static sceneCameraSinkCount(): number
246
+ static sceneCameraWriteCount(): number
247
+ static mapCoordinate(target: NSObject): JoltPropertySink
248
+ static mapCamera(target: NSObject): JoltPropertySink
249
+ static scenePose(target: NSObject): JoltPropertySink
250
+ static sceneLightIntensity(target: NSObject): JoltPropertySink
251
+ static sceneLightColor(target: NSObject): JoltPropertySink
252
+ static sceneMaterialTransparency(target: NSObject): JoltPropertySink
253
+ static sceneMaterialDiffuse(target: NSObject): JoltPropertySink
254
+ static sceneMaterialEmission(target: NSObject): JoltPropertySink
255
+ static sceneAppearanceSinkCount(): number
256
+ static sceneAppearanceWriteCount(): number
257
+ }
258
+
259
+ declare class JoltSceneShaderProperties extends NSObject {
260
+ static environmentError(
261
+ scene: NSObject,
262
+ error: interop.Reference<NSError>,
263
+ ): JoltPropertySink | null
264
+ static uniformNameConfigurationError(
265
+ target: NSObject,
266
+ name: string,
267
+ configuration: string,
268
+ error: interop.Reference<NSError>,
269
+ ): JoltPropertySink | null
270
+ static sinkCount(): number
271
+ static writeCount(): number
272
+ }
273
+
274
+ declare class JoltSharedLayoutFlight extends UIView {
275
+ holdPageMaxPixels(page: UIView, maxPixels: number): boolean
276
+ fadeOnEnd(duration: number, onEnd: (completed: boolean) => void): void
277
+ static captureNavigationImageRadiusMaxPixels(
278
+ view: UIView,
279
+ radius: number,
280
+ maxPixels: number,
281
+ ): JoltSharedLayoutFlight | null
282
+ static captureClippedNavigationImageRadiusMaxPixels(
283
+ view: UIView,
284
+ radius: number,
285
+ maxPixels: number,
286
+ ): JoltSharedLayoutFlight | null
287
+ prepareNavigationImageRadiusMaxPixels(
288
+ view: UIView,
289
+ radius: number,
290
+ maxPixels: number,
291
+ ): string | null
292
+ static captureImageRadiusMaxPixels(
293
+ view: UIView,
294
+ image: boolean,
295
+ radius: number,
296
+ maxPixels: number,
297
+ ): JoltSharedLayoutFlight | null
298
+ static activeCount(): number
299
+ pixels(): number
300
+ state(): string
301
+ prepareImageRadiusMaxPixels(
302
+ view: UIView,
303
+ image: boolean,
304
+ radius: number,
305
+ maxPixels: number,
306
+ ): string | null
307
+ freeze(maxPixels: number): boolean
308
+ playOnEnd(configuration: string, onEnd: (completed: boolean) => void): void
309
+ dispose(): void
310
+ }
311
+ declare class JoltInteractiveNavigation extends NSObject {
312
+ sharedEnabled: boolean
313
+ sharedDeferred: boolean
314
+ completeSharedPreparation(): void
315
+ prepareSharedFromToImageFromRadiusToRadiusMaxPixels(
316
+ from: UIView,
317
+ to: UIView,
318
+ image: boolean,
319
+ fromRadius: number,
320
+ toRadius: number,
321
+ maxPixels: number,
322
+ ): boolean
323
+ static attachStiffnessDampingMassShouldBeginOnEvent(
324
+ nav: UINavigationController,
325
+ stiffness: number,
326
+ damping: number,
327
+ mass: number,
328
+ shouldBegin: () => boolean,
329
+ onEvent: (event: number) => void,
330
+ ): JoltInteractiveNavigation
331
+ static activeCount(): number
332
+ static recognizerCount(): number
333
+ readonly interactive: boolean
334
+ readonly progress: number
335
+ readonly velocity: number
336
+ prepareOperationPresentedReducedTimeScale(
337
+ operation: number,
338
+ presented: UIViewController,
339
+ reduced: boolean,
340
+ timeScale: number,
341
+ ): void
342
+ sync(): void
343
+ cancel(): void
344
+ disposeRestoringSwipe(enabled: boolean): void
345
+ }
346
+
347
+ declare class JoltCircleWorld extends NSObject {
348
+ static createOptions(container: UIView, options: string): JoltCircleWorld
349
+ static worldCount(): number
350
+ static activeCount(): number
351
+ connectIndex(view: UIView, index: number): void
352
+ setEnabled(active: boolean): void
353
+ resizeHeight(width: number, height: number): void
354
+ impulseXY(index: number, x: number, y: number): void
355
+ attachOptions(index: number, options: string): void
356
+ snapToTarget(index: number, target: number): void
357
+ reset(): void
358
+ supportsPointerSpring(): boolean
359
+ snapshot(): string
360
+ dispose(): void
361
+ }