@rafaelaugusto/jolt 0.1.0-beta.0 → 0.1.0-beta.10

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 (307) hide show
  1. package/README.md +441 -25
  2. package/dist/animate.d.ts +21 -5
  3. package/dist/animate.d.ts.map +1 -1
  4. package/dist/animate.js +205 -25
  5. package/dist/animate.js.map +1 -1
  6. package/dist/color.d.ts +11 -0
  7. package/dist/color.d.ts.map +1 -0
  8. package/dist/color.js +73 -0
  9. package/dist/color.js.map +1 -0
  10. package/dist/config.d.ts +31 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +73 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/decay.d.ts +11 -0
  15. package/dist/decay.d.ts.map +1 -0
  16. package/dist/decay.js +22 -0
  17. package/dist/decay.js.map +1 -0
  18. package/dist/decoration.d.ts +18 -0
  19. package/dist/decoration.d.ts.map +1 -0
  20. package/dist/decoration.js +155 -0
  21. package/dist/decoration.js.map +1 -0
  22. package/dist/drag-input.d.ts +15 -0
  23. package/dist/drag-input.d.ts.map +1 -0
  24. package/dist/drag-input.js +66 -0
  25. package/dist/drag-input.js.map +1 -0
  26. package/dist/drag-physics.d.ts +20 -0
  27. package/dist/drag-physics.d.ts.map +1 -0
  28. package/dist/drag-physics.js +75 -0
  29. package/dist/drag-physics.js.map +1 -0
  30. package/dist/drag.d.ts +58 -0
  31. package/dist/drag.d.ts.map +1 -0
  32. package/dist/drag.js +324 -0
  33. package/dist/drag.js.map +1 -0
  34. package/dist/driver/android-color.d.ts +20 -0
  35. package/dist/driver/android-color.d.ts.map +1 -0
  36. package/dist/driver/android-color.js +136 -0
  37. package/dist/driver/android-color.js.map +1 -0
  38. package/dist/driver/android-decoration.d.ts +22 -0
  39. package/dist/driver/android-decoration.d.ts.map +1 -0
  40. package/dist/driver/android-decoration.js +139 -0
  41. package/dist/driver/android-decoration.js.map +1 -0
  42. package/dist/driver/android-playback.d.ts +13 -0
  43. package/dist/driver/android-playback.d.ts.map +1 -0
  44. package/dist/driver/android-playback.js +141 -0
  45. package/dist/driver/android-playback.js.map +1 -0
  46. package/dist/driver/android.d.ts +1 -1
  47. package/dist/driver/android.d.ts.map +1 -1
  48. package/dist/driver/android.js +165 -13
  49. package/dist/driver/android.js.map +1 -1
  50. package/dist/driver/index.d.ts +25 -2
  51. package/dist/driver/index.d.ts.map +1 -1
  52. package/dist/driver/index.js.map +1 -1
  53. package/dist/driver/ios-color.d.ts +16 -0
  54. package/dist/driver/ios-color.d.ts.map +1 -0
  55. package/dist/driver/ios-color.js +392 -0
  56. package/dist/driver/ios-color.js.map +1 -0
  57. package/dist/driver/ios-decoration.d.ts +17 -0
  58. package/dist/driver/ios-decoration.d.ts.map +1 -0
  59. package/dist/driver/ios-decoration.js +271 -0
  60. package/dist/driver/ios-decoration.js.map +1 -0
  61. package/dist/driver/ios-layout.d.ts +9 -0
  62. package/dist/driver/ios-layout.d.ts.map +1 -0
  63. package/dist/driver/ios-layout.js +52 -0
  64. package/dist/driver/ios-layout.js.map +1 -0
  65. package/dist/driver/ios-playback.d.ts +10 -0
  66. package/dist/driver/ios-playback.d.ts.map +1 -0
  67. package/dist/driver/ios-playback.js +47 -0
  68. package/dist/driver/ios-playback.js.map +1 -0
  69. package/dist/driver/ios-shadow.d.ts +6 -0
  70. package/dist/driver/ios-shadow.d.ts.map +1 -0
  71. package/dist/driver/ios-shadow.js +52 -0
  72. package/dist/driver/ios-shadow.js.map +1 -0
  73. package/dist/driver/ios.d.ts.map +1 -1
  74. package/dist/driver/ios.js +164 -20
  75. package/dist/driver/ios.js.map +1 -1
  76. package/dist/engine.d.ts +76 -5
  77. package/dist/engine.d.ts.map +1 -1
  78. package/dist/engine.js +303 -23
  79. package/dist/engine.js.map +1 -1
  80. package/dist/haptics.d.ts +21 -0
  81. package/dist/haptics.d.ts.map +1 -0
  82. package/dist/haptics.js +120 -0
  83. package/dist/haptics.js.map +1 -0
  84. package/dist/image-effect-native.d.ts +26 -0
  85. package/dist/image-effect-native.d.ts.map +1 -0
  86. package/dist/image-effect-native.js +73 -0
  87. package/dist/image-effect-native.js.map +1 -0
  88. package/dist/image-effect.d.ts +50 -0
  89. package/dist/image-effect.d.ts.map +1 -0
  90. package/dist/image-effect.js +290 -0
  91. package/dist/image-effect.js.map +1 -0
  92. package/dist/image-owner.d.ts +3 -0
  93. package/dist/image-owner.d.ts.map +1 -0
  94. package/dist/image-owner.js +11 -0
  95. package/dist/image-owner.js.map +1 -0
  96. package/dist/index.d.ts +45 -4
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +21 -2
  99. package/dist/index.js.map +1 -1
  100. package/dist/interaction-surface.d.ts +12 -0
  101. package/dist/interaction-surface.d.ts.map +1 -0
  102. package/dist/interaction-surface.js +36 -0
  103. package/dist/interaction-surface.js.map +1 -0
  104. package/dist/items.d.ts +20 -0
  105. package/dist/items.d.ts.map +1 -0
  106. package/dist/items.js +109 -0
  107. package/dist/items.js.map +1 -0
  108. package/dist/keyboard.d.ts +41 -0
  109. package/dist/keyboard.d.ts.map +1 -0
  110. package/dist/keyboard.js +256 -0
  111. package/dist/keyboard.js.map +1 -0
  112. package/dist/label.d.ts +7 -0
  113. package/dist/label.d.ts.map +1 -0
  114. package/dist/label.js +60 -0
  115. package/dist/label.js.map +1 -0
  116. package/dist/layout.d.ts +13 -0
  117. package/dist/layout.d.ts.map +1 -0
  118. package/dist/layout.js +348 -0
  119. package/dist/layout.js.map +1 -0
  120. package/dist/liquid-grid.d.ts +3 -0
  121. package/dist/liquid-grid.d.ts.map +1 -0
  122. package/dist/liquid-grid.js +24 -0
  123. package/dist/liquid-grid.js.map +1 -0
  124. package/dist/liquid.d.ts +18 -0
  125. package/dist/liquid.d.ts.map +1 -0
  126. package/dist/liquid.js +234 -0
  127. package/dist/liquid.js.map +1 -0
  128. package/dist/loader.d.ts +19 -0
  129. package/dist/loader.d.ts.map +1 -0
  130. package/dist/loader.js +173 -0
  131. package/dist/loader.js.map +1 -0
  132. package/dist/motion-scope.d.ts +39 -0
  133. package/dist/motion-scope.d.ts.map +1 -0
  134. package/dist/motion-scope.js +238 -0
  135. package/dist/motion-scope.js.map +1 -0
  136. package/dist/motion-states.d.ts +36 -0
  137. package/dist/motion-states.d.ts.map +1 -0
  138. package/dist/motion-states.js +165 -0
  139. package/dist/motion-states.js.map +1 -0
  140. package/dist/particles.d.ts +39 -0
  141. package/dist/particles.d.ts.map +1 -0
  142. package/dist/particles.js +265 -0
  143. package/dist/particles.js.map +1 -0
  144. package/dist/path.d.ts +12 -0
  145. package/dist/path.d.ts.map +1 -0
  146. package/dist/path.js +90 -0
  147. package/dist/path.js.map +1 -0
  148. package/dist/playback-group.d.ts +6 -0
  149. package/dist/playback-group.d.ts.map +1 -0
  150. package/dist/playback-group.js +141 -0
  151. package/dist/playback-group.js.map +1 -0
  152. package/dist/playback.d.ts +25 -0
  153. package/dist/playback.d.ts.map +1 -0
  154. package/dist/playback.js +35 -0
  155. package/dist/playback.js.map +1 -0
  156. package/dist/presets.d.ts +16 -1
  157. package/dist/presets.d.ts.map +1 -1
  158. package/dist/presets.js +24 -6
  159. package/dist/presets.js.map +1 -1
  160. package/dist/press.d.ts.map +1 -1
  161. package/dist/press.js +25 -7
  162. package/dist/press.js.map +1 -1
  163. package/dist/properties.d.ts +6 -3
  164. package/dist/properties.d.ts.map +1 -1
  165. package/dist/properties.js +26 -2
  166. package/dist/properties.js.map +1 -1
  167. package/dist/reveal.d.ts +25 -0
  168. package/dist/reveal.d.ts.map +1 -0
  169. package/dist/reveal.js +294 -0
  170. package/dist/reveal.js.map +1 -0
  171. package/dist/roll-diff.d.ts +22 -0
  172. package/dist/roll-diff.d.ts.map +1 -0
  173. package/dist/roll-diff.js +36 -0
  174. package/dist/roll-diff.js.map +1 -0
  175. package/dist/roll.d.ts +29 -0
  176. package/dist/roll.d.ts.map +1 -0
  177. package/dist/roll.js +442 -0
  178. package/dist/roll.js.map +1 -0
  179. package/dist/scroll-linked.d.ts +10 -0
  180. package/dist/scroll-linked.d.ts.map +1 -0
  181. package/dist/scroll-linked.js +58 -0
  182. package/dist/scroll-linked.js.map +1 -0
  183. package/dist/sequence.d.ts +13 -7
  184. package/dist/sequence.d.ts.map +1 -1
  185. package/dist/sequence.js +214 -19
  186. package/dist/sequence.js.map +1 -1
  187. package/dist/shimmer.d.ts +12 -0
  188. package/dist/shimmer.d.ts.map +1 -0
  189. package/dist/shimmer.js +161 -0
  190. package/dist/shimmer.js.map +1 -0
  191. package/dist/svg-path.d.ts +14 -0
  192. package/dist/svg-path.d.ts.map +1 -0
  193. package/dist/svg-path.js +281 -0
  194. package/dist/svg-path.js.map +1 -0
  195. package/dist/symbol-effect.d.ts +23 -0
  196. package/dist/symbol-effect.d.ts.map +1 -0
  197. package/dist/symbol-effect.js +187 -0
  198. package/dist/symbol-effect.js.map +1 -0
  199. package/dist/text-layout.d.ts +30 -0
  200. package/dist/text-layout.d.ts.map +1 -0
  201. package/dist/text-layout.js +185 -0
  202. package/dist/text-layout.js.map +1 -0
  203. package/dist/text.d.ts +17 -0
  204. package/dist/text.d.ts.map +1 -0
  205. package/dist/text.js +263 -0
  206. package/dist/text.js.map +1 -0
  207. package/dist/track.d.ts +3 -1
  208. package/dist/track.d.ts.map +1 -1
  209. package/dist/track.js +266 -13
  210. package/dist/track.js.map +1 -1
  211. package/dist/transition.d.ts +17 -1
  212. package/dist/transition.d.ts.map +1 -1
  213. package/dist/transition.js +41 -6
  214. package/dist/transition.js.map +1 -1
  215. package/dist/types.d.ts +50 -1
  216. package/dist/types.d.ts.map +1 -1
  217. package/dist/vue/index.d.ts +95 -0
  218. package/dist/vue/index.d.ts.map +1 -0
  219. package/dist/vue/index.js +163 -0
  220. package/dist/vue/index.js.map +1 -0
  221. package/dist/zoom-native.d.ts +30 -0
  222. package/dist/zoom-native.d.ts.map +1 -0
  223. package/dist/zoom-native.js +56 -0
  224. package/dist/zoom-native.js.map +1 -0
  225. package/dist/zoomable.d.ts +48 -0
  226. package/dist/zoomable.d.ts.map +1 -0
  227. package/dist/zoomable.js +249 -0
  228. package/dist/zoomable.js.map +1 -0
  229. package/package.json +33 -5
  230. package/platforms/android/include.gradle +7 -0
  231. package/platforms/android/java/org/rafaelaugusto/jolt/ColorTarget.java +102 -0
  232. package/platforms/android/java/org/rafaelaugusto/jolt/DecorationTarget.java +154 -0
  233. package/platforms/android/java/org/rafaelaugusto/jolt/ImageEffect.java +288 -0
  234. package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardFollower.java +91 -0
  235. package/platforms/android/java/org/rafaelaugusto/jolt/KeyboardObserver.java +97 -0
  236. package/platforms/android/java/org/rafaelaugusto/jolt/NumberRoll.java +190 -0
  237. package/platforms/android/java/org/rafaelaugusto/jolt/PhotoZoom.java +250 -0
  238. package/platforms/android/java/org/rafaelaugusto/jolt/TextReveal.java +180 -0
  239. package/platforms/android/proguard-rules.pro +19 -0
  240. package/platforms/ios/build.xcconfig +1 -0
  241. package/platforms/ios/src/JoltImageEffect.h +25 -0
  242. package/platforms/ios/src/JoltImageEffect.mm +242 -0
  243. package/platforms/ios/src/JoltInteractiveAnimation.h +18 -0
  244. package/platforms/ios/src/JoltInteractiveAnimation.m +123 -0
  245. package/platforms/ios/src/JoltPhotoZoom.h +23 -0
  246. package/platforms/ios/src/JoltPhotoZoom.m +229 -0
  247. package/platforms/ios/src/module.modulemap +6 -0
  248. package/src/android-plugin.d.ts +155 -0
  249. package/src/animate.ts +278 -38
  250. package/src/color.ts +101 -0
  251. package/src/config.ts +84 -0
  252. package/src/decay.ts +45 -0
  253. package/src/decoration.ts +180 -0
  254. package/src/drag-input.ts +74 -0
  255. package/src/drag-physics.ts +110 -0
  256. package/src/drag.ts +395 -0
  257. package/src/driver/android-color.ts +170 -0
  258. package/src/driver/android-decoration.ts +182 -0
  259. package/src/driver/android-playback.ts +157 -0
  260. package/src/driver/android.ts +208 -20
  261. package/src/driver/index.ts +37 -2
  262. package/src/driver/ios-color.ts +441 -0
  263. package/src/driver/ios-decoration.ts +332 -0
  264. package/src/driver/ios-layout.ts +63 -0
  265. package/src/driver/ios-playback.ts +51 -0
  266. package/src/driver/ios-shadow.ts +50 -0
  267. package/src/driver/ios.ts +194 -25
  268. package/src/engine.ts +329 -27
  269. package/src/haptics.ts +148 -0
  270. package/src/image-effect-native.ts +129 -0
  271. package/src/image-effect.ts +336 -0
  272. package/src/image-owner.ts +12 -0
  273. package/src/index.ts +61 -4
  274. package/src/interaction-surface.ts +41 -0
  275. package/src/ios-plugin.d.ts +81 -0
  276. package/src/items.ts +140 -0
  277. package/src/keyboard.ts +291 -0
  278. package/src/label.ts +76 -0
  279. package/src/layout.ts +408 -0
  280. package/src/liquid-grid.ts +28 -0
  281. package/src/liquid.ts +287 -0
  282. package/src/loader.ts +202 -0
  283. package/src/motion-scope.ts +279 -0
  284. package/src/motion-states.ts +215 -0
  285. package/src/particles.ts +323 -0
  286. package/src/path.ts +124 -0
  287. package/src/playback-group.ts +143 -0
  288. package/src/playback.ts +62 -0
  289. package/src/presets.ts +31 -7
  290. package/src/press.ts +32 -10
  291. package/src/properties.ts +32 -6
  292. package/src/reveal.ts +374 -0
  293. package/src/roll-diff.ts +57 -0
  294. package/src/roll.ts +515 -0
  295. package/src/scroll-linked.ts +73 -0
  296. package/src/sequence.ts +212 -19
  297. package/src/shimmer.ts +180 -0
  298. package/src/svg-path.ts +355 -0
  299. package/src/symbol-effect.ts +226 -0
  300. package/src/text-layout.ts +228 -0
  301. package/src/text.ts +279 -0
  302. package/src/track.ts +347 -12
  303. package/src/transition.ts +63 -6
  304. package/src/types.ts +51 -1
  305. package/src/vue/index.ts +231 -0
  306. package/src/zoom-native.ts +124 -0
  307. package/src/zoomable.ts +330 -0
@@ -0,0 +1,20 @@
1
+ import type { PresetName } from './presets.js';
2
+ import type { SpringName } from './transition.js';
3
+ import type { AnimateOptions, Keyframes, Target } from './types.js';
4
+ export type ItemsOptions = AnimateOptions & {
5
+ /** Animate each data item only the first time it shows up. Defaults to false. */
6
+ once?: boolean;
7
+ };
8
+ /**
9
+ * Plays an animation on each row of a list as it comes on screen. Rows are
10
+ * recycled, so a row that is reused for another item starts over, or settles
11
+ * at the end values when that item was already shown and `once` is set.
12
+ * Returns a function that removes the effect.
13
+ *
14
+ * ```ts
15
+ * animateItems(listView, 'fadeInUp')
16
+ * animateItems(listView, 'fadeInUp', { once: true })
17
+ * ```
18
+ */
19
+ export declare function animateItems(list: Target, animation: Keyframes | PresetName, options?: ItemsOptions | SpringName): () => void;
20
+ //# sourceMappingURL=items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../src/items.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAE9C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnE,MAAM,MAAM,YAAY,GAAG,cAAc,GAAG;IAC1C,iFAAiF;IACjF,IAAI,CAAC,EAAE,OAAO,CAAA;CACf,CAAA;AAqBD;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,SAAS,GAAG,UAAU,EACjC,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,GAClC,MAAM,IAAI,CA2FZ"}
package/dist/items.js ADDED
@@ -0,0 +1,109 @@
1
+ import { ListView, View } from '@nativescript/core';
2
+ import { animate, endingValues, startingValues, toView } from './animate.js';
3
+ import { getDriver } from './driver/index.js';
4
+ import { stopView } from './engine.js';
5
+ import { writeValue } from './properties.js';
6
+ /**
7
+ * Plays an animation on each row of a list as it comes on screen. Rows are
8
+ * recycled, so a row that is reused for another item starts over, or settles
9
+ * at the end values when that item was already shown and `once` is set.
10
+ * Returns a function that removes the effect.
11
+ *
12
+ * ```ts
13
+ * animateItems(listView, 'fadeInUp')
14
+ * animateItems(listView, 'fadeInUp', { once: true })
15
+ * ```
16
+ */
17
+ export function animateItems(list, animation, options) {
18
+ const source = toView(list);
19
+ const { once = false, ...rest } = typeof options === 'object' ? options : {};
20
+ if (rest.stagger !== undefined)
21
+ throw new TypeError('animateItems animates one row at a time; stagger has no effect.');
22
+ const transition = typeof options === 'string' ? options : rest;
23
+ const properties = [...startingValues(animation, transition).keys()];
24
+ const ends = endingValues(animation, transition);
25
+ const rows = new Set();
26
+ const seenItems = new WeakSet();
27
+ const seenKeys = new Set();
28
+ const pending = [];
29
+ let queued = false;
30
+ let disposed = false;
31
+ const settle = (row) => {
32
+ stopView(row, properties);
33
+ for (const [property, value] of ends)
34
+ if (value !== null)
35
+ writeValue(row, property, value);
36
+ getDriver().sync?.(row);
37
+ };
38
+ const show = (row, { item, key }) => {
39
+ rows.add(row);
40
+ const tracked = typeof item === 'object' && item !== null;
41
+ const seen = tracked ? seenItems.has(item) : seenKeys.has(key);
42
+ if (tracked)
43
+ seenItems.add(item);
44
+ else
45
+ seenKeys.add(key);
46
+ if (once && seen)
47
+ settle(row);
48
+ else {
49
+ stopView(row, properties);
50
+ animate(row, animation, transition);
51
+ }
52
+ };
53
+ const flush = () => {
54
+ queued = false;
55
+ if (disposed)
56
+ return;
57
+ const current = new Set();
58
+ const fresh = [];
59
+ source.eachChildView((child) => {
60
+ current.add(child);
61
+ if (!rows.has(child))
62
+ fresh.push(child);
63
+ return true;
64
+ });
65
+ for (const row of rows)
66
+ if (!current.has(row))
67
+ rows.delete(row);
68
+ for (const entry of pending.splice(0)) {
69
+ const row = fresh.find((candidate) => candidate._listViewItemIndex === entry.index &&
70
+ candidate._listViewSectionIndex === entry.section) ??
71
+ fresh.find((candidate) => entry.item !== undefined && candidate.bindingContext === entry.item);
72
+ if (!row)
73
+ continue;
74
+ fresh.splice(fresh.indexOf(row), 1);
75
+ show(row, entry);
76
+ }
77
+ };
78
+ const onItemLoading = (event) => {
79
+ const { index, section, view } = event;
80
+ const item = section === undefined
81
+ ? source._getDataItem?.(index)
82
+ : source._getDataItemInSection?.(section, index);
83
+ const entry = { index, section, item, key: `${section ?? ''}:${index}` };
84
+ if (view instanceof View) {
85
+ show(view, entry);
86
+ return;
87
+ }
88
+ pending.push(entry);
89
+ if (queued)
90
+ return;
91
+ queued = true;
92
+ void Promise.resolve().then(flush);
93
+ };
94
+ const cleanup = () => {
95
+ if (disposed)
96
+ return;
97
+ disposed = true;
98
+ source.off(ListView.itemLoadingEvent, onItemLoading);
99
+ source.off('unloaded', cleanup);
100
+ pending.length = 0;
101
+ for (const row of rows)
102
+ settle(row);
103
+ rows.clear();
104
+ };
105
+ source.on(ListView.itemLoadingEvent, onItemLoading);
106
+ source.on('unloaded', cleanup);
107
+ return cleanup;
108
+ }
109
+ //# sourceMappingURL=items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"items.js","sourceRoot":"","sources":["../src/items.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Transition } from './transition.js';
2
+ import type { Target } from './types.js';
3
+ export interface KeyboardOptions {
4
+ /** DIPs kept between the view's bottom edge and the keyboard. Defaults to zero. */
5
+ offset?: number;
6
+ }
7
+ export interface KeyboardState {
8
+ /** Whether a docked software keyboard covers part of the window. */
9
+ readonly visible: boolean;
10
+ /** DIPs of the window the keyboard covers, from its bottom edge. Zero when hidden or floating. */
11
+ readonly height: number;
12
+ /** Milliseconds the keyboard takes to get there. Zero when it changes at once. */
13
+ readonly duration: number;
14
+ /** The keyboard's own timing, to pass to `animate()` and move in step with it. */
15
+ readonly transition: Transition;
16
+ }
17
+ /**
18
+ * Calls back whenever the keyboard shows, hides or changes height, with how much
19
+ * of the window it covers and its timing. Returns a cleanup function.
20
+ *
21
+ * ```ts
22
+ * const off = onKeyboard(({ visible, transition }) => {
23
+ * animate(header, { scale: visible ? 0.8 : 1 }, transition)
24
+ * })
25
+ * ```
26
+ */
27
+ export declare function onKeyboard(callback: (keyboard: KeyboardState) => void): () => void;
28
+ /** The last state reported while someone listens. */
29
+ export declare function currentKeyboard(): KeyboardState;
30
+ /**
31
+ * Lifts the view by its overlap with the software keyboard, at the keyboard's
32
+ * own speed and curve, and lets it back down when the keyboard hides.
33
+ * Returns a function that removes the effect.
34
+ *
35
+ * ```ts
36
+ * const release = followKeyboard(composer)
37
+ * followKeyboard(sendButton, { offset: 12 })
38
+ * ```
39
+ */
40
+ export declare function followKeyboard(target: Target, options?: KeyboardOptions): () => void;
41
+ //# sourceMappingURL=keyboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAExC,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB,kGAAkG;IAClG,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,kFAAkF;IAClF,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;CAChC;AAuBD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI,CAclF;AAED,qDAAqD;AACrD,wBAAgB,eAAe,IAAI,aAAa,CAE/C;AA8FD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,eAAoB,GAC5B,MAAM,IAAI,CAOZ"}
@@ -0,0 +1,256 @@
1
+ import { Application, Utils, isAndroid, isIOS } from '@nativescript/core';
2
+ import { stop, toView } from './animate.js';
3
+ const BEGIN_FROM_CURRENT_STATE = 4;
4
+ const IOS_KEYBOARD_CURVE = 7;
5
+ // Measured: Core Animation plays the keyboard's spring (stiffness 1000, mass 3) critically damped in 500 ms.
6
+ const iosKeyboard = {
7
+ type: 'spring',
8
+ stiffness: 1000,
9
+ mass: 3,
10
+ damping: 2 * Math.sqrt(3000),
11
+ };
12
+ const iosCurves = ['easeInOut', 'easeIn', 'easeOut', 'linear'];
13
+ const hidden = Object.freeze({
14
+ visible: false,
15
+ height: 0,
16
+ duration: 0,
17
+ transition: { duration: 0 },
18
+ });
19
+ const listeners = new Set();
20
+ let state = hidden;
21
+ let unwatch;
22
+ /**
23
+ * Calls back whenever the keyboard shows, hides or changes height, with how much
24
+ * of the window it covers and its timing. Returns a cleanup function.
25
+ *
26
+ * ```ts
27
+ * const off = onKeyboard(({ visible, transition }) => {
28
+ * animate(header, { scale: visible ? 0.8 : 1 }, transition)
29
+ * })
30
+ * ```
31
+ */
32
+ export function onKeyboard(callback) {
33
+ if (typeof callback !== 'function')
34
+ throw new TypeError('onKeyboard() takes a callback.');
35
+ const listener = (keyboard) => callback(keyboard);
36
+ if (listeners.size === 0) {
37
+ state = hidden;
38
+ unwatch = isIOS ? watchIOS() : isAndroid ? watchAndroid() : undefined;
39
+ }
40
+ listeners.add(listener);
41
+ return () => {
42
+ if (!listeners.delete(listener) || listeners.size > 0)
43
+ return;
44
+ unwatch?.();
45
+ unwatch = undefined;
46
+ };
47
+ }
48
+ /** The last state reported while someone listens. */
49
+ export function currentKeyboard() {
50
+ return state;
51
+ }
52
+ function update(height, duration, transition) {
53
+ if (height === state.height)
54
+ return;
55
+ state = Object.freeze({ visible: height > 0, height, duration, transition });
56
+ for (const listener of [...listeners])
57
+ listener(state);
58
+ }
59
+ function watchIOS() {
60
+ const name = UIKeyboardWillChangeFrameNotification;
61
+ const observer = Application.ios.addNotificationObserver(name, (notification) => {
62
+ const info = notification.userInfo;
63
+ const window = Application.ios.window;
64
+ const end = info?.objectForKey(UIKeyboardFrameEndUserInfoKey)?.CGRectValue;
65
+ if (!info || !window || !end)
66
+ return;
67
+ const frame = window.convertRectFromWindow(end, null);
68
+ const bottom = window.bounds.size.height;
69
+ const docked = frame.size.height > 0 &&
70
+ frame.origin.y < bottom &&
71
+ frame.origin.y + frame.size.height >= bottom - 0.5;
72
+ const reported = numberIn(info, UIKeyboardAnimationDurationUserInfoKey) * 1000;
73
+ const curve = numberIn(info, UIKeyboardAnimationCurveUserInfoKey);
74
+ const height = docked ? bottom - frame.origin.y : 0;
75
+ if (!reported)
76
+ return update(height, 0, { duration: 0 });
77
+ if (curve === IOS_KEYBOARD_CURVE)
78
+ return update(height, 500, iosKeyboard);
79
+ update(height, reported, {
80
+ duration: reported,
81
+ ease: iosCurves[curve] ?? 'easeInOut',
82
+ });
83
+ });
84
+ return () => Application.ios.removeNotificationObserver(observer, name);
85
+ }
86
+ function watchAndroid() {
87
+ if (android.os.Build.VERSION.SDK_INT < 30)
88
+ return undefined;
89
+ const density = Utils.layout.getDisplayDensity();
90
+ let observer;
91
+ let stopped = false;
92
+ const attach = () => {
93
+ Application.off(Application.launchEvent, attach);
94
+ if (stopped || observer)
95
+ return;
96
+ const activity = Application.android.foregroundActivity ?? Application.android.startActivity;
97
+ const root = activity?.getWindow()?.getDecorView();
98
+ if (!root)
99
+ return;
100
+ try {
101
+ observer = new org.rafaelaugusto.jolt.KeyboardObserver(root, new org.rafaelaugusto.jolt.KeyboardObserver.Listener({
102
+ onChange: (height, duration, curve) => update(height / density, duration, duration
103
+ ? { duration, ease: curve ? sampled(curve) : 'linear' }
104
+ : { duration: 0 }),
105
+ }));
106
+ }
107
+ catch {
108
+ // A JS-only update cannot install the native plugin.
109
+ return;
110
+ }
111
+ observer.attach();
112
+ const height = observer.height() / density;
113
+ if (height > 0)
114
+ state = Object.freeze({ ...hidden, visible: true, height });
115
+ };
116
+ if (Application.android.foregroundActivity ?? Application.android.startActivity)
117
+ attach();
118
+ else
119
+ Application.on(Application.launchEvent, attach);
120
+ return () => {
121
+ stopped = true;
122
+ Application.off(Application.launchEvent, attach);
123
+ observer?.detach();
124
+ observer = undefined;
125
+ };
126
+ }
127
+ function sampled(curve) {
128
+ const values = Array.from({ length: curve.length }, (_, i) => curve[i]);
129
+ const last = values.length - 1;
130
+ if (last < 1)
131
+ return (progress) => progress;
132
+ return (progress) => {
133
+ const position = Math.min(Math.max(progress, 0), 1) * last;
134
+ const index = Math.min(Math.floor(position), last - 1);
135
+ return values[index] + (values[index + 1] - values[index]) * (position - index);
136
+ };
137
+ }
138
+ /**
139
+ * Lifts the view by its overlap with the software keyboard, at the keyboard's
140
+ * own speed and curve, and lets it back down when the keyboard hides.
141
+ * Returns a function that removes the effect.
142
+ *
143
+ * ```ts
144
+ * const release = followKeyboard(composer)
145
+ * followKeyboard(sendButton, { offset: 12 })
146
+ * ```
147
+ */
148
+ export function followKeyboard(target, options = {}) {
149
+ const view = toView(target);
150
+ const offset = options.offset ?? 0;
151
+ if (!Number.isFinite(offset))
152
+ throw new RangeError('Keyboard offset must be finite.');
153
+ if (isIOS)
154
+ return followIOS(view, offset);
155
+ if (isAndroid)
156
+ return followAndroid(view, offset);
157
+ return () => { };
158
+ }
159
+ function followIOS(view, offset) {
160
+ let disposed = false;
161
+ let current = 0;
162
+ const onKeyboard = (notification) => {
163
+ if (disposed || !view.isLoaded)
164
+ return;
165
+ const native = view.nativeViewProtected;
166
+ const window = native?.window;
167
+ const info = notification.userInfo;
168
+ if (!native || !window || !info)
169
+ return;
170
+ const end = info.objectForKey(UIKeyboardFrameEndUserInfoKey)?.CGRectValue;
171
+ if (!end)
172
+ return;
173
+ const keyboard = window.convertRectFromWindow(end, null);
174
+ const hidden = keyboard.size.height <= 0 || keyboard.origin.y >= window.bounds.size.height;
175
+ const frame = native.convertRectToView(native.bounds, null);
176
+ const bottom = frame.origin.y + frame.size.height - view.translateY;
177
+ const overlap = hidden ? 0 : Math.max(0, bottom + offset - keyboard.origin.y);
178
+ if (overlap === current)
179
+ return;
180
+ current = overlap;
181
+ stop(view, ['y']);
182
+ const apply = () => {
183
+ view.translateY = overlap ? -overlap : 0;
184
+ };
185
+ const duration = numberIn(info, UIKeyboardAnimationDurationUserInfoKey);
186
+ if (!duration)
187
+ return apply();
188
+ const curve = numberIn(info, UIKeyboardAnimationCurveUserInfoKey);
189
+ // The keyboard's curve is private; shifted into the options it still applies.
190
+ UIView.animateWithDurationDelayOptionsAnimationsCompletion(duration, 0, ((curve << 16) | BEGIN_FROM_CURRENT_STATE), apply, () => { });
191
+ };
192
+ const observer = Application.ios.addNotificationObserver(UIKeyboardWillChangeFrameNotification, onKeyboard);
193
+ const cleanup = () => {
194
+ if (disposed)
195
+ return;
196
+ disposed = true;
197
+ Application.ios.removeNotificationObserver(observer, UIKeyboardWillChangeFrameNotification);
198
+ view.off('unloaded', cleanup);
199
+ if (current)
200
+ view.translateY = 0;
201
+ };
202
+ view.on('unloaded', cleanup);
203
+ return cleanup;
204
+ }
205
+ function followAndroid(view, offset) {
206
+ if (android.os.Build.VERSION.SDK_INT < 30)
207
+ return () => { };
208
+ const density = Utils.layout.getDisplayDensity();
209
+ let disposed = false;
210
+ let follower;
211
+ const attach = () => {
212
+ if (disposed || follower)
213
+ return;
214
+ const native = view.nativeViewProtected;
215
+ if (!native)
216
+ return;
217
+ try {
218
+ follower = new org.rafaelaugusto.jolt.KeyboardFollower(native, offset * density, new org.rafaelaugusto.jolt.KeyboardFollower.Listener({
219
+ onStart: () => stop(view, ['y']),
220
+ onSettled: (translation) => {
221
+ view.translateY = translation / density;
222
+ },
223
+ }));
224
+ }
225
+ catch {
226
+ // A JS-only update cannot install the native plugin. Leave the platform's resize in place.
227
+ return;
228
+ }
229
+ follower.attach();
230
+ };
231
+ const cleanup = () => {
232
+ if (disposed)
233
+ return;
234
+ disposed = true;
235
+ view.off('loaded', attach);
236
+ view.off('unloaded', cleanup);
237
+ if (follower) {
238
+ follower.detach();
239
+ follower = undefined;
240
+ view.translateY = 0;
241
+ }
242
+ };
243
+ view.on('loaded', attach);
244
+ view.on('unloaded', cleanup);
245
+ if (view.isLoaded)
246
+ attach();
247
+ return cleanup;
248
+ }
249
+ /** The runtime hands NSNumber values over as plain numbers. */
250
+ function numberIn(info, key) {
251
+ const value = info.objectForKey(key);
252
+ if (typeof value === 'number')
253
+ return value;
254
+ return value?.doubleValue ?? 0;
255
+ }
256
+ //# sourceMappingURL=keyboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Label } from '@nativescript/core';
2
+ /** Reports text, formatted text and style changes of a Label until the returned function is called. */
3
+ export declare function watchLabel(view: Label, onChange: () => void): () => void;
4
+ /** A CAAnimationDelegate that reports when its animation stops. Release it with `forgetCompletion`. */
5
+ export declare function completion(callback: (finished: boolean) => void): NSObject & CAAnimationDelegate;
6
+ export declare function forgetCompletion(delegate: NSObject): void;
7
+ //# sourceMappingURL=label.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.d.ts","sourceRoot":"","sources":["../src/label.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AA6B/C,uGAAuG;AACvG,wBAAgB,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAYxE;AAED,uGAAuG;AACvG,wBAAgB,UAAU,CACxB,QAAQ,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,GACpC,QAAQ,GAAG,mBAAmB,CAwBhC;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,QAElD"}
package/dist/label.js ADDED
@@ -0,0 +1,60 @@
1
+ const callbacks = new WeakMap();
2
+ let Delegate;
3
+ const styleEvents = [
4
+ 'fontInternalChange',
5
+ 'colorChange',
6
+ 'textAlignmentChange',
7
+ 'textDecorationChange',
8
+ 'textTransformChange',
9
+ 'letterSpacingChange',
10
+ 'lineHeightChange',
11
+ 'textShadowChange',
12
+ 'textStrokeChange',
13
+ 'whiteSpaceChange',
14
+ 'textOverflowChange',
15
+ 'maxLinesChange',
16
+ 'paddingLeftChange',
17
+ 'paddingRightChange',
18
+ 'paddingTopChange',
19
+ 'paddingBottomChange',
20
+ 'visibilityChange',
21
+ 'directionChange',
22
+ 'borderLeftWidthChange',
23
+ 'borderRightWidthChange',
24
+ 'borderTopWidthChange',
25
+ 'borderBottomWidthChange',
26
+ ];
27
+ /** Reports text, formatted text and style changes of a Label until the returned function is called. */
28
+ export function watchLabel(view, onChange) {
29
+ const formatted = view.formattedText;
30
+ view.on('textChange', onChange);
31
+ view.on('formattedTextChange', onChange);
32
+ formatted?.on('propertyChange', onChange);
33
+ for (const event of styleEvents)
34
+ view.style.on(event, onChange);
35
+ return () => {
36
+ view.off('textChange', onChange);
37
+ view.off('formattedTextChange', onChange);
38
+ formatted?.off('propertyChange', onChange);
39
+ for (const event of styleEvents)
40
+ view.style.off(event, onChange);
41
+ };
42
+ }
43
+ /** A CAAnimationDelegate that reports when its animation stops. Release it with `forgetCompletion`. */
44
+ export function completion(callback) {
45
+ if (!Delegate) {
46
+ const base = NSObject;
47
+ Delegate = base.extend({
48
+ animationDidStopFinished(_animation, finished) {
49
+ callbacks.get(this)?.(finished);
50
+ },
51
+ }, { protocols: [CAAnimationDelegate], name: 'JoltLabelAnimationDelegate' });
52
+ }
53
+ const delegate = Delegate.new();
54
+ callbacks.set(delegate, callback);
55
+ return delegate;
56
+ }
57
+ export function forgetCompletion(delegate) {
58
+ callbacks.delete(delegate);
59
+ }
60
+ //# sourceMappingURL=label.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"label.js","sourceRoot":"","sources":["../src/label.ts"],"names":[],"mappings":"AAEA,MAAM,SAAS,GAAG,IAAI,OAAO,EAAyC,CAAA;AACtE,IAAI,QAAqC,CAAA;AACzC,MAAM,WAAW,GAAG;IAClB,oBAAoB;IACpB,aAAa;IACb,qBAAqB;IACrB,sBAAsB;IACtB,qBAAqB;IACrB,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,kBAAkB;IAClB,oBAAoB;IACpB,gBAAgB;IAChB,mBAAmB;IACnB,oBAAoB;IACpB,kBAAkB;IAClB,qBAAqB;IACrB,kBAAkB;IAClB,iBAAiB;IACjB,uBAAuB;IACvB,wBAAwB;IACxB,sBAAsB;IACtB,yBAAyB;CAC1B,CAAA;AAED,uGAAuG;AACvG,MAAM,UAAU,UAAU,CAAC,IAAW,EAAE,QAAoB;IAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;IACpC,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;IAC/B,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;IACxC,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;IACzC,KAAK,MAAM,KAAK,IAAI,WAAW;QAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC/D,OAAO,GAAG,EAAE;QACV,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAA;QAChC,IAAI,CAAC,GAAG,CAAC,qBAAqB,EAAE,QAAQ,CAAC,CAAA;QACzC,SAAS,EAAE,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAA;QAC1C,KAAK,MAAM,KAAK,IAAI,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAClE,CAAC,CAAA;AACH,CAAC;AAED,uGAAuG;AACvG,MAAM,UAAU,UAAU,CACxB,QAAqC;IAErC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,QAKZ,CAAA;QACD,QAAQ,GAAG,IAAI,CAAC,MAAM,CACpB;YACE,wBAAwB,CAEtB,UAAuB,EACvB,QAAiB;gBAEjB,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAA;YACjC,CAAC;SACF,EACD,EAAE,SAAS,EAAE,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,4BAA4B,EAAE,CACzE,CAAA;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAA;IAC/B,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;IACjC,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAkB;IACjD,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC5B,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type Animation } from './engine.js';
2
+ import { type Spring, type Tween, type SpringName } from './transition.js';
3
+ import type { Target } from './types.js';
4
+ export type LayoutOptions = (Omit<Spring, 'repeat' | 'repeatType'> | Omit<Tween, 'repeat' | 'repeatType'>) & {
5
+ /** Scale from the previous size (including content); false snaps size and only moves. Default: 'scale'. */
6
+ size?: 'scale' | false;
7
+ /** Fade new children from zero to their configured opacity. Default: true. */
8
+ enter?: boolean;
9
+ };
10
+ /** Animate the next layout of a container's direct children. Call before a synchronous mutation. */
11
+ export declare function animateLayout(container: Target, options?: LayoutOptions | SpringName): Animation;
12
+ export declare function animateLayout(container: Target, change: () => void, options?: LayoutOptions | SpringName): Animation;
13
+ //# sourceMappingURL=layout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAGA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAW,KAAK,MAAM,EAAE,KAAK,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACnF,OAAO,KAAK,EAAa,MAAM,EAAE,MAAM,YAAY,CAAA;AAEnD,MAAM,MAAM,aAAa,GAAG,CAC1B,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,YAAY,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,QAAQ,GAAG,YAAY,CAAC,CAC7E,GAAG;IACF,2GAA2G;IAC3G,IAAI,CAAC,EAAE,OAAO,GAAG,KAAK,CAAA;IACtB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAsBD,oGAAoG;AACpG,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,GACnC,SAAS,CAAA;AACZ,wBAAgB,aAAa,CAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,IAAI,EAClB,OAAO,CAAC,EAAE,aAAa,GAAG,UAAU,GACnC,SAAS,CAAA"}