@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
package/dist/engine.js CHANGED
@@ -1,8 +1,19 @@
1
+ import { createClock, validateProgress, } from './playback.js';
1
2
  import { getDriver } from './driver/index.js';
3
+ import { playHaptics } from './haptics.js';
2
4
  import { readValue, writeValue } from './properties.js';
3
5
  import { createTrack } from './track.js';
6
+ import { isColorProperty } from './color.js';
7
+ const revisions = new WeakMap();
4
8
  const running = new WeakMap();
5
9
  const arrivals = new WeakMap();
10
+ const arrivalTimings = new WeakMap();
11
+ export function arrivalTimingOf(animation) {
12
+ return arrivalTimings.get(animation);
13
+ }
14
+ export function setArrivalTiming(animation, timing) {
15
+ arrivalTimings.set(animation, timing);
16
+ }
6
17
  /**
7
18
  * Resolves once the animation looks done, which for a spring is well before
8
19
  * `finished`. Sequences move on to the next step then.
@@ -15,6 +26,8 @@ export function setArrival(animation, arrival) {
15
26
  }
16
27
  export class ViewAnimation {
17
28
  view;
29
+ haptic;
30
+ held;
18
31
  finished;
19
32
  resolve;
20
33
  entries = [];
@@ -24,10 +37,198 @@ export class ViewAnimation {
24
37
  cancelWait;
25
38
  arrive;
26
39
  cancelArrival;
27
- constructor(view, plans) {
40
+ haptics;
41
+ clock;
42
+ _paused = false;
43
+ controlled = false;
44
+ pendingProgress;
45
+ total = 0;
46
+ started = false;
47
+ arrival = 0;
48
+ arrived = false;
49
+ idleListener;
50
+ readyListener;
51
+ endless;
52
+ timingListeners = new Set();
53
+ timingChanged() {
54
+ for (const callback of [...this.timingListeners])
55
+ callback();
56
+ }
57
+ get paused() {
58
+ return this._paused;
59
+ }
60
+ get duration() {
61
+ return this.started ? this.total : this.endless ? Infinity : 0;
62
+ }
63
+ get currentTime() {
64
+ return this.time();
65
+ }
66
+ get ready() {
67
+ return this.started || this.settled;
68
+ }
69
+ get idle() {
70
+ return this.settled || (this.started && this.pending === 0);
71
+ }
72
+ get progress() {
73
+ if (!Number.isFinite(this.duration))
74
+ throw new RangeError('Progress requires a finite animation.');
75
+ if (this.settled && this.complete)
76
+ return 1;
77
+ return (this.pendingProgress ??
78
+ (this.duration ? Math.min(1, this.time() / this.duration) : this.settled ? 1 : 0));
79
+ }
80
+ set progress(value) {
81
+ validateProgress(value, this.duration);
82
+ if (this.settled)
83
+ return;
84
+ if (!this.started) {
85
+ this.pendingProgress = value;
86
+ return;
87
+ }
88
+ this.seekTime(this.duration * value);
89
+ }
90
+ onIdle(callback) {
91
+ this.idleListener = callback;
92
+ }
93
+ onReady(callback) {
94
+ this.readyListener = callback;
95
+ }
96
+ releaseGroup() {
97
+ this.held = false;
98
+ if (this.idle && !this._paused)
99
+ this.settle();
100
+ }
101
+ pause() {
102
+ if (this.settled || this._paused)
103
+ return;
104
+ this.controlled = true;
105
+ this._paused = true;
106
+ this.clock?.pause();
107
+ this.cancelArrival?.();
108
+ this.haptics?.pause();
109
+ if (this.started)
110
+ this.controlTracks(this.time(), 'pause');
111
+ this.timingChanged();
112
+ }
113
+ play() {
114
+ if (this.settled || !this._paused)
115
+ return;
116
+ this.controlled = true;
117
+ this._paused = false;
118
+ this.clock?.play();
119
+ if (this.started) {
120
+ this.controlTracks(this.time(), 'play');
121
+ this.scheduleArrival();
122
+ this.haptics?.play();
123
+ if (this.pending === 0)
124
+ this.becameIdle();
125
+ }
126
+ this.timingChanged();
127
+ }
128
+ seekTime(time) {
129
+ if (this.settled)
130
+ return;
131
+ this.controlled = true;
132
+ const position = Math.max(0, Math.min(this.total, time));
133
+ this.clock?.seek(position);
134
+ if (!this._paused)
135
+ this.clock?.play();
136
+ for (const entry of this.entries) {
137
+ if (entry.done &&
138
+ entry.finished &&
139
+ revisions.get(this.view)?.get(entry.track.property) === entry.token &&
140
+ readValue(this.view, entry.track.property) === entry.completedValue) {
141
+ entry.done = false;
142
+ entry.finished = false;
143
+ this.pending++;
144
+ entriesOf(this.view).set(entry.track.property, entry);
145
+ this.playEntry(entry, position);
146
+ }
147
+ }
148
+ this.controlTracks(position);
149
+ this.scheduleArrival();
150
+ this.haptics?.seek();
151
+ if (this.pending === 0)
152
+ this.becameIdle();
153
+ this.timingChanged();
154
+ }
155
+ elapsed(entry, now) {
156
+ return this.controlled
157
+ ? this.time()
158
+ : (getDriver().elapsed?.(entry.handle) ?? now - entry.startedAt);
159
+ }
160
+ time() {
161
+ return this.clock?.time() ?? 0;
162
+ }
163
+ controlTracks(position, command = 'seek') {
164
+ const driver = getDriver();
165
+ for (const entry of this.entries)
166
+ if (!entry.done)
167
+ driver.control?.(this.view, entry.handle, position, this._paused, command);
168
+ }
169
+ scheduleArrival() {
170
+ this.cancelArrival?.();
171
+ this.cancelArrival = undefined;
172
+ if (this.pending === 0 ||
173
+ this.arrived ||
174
+ this._paused ||
175
+ !Number.isFinite(this.arrival) ||
176
+ this.total <= this.arrival)
177
+ return;
178
+ const remaining = this.arrival - this.time();
179
+ if (remaining <= 0) {
180
+ this.arrived = true;
181
+ this.arrive();
182
+ this.timingChanged();
183
+ }
184
+ else
185
+ this.cancelArrival = getDriver().after(remaining, () => {
186
+ this.arrived = true;
187
+ this.arrive();
188
+ this.timingChanged();
189
+ });
190
+ }
191
+ becameIdle() {
192
+ this.clock?.pause();
193
+ this.idleListener?.();
194
+ if (!this.complete || (!this.held && !this._paused))
195
+ this.settle();
196
+ }
197
+ playEntry(entry, elapsed = 0) {
198
+ const initial = entry.generation === 0;
199
+ const instance = ++entry.generation;
200
+ const driver = getDriver();
201
+ entry.handle = driver.play(this.view, entry.track, initial ? entry.startedAt : driver.now() - elapsed, (finished = true) => {
202
+ if (entry.done || instance !== entry.generation)
203
+ return;
204
+ entry.done = true;
205
+ entry.finished = finished;
206
+ entry.completedValue = readValue(this.view, entry.track.property);
207
+ forget(entry);
208
+ this.ended(finished);
209
+ });
210
+ }
211
+ unloaded = () => this.stop();
212
+ constructor(view, plans, haptic, held = false) {
28
213
  this.view = view;
214
+ this.haptic = haptic;
215
+ this.held = held;
216
+ this.endless = plans.some((plan) => !Number.isFinite(plan.transition.repeat) ||
217
+ (plan.transition.curve.type === 'tween' &&
218
+ !Number.isFinite(plan.transition.curve.duration)));
29
219
  this.finished = new Promise((resolve) => (this.resolve = resolve));
30
220
  setArrival(this, new Promise((resolve) => (this.arrive = resolve)));
221
+ setArrivalTiming(this, {
222
+ read: () => ({
223
+ remaining: this.started ? Math.max(0, this.arrival - this.time()) : undefined,
224
+ paused: this._paused,
225
+ arrived: this.arrived || this.settled,
226
+ }),
227
+ subscribe: (callback) => {
228
+ this.timingListeners.add(callback);
229
+ return () => this.timingListeners.delete(callback);
230
+ },
231
+ });
31
232
  if (view.isLoaded && view.nativeViewProtected)
32
233
  this.start(plans);
33
234
  else
@@ -40,6 +241,7 @@ export class ViewAnimation {
40
241
  if (this.settled)
41
242
  return;
42
243
  this.cancelWait?.();
244
+ this.haptics?.cancel();
43
245
  const now = getDriver().now();
44
246
  for (const entry of this.entries) {
45
247
  if (!entry.done)
@@ -49,33 +251,55 @@ export class ViewAnimation {
49
251
  this.settle();
50
252
  }
51
253
  ended(finished) {
52
- if (!finished)
254
+ if (!finished) {
53
255
  this.complete = false;
256
+ this.haptics?.cancel();
257
+ }
54
258
  if (--this.pending === 0)
55
- this.settle();
259
+ this.becameIdle();
56
260
  }
57
261
  start(plans) {
262
+ this.started = true;
58
263
  const driver = getDriver();
59
264
  const now = driver.now();
60
265
  const entries = entriesOf(this.view);
61
- const tracks = plans.map(({ property, keyframes, transition }) => {
266
+ const tracks = plans.map(({ property, keyframes, transition, relative, path }) => {
62
267
  const previous = entries.get(property);
63
268
  let current;
64
269
  let velocity = 0;
65
270
  if (previous) {
66
- const elapsed = now - previous.startedAt;
271
+ const elapsed = elapsedOf(previous, now);
67
272
  current = driver.presented(this.view, property) ?? previous.track.valueAt(elapsed);
68
- velocity = previous.track.velocityAt(elapsed);
273
+ velocity = previous.owner.paused ? 0 : previous.track.velocityAt(elapsed);
69
274
  release(previous, now, false);
70
275
  }
71
276
  else {
72
- current = readValue(this.view, property);
277
+ current =
278
+ (isColorProperty(property)
279
+ ? driver.presented(this.view, property)
280
+ : undefined) ?? readValue(this.view, property);
73
281
  }
74
- return createTrack(property, keyframes.map((value) => value ?? current), transition, velocity);
282
+ if (path)
283
+ return path.track(property, relative ? current : 0, transition.delay);
284
+ return createTrack(property, keyframes.map((value) => {
285
+ if (value === null)
286
+ return current;
287
+ if (!relative || isColorProperty(property))
288
+ return value;
289
+ return property === 'opacity' || property.startsWith('scale')
290
+ ? current * value
291
+ : current + value;
292
+ }), transition, velocity);
75
293
  });
76
294
  for (const track of tracks)
77
295
  writeValue(this.view, track.property, track.to);
296
+ driver.sync?.(this.view);
78
297
  for (const track of tracks) {
298
+ let tokens = revisions.get(this.view);
299
+ if (!tokens)
300
+ revisions.set(this.view, (tokens = new Map()));
301
+ const token = Symbol(track.property);
302
+ tokens.set(track.property, token);
79
303
  if (track.end === 0)
80
304
  continue;
81
305
  const entry = {
@@ -84,29 +308,44 @@ export class ViewAnimation {
84
308
  owner: this,
85
309
  handle: undefined,
86
310
  done: false,
311
+ finished: false,
312
+ generation: 0,
313
+ token,
87
314
  };
88
315
  entries.set(track.property, entry);
89
316
  this.entries.push(entry);
90
317
  this.pending++;
91
318
  }
92
- for (const entry of this.entries) {
93
- entry.handle = driver.play(this.view, entry.track, now, () => {
94
- if (entry.done)
95
- return;
96
- entry.done = true;
97
- forget(entry);
98
- this.ended(true);
99
- });
319
+ this.total = Math.max(0, ...tracks.map((track) => track.end));
320
+ this.arrival = Math.max(0, ...tracks.map((track) => track.arrival));
321
+ this.clock =
322
+ (this.pending ? driver.clock?.(this.total) : undefined) ??
323
+ createClock(() => driver.now());
324
+ if (this._paused)
325
+ this.clock.pause();
326
+ this.view.on('unloaded', this.unloaded);
327
+ this.haptics = playHaptics(this.view, tracks, this.haptic, driver, now, () => this.time());
328
+ if (this._paused)
329
+ this.haptics?.pause();
330
+ for (const entry of this.entries)
331
+ this.playEntry(entry);
332
+ if (this.pendingProgress !== undefined) {
333
+ const progress = this.pendingProgress;
334
+ this.pendingProgress = undefined;
335
+ this.seekTime(progress * this.total);
100
336
  }
101
- const arrival = Math.max(...this.entries.map((entry) => entry.track.arrival));
337
+ else if (this._paused)
338
+ this.controlTracks(0, 'pause');
339
+ this.scheduleArrival();
340
+ this.readyListener?.();
341
+ this.timingChanged();
102
342
  if (this.pending === 0)
103
- this.settle();
104
- else if (Number.isFinite(arrival)) {
105
- this.cancelArrival = driver.after(arrival, this.arrive);
106
- }
343
+ this.becameIdle();
107
344
  }
108
345
  waitForLoad(plans) {
109
- for (const { property, keyframes } of plans) {
346
+ for (const { property, keyframes, relative } of plans) {
347
+ if (relative && !isColorProperty(property))
348
+ continue;
110
349
  const first = keyframes[0];
111
350
  if (first !== null && first !== undefined)
112
351
  writeValue(this.view, property, first);
@@ -126,12 +365,49 @@ export class ViewAnimation {
126
365
  return;
127
366
  this.settled = true;
128
367
  this.cancelArrival?.();
368
+ this.clock?.cancel();
369
+ this.view.off('unloaded', this.unloaded);
370
+ if (this.complete)
371
+ this.haptics?.finish();
372
+ else
373
+ this.haptics?.cancel();
374
+ this.haptics = undefined;
129
375
  this.arrive();
130
376
  this.resolve(this.complete);
377
+ this.timingChanged();
131
378
  }
132
379
  }
380
+ /** Current native presentation when available, otherwise the active curve or model. */
381
+ export function currentValue(view, property) {
382
+ const entry = running.get(view)?.get(property);
383
+ if (!entry)
384
+ return readValue(view, property);
385
+ const driver = getDriver();
386
+ return (driver.presented(view, property) ??
387
+ entry.track.valueAt(elapsedOf(entry, driver.now())));
388
+ }
389
+ /** Internal property ownership marker; layout cleanup must preserve newer animations. */
390
+ export function propertyRevision(view, property) {
391
+ return revisions.get(view)?.get(property);
392
+ }
393
+ /** Sample an existing owner at layout time, without stealing an animation started meanwhile. */
394
+ export function captureValue(view, property) {
395
+ const token = propertyRevision(view, property);
396
+ const entry = running.get(view)?.get(property);
397
+ const initial = currentValue(view, property);
398
+ return () => {
399
+ if (propertyRevision(view, property) !== token)
400
+ return undefined;
401
+ if (entry && running.get(view)?.get(property) === entry)
402
+ return currentValue(view, property);
403
+ return entry?.finished ? entry.track.to : initial;
404
+ };
405
+ }
133
406
  /** Stops whatever is animating these properties of the view, or all of them. */
134
407
  export function stopView(view, properties) {
408
+ const tokens = revisions.get(view);
409
+ for (const property of properties ?? tokens?.keys() ?? [])
410
+ tokens?.set(property, Symbol(property));
135
411
  const entries = running.get(view);
136
412
  if (!entries)
137
413
  return;
@@ -159,10 +435,14 @@ function release(entry, now, commit) {
159
435
  entry.done = true;
160
436
  forget(entry);
161
437
  if (commit) {
162
- const value = driver.presented(view, property) ?? entry.track.valueAt(now - entry.startedAt);
438
+ const value = driver.presented(view, property) ?? entry.track.valueAt(elapsedOf(entry, now));
163
439
  writeValue(view, property, value);
440
+ driver.sync?.(view, property);
164
441
  }
165
442
  driver.stop(view, entry.handle);
166
443
  entry.owner.ended(false);
167
444
  }
445
+ function elapsedOf(entry, now) {
446
+ return entry.owner.elapsed(entry, now);
447
+ }
168
448
  //# sourceMappingURL=engine.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { type View } from '@nativescript/core';
2
+ import type { Driver } from './driver/index.js';
3
+ import type { Track } from './track.js';
4
+ export type HapticStyle = 'light' | 'medium' | 'heavy';
5
+ export interface HapticOptions {
6
+ style: HapticStyle;
7
+ /** Points from 0 to 1 over the finite animation, excluding its initial delay. Defaults to arrival. */
8
+ times?: readonly number[];
9
+ }
10
+ export type Haptic = HapticStyle | HapticOptions | false;
11
+ /** Validate before any running animation is interrupted. */
12
+ export declare function resolveHaptic(haptic: Haptic | undefined): HapticOptions | undefined;
13
+ /** Discrete feedback only: animation playback remains entirely native. */
14
+ export declare function playHaptics(view: View, tracks: readonly Track[], options: HapticOptions | undefined, driver: Driver, startedAt: number, elapsedTime?: () => number): {
15
+ cancel: () => void;
16
+ pause(): void;
17
+ play(): void;
18
+ seek(): void;
19
+ finish(): void;
20
+ } | undefined;
21
+ //# sourceMappingURL=haptics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"haptics.d.ts","sourceRoot":"","sources":["../src/haptics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AAEvC,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAA;AAEtD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAA;IAClB,sGAAsG;IACtG,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC1B;AAED,MAAM,MAAM,MAAM,GAAG,WAAW,GAAG,aAAa,GAAG,KAAK,CAAA;AAExD,4DAA4D;AAC5D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,SAAS,CAsBnF;AAMD,0EAA0E;AAC1E,wBAAgB,WAAW,CACzB,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,OAAO,EAAE,aAAa,GAAG,SAAS,EAClC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,WAAW,eAAiC;;;;;;cAiG7C"}
@@ -0,0 +1,120 @@
1
+ import { isIOS } from '@nativescript/core';
2
+ /** Validate before any running animation is interrupted. */
3
+ export function resolveHaptic(haptic) {
4
+ if (haptic === undefined || haptic === false)
5
+ return undefined;
6
+ const options = typeof haptic === 'string' ? { style: haptic } : haptic;
7
+ if (!options || !['light', 'medium', 'heavy'].includes(options.style))
8
+ throw new TypeError('Haptic style must be light, medium or heavy.');
9
+ const times = options.times;
10
+ if (times !== undefined &&
11
+ (!Array.isArray(times) ||
12
+ times.length === 0 ||
13
+ Array.from(times).some((time, i) => !Number.isFinite(time) ||
14
+ time <= 0 ||
15
+ time > 1 ||
16
+ (i > 0 && time <= times[i - 1]))))
17
+ throw new RangeError('Haptic times must be increasing points greater than 0 and at most 1.');
18
+ return { style: options.style, times: times && [...times] };
19
+ }
20
+ const PREPARE_AHEAD = 100;
21
+ const MAX_LATENESS = 100;
22
+ const COMPLETION_TOLERANCE = 20;
23
+ /** Discrete feedback only: animation playback remains entirely native. */
24
+ export function playHaptics(view, tracks, options, driver, startedAt, elapsedTime = () => driver.now() - startedAt) {
25
+ if (!isIOS || !options || typeof UIImpactFeedbackGenerator === 'undefined')
26
+ return;
27
+ const moving = tracks.filter((track) => track.duration > 0 && track.values.some((value) => value !== track.values[0]));
28
+ if (!moving.length)
29
+ return;
30
+ const end = Math.max(...tracks.map((track) => track.end));
31
+ if (!Number.isFinite(end))
32
+ return;
33
+ const delay = Math.min(...moving.map((track) => track.delay));
34
+ const offsets = options.times
35
+ ? options.times.map((time) => delay + (end - delay) * time)
36
+ : [Math.max(...tracks.map((track) => track.arrival))];
37
+ const styles = {
38
+ light: 0,
39
+ medium: 1,
40
+ heavy: 2,
41
+ };
42
+ let generator = UIImpactFeedbackGenerator.alloc().initWithStyle(styles[options.style]);
43
+ const native = view.nativeViewProtected;
44
+ let paused = false;
45
+ let next = 0;
46
+ let cancelPrepare;
47
+ let cancelImpact;
48
+ const active = () => view.isLoaded &&
49
+ view.nativeViewProtected === native &&
50
+ !!native.window &&
51
+ UIApplication.sharedApplication.applicationState === 0; // UIApplicationState.Active
52
+ const cancelTimers = () => {
53
+ cancelPrepare?.();
54
+ cancelImpact?.();
55
+ cancelPrepare = cancelImpact = undefined;
56
+ };
57
+ const cancel = () => {
58
+ cancelPrepare?.();
59
+ cancelImpact?.();
60
+ cancelPrepare = cancelImpact = undefined;
61
+ generator = undefined;
62
+ view.off('unloaded', cancel);
63
+ };
64
+ const fire = (tolerance = 0) => {
65
+ const elapsed = elapsedTime();
66
+ // A busy UI thread can delay timers. Drop stale impacts instead of replaying
67
+ // several old taps at once when it becomes responsive again.
68
+ while (next < offsets.length && offsets[next] <= elapsed + tolerance) {
69
+ const offset = offsets[next++];
70
+ if (active() && elapsed - offset <= MAX_LATENESS)
71
+ generator?.impactOccurred();
72
+ }
73
+ };
74
+ const schedule = () => {
75
+ if (paused)
76
+ return;
77
+ if (!generator || next === offsets.length)
78
+ return cancel();
79
+ const remaining = offsets[next] - elapsedTime();
80
+ if (active())
81
+ generator.prepare();
82
+ if (remaining > PREPARE_AHEAD) {
83
+ cancelPrepare = driver.after(remaining - PREPARE_AHEAD, () => {
84
+ if (active())
85
+ generator?.prepare();
86
+ });
87
+ }
88
+ cancelImpact = driver.after(Math.max(0, remaining), () => {
89
+ fire();
90
+ schedule();
91
+ });
92
+ };
93
+ view.on('unloaded', cancel);
94
+ schedule();
95
+ return {
96
+ cancel,
97
+ pause() {
98
+ paused = true;
99
+ cancelTimers();
100
+ },
101
+ play() {
102
+ if (paused) {
103
+ paused = false;
104
+ schedule();
105
+ }
106
+ },
107
+ seek() {
108
+ cancelTimers();
109
+ while (next < offsets.length && offsets[next] <= elapsedTime())
110
+ next++;
111
+ schedule();
112
+ },
113
+ finish() {
114
+ // Native completion may beat the timer at the final keyframe by a frame.
115
+ fire(COMPLETION_TOLERANCE);
116
+ cancel();
117
+ },
118
+ };
119
+ }
120
+ //# sourceMappingURL=haptics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"haptics.js","sourceRoot":"","sources":["../src/haptics.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAa,MAAM,oBAAoB,CAAA;AAcrD,4DAA4D;AAC5D,MAAM,UAAU,aAAa,CAAC,MAA0B;IACtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,KAAK;QAAE,OAAO,SAAS,CAAA;IAC9D,MAAM,OAAO,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;IACvE,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;QACnE,MAAM,IAAI,SAAS,CAAC,8CAA8C,CAAC,CAAA;IACrE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAA;IAC3B,IACE,KAAK,KAAK,SAAS;QACnB,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,CAAC,MAAM,KAAK,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CACpB,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACV,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtB,IAAI,IAAI,CAAC;gBACT,IAAI,GAAG,CAAC;gBACR,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC,CACnC,CAAC;QAEJ,MAAM,IAAI,UAAU,CAClB,sEAAsE,CACvE,CAAA;IACH,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,CAAA;AAC7D,CAAC;AAED,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,YAAY,GAAG,GAAG,CAAA;AACxB,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAE/B,0EAA0E;AAC1E,MAAM,UAAU,WAAW,CACzB,IAAU,EACV,MAAwB,EACxB,OAAkC,EAClC,MAAc,EACd,SAAiB,EACjB,WAAW,GAAG,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,SAAS;IAE5C,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,IAAI,OAAO,yBAAyB,KAAK,WAAW;QAAE,OAAM;IAClF,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAC1B,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,QAAQ,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAChF,CAAA;IACD,IAAI,CAAC,MAAM,CAAC,MAAM;QAAE,OAAM;IAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACzD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAM;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK;QAC3B,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,CAAC;QAC3D,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IACvD,MAAM,MAAM,GAAG;QACb,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,KAAK,EAAE,CAAC;KAC4C,CAAA;IACtD,IAAI,SAAS,GACX,yBAAyB,CAAC,KAAK,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAA;IACxE,MAAM,MAAM,GAAG,IAAI,CAAC,mBAA6B,CAAA;IACjD,IAAI,MAAM,GAAG,KAAK,CAAA;IAClB,IAAI,IAAI,GAAG,CAAC,CAAA;IACZ,IAAI,aAAuC,CAAA;IAC3C,IAAI,YAAsC,CAAA;IAE1C,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,IAAI,CAAC,QAAQ;QACb,IAAI,CAAC,mBAAmB,KAAK,MAAM;QACnC,CAAC,CAAC,MAAM,CAAC,MAAM;QACf,aAAa,CAAC,iBAAiB,CAAC,gBAAgB,KAAK,CAAC,CAAA,CAAC,4BAA4B;IAErF,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,aAAa,EAAE,EAAE,CAAA;QACjB,YAAY,EAAE,EAAE,CAAA;QAChB,aAAa,GAAG,YAAY,GAAG,SAAS,CAAA;IAC1C,CAAC,CAAA;IACD,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,aAAa,EAAE,EAAE,CAAA;QACjB,YAAY,EAAE,EAAE,CAAA;QAChB,aAAa,GAAG,YAAY,GAAG,SAAS,CAAA;QACxC,SAAS,GAAG,SAAS,CAAA;QACrB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAC9B,CAAC,CAAA;IAED,MAAM,IAAI,GAAG,CAAC,SAAS,GAAG,CAAC,EAAE,EAAE;QAC7B,MAAM,OAAO,GAAG,WAAW,EAAE,CAAA;QAC7B,6EAA6E;QAC7E,6DAA6D;QAC7D,OAAO,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAE,IAAI,OAAO,GAAG,SAAS,EAAE,CAAC;YACtE,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAE,CAAA;YAC/B,IAAI,MAAM,EAAE,IAAI,OAAO,GAAG,MAAM,IAAI,YAAY;gBAAE,SAAS,EAAE,cAAc,EAAE,CAAA;QAC/E,CAAC;IACH,CAAC,CAAA;IAED,MAAM,QAAQ,GAAG,GAAG,EAAE;QACpB,IAAI,MAAM;YAAE,OAAM;QAClB,IAAI,CAAC,SAAS,IAAI,IAAI,KAAK,OAAO,CAAC,MAAM;YAAE,OAAO,MAAM,EAAE,CAAA;QAC1D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAE,GAAG,WAAW,EAAE,CAAA;QAChD,IAAI,MAAM,EAAE;YAAE,SAAS,CAAC,OAAO,EAAE,CAAA;QACjC,IAAI,SAAS,GAAG,aAAa,EAAE,CAAC;YAC9B,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,EAAE,GAAG,EAAE;gBAC3D,IAAI,MAAM,EAAE;oBAAE,SAAS,EAAE,OAAO,EAAE,CAAA;YACpC,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,EAAE,GAAG,EAAE;YACvD,IAAI,EAAE,CAAA;YACN,QAAQ,EAAE,CAAA;QACZ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAA;IAED,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAC3B,QAAQ,EAAE,CAAA;IACV,OAAO;QACL,MAAM;QACN,KAAK;YACH,MAAM,GAAG,IAAI,CAAA;YACb,YAAY,EAAE,CAAA;QAChB,CAAC;QACD,IAAI;YACF,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,GAAG,KAAK,CAAA;gBACd,QAAQ,EAAE,CAAA;YACZ,CAAC;QACH,CAAC;QACD,IAAI;YACF,YAAY,EAAE,CAAA;YACd,OAAO,IAAI,GAAG,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAE,IAAI,WAAW,EAAE;gBAAE,IAAI,EAAE,CAAA;YACvE,QAAQ,EAAE,CAAA;QACZ,CAAC;QACD,MAAM;YACJ,yEAAyE;YACzE,IAAI,CAAC,oBAAoB,CAAC,CAAA;YAC1B,MAAM,EAAE,CAAA;QACV,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { type Image, type ImageSource } from '@nativescript/core';
2
+ export interface ImageEffectSettings {
3
+ mode: number;
4
+ x: number;
5
+ y: number;
6
+ amplitude: number;
7
+ radius: number;
8
+ duration: number;
9
+ seed: number;
10
+ to?: ImageSource;
11
+ }
12
+ export interface ImageRenderer {
13
+ readonly backend: 'metal' | 'agsl';
14
+ readonly progress: number;
15
+ readonly frames: number;
16
+ readonly textureBytes: number;
17
+ readonly longestFrameMs: number;
18
+ play(endpoint: number): void;
19
+ pause(): void;
20
+ resume(): void;
21
+ seek(progress: number): void;
22
+ finish(endpoint: number): void;
23
+ stop(preserveImage?: boolean): void;
24
+ }
25
+ export declare function createImageRenderer(image: Image, settings: ImageEffectSettings, ended: (completed: boolean, progress: number) => void): ImageRenderer | undefined;
26
+ //# sourceMappingURL=image-effect-native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-effect-native.d.ts","sourceRoot":"","sources":["../src/image-effect-native.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,KAAK,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE1F,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAA;IACZ,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAAA;IAClC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,KAAK,IAAI,IAAI,CAAA;IACb,MAAM,IAAI,IAAI,CAAA;IACd,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,IAAI,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;CACpC;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,mBAAmB,EAC7B,KAAK,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,GACpD,aAAa,GAAG,SAAS,CAiG3B"}