@rafaelaugusto/jolt 0.1.0-beta.2 → 0.1.0-beta.4

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 (105) hide show
  1. package/README.md +112 -16
  2. package/dist/animate.d.ts +3 -1
  3. package/dist/animate.d.ts.map +1 -1
  4. package/dist/animate.js +89 -3
  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/decay.d.ts +11 -0
  11. package/dist/decay.d.ts.map +1 -0
  12. package/dist/decay.js +22 -0
  13. package/dist/decay.js.map +1 -0
  14. package/dist/driver/android-color.d.ts +17 -0
  15. package/dist/driver/android-color.d.ts.map +1 -0
  16. package/dist/driver/android-color.js +134 -0
  17. package/dist/driver/android-color.js.map +1 -0
  18. package/dist/driver/android.d.ts +1 -1
  19. package/dist/driver/android.d.ts.map +1 -1
  20. package/dist/driver/android.js +101 -5
  21. package/dist/driver/android.js.map +1 -1
  22. package/dist/driver/index.d.ts +4 -2
  23. package/dist/driver/index.d.ts.map +1 -1
  24. package/dist/driver/index.js.map +1 -1
  25. package/dist/driver/ios-color.d.ts +14 -0
  26. package/dist/driver/ios-color.d.ts.map +1 -0
  27. package/dist/driver/ios-color.js +381 -0
  28. package/dist/driver/ios-color.js.map +1 -0
  29. package/dist/driver/ios.d.ts.map +1 -1
  30. package/dist/driver/ios.js +9 -1
  31. package/dist/driver/ios.js.map +1 -1
  32. package/dist/engine.d.ts +1 -1
  33. package/dist/engine.d.ts.map +1 -1
  34. package/dist/engine.js +15 -8
  35. package/dist/engine.js.map +1 -1
  36. package/dist/index.d.ts +10 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +5 -1
  39. package/dist/index.js.map +1 -1
  40. package/dist/liquid-grid.d.ts +3 -0
  41. package/dist/liquid-grid.d.ts.map +1 -0
  42. package/dist/liquid-grid.js +24 -0
  43. package/dist/liquid-grid.js.map +1 -0
  44. package/dist/liquid.d.ts +18 -0
  45. package/dist/liquid.d.ts.map +1 -0
  46. package/dist/liquid.js +229 -0
  47. package/dist/liquid.js.map +1 -0
  48. package/dist/loader.d.ts +19 -0
  49. package/dist/loader.d.ts.map +1 -0
  50. package/dist/loader.js +172 -0
  51. package/dist/loader.js.map +1 -0
  52. package/dist/press.d.ts.map +1 -1
  53. package/dist/press.js +6 -1
  54. package/dist/press.js.map +1 -1
  55. package/dist/properties.d.ts +5 -3
  56. package/dist/properties.d.ts.map +1 -1
  57. package/dist/properties.js +13 -2
  58. package/dist/properties.js.map +1 -1
  59. package/dist/reveal.d.ts +25 -0
  60. package/dist/reveal.d.ts.map +1 -0
  61. package/dist/reveal.js +293 -0
  62. package/dist/reveal.js.map +1 -0
  63. package/dist/text-layout.d.ts +22 -0
  64. package/dist/text-layout.d.ts.map +1 -0
  65. package/dist/text-layout.js +179 -0
  66. package/dist/text-layout.js.map +1 -0
  67. package/dist/text.d.ts +17 -0
  68. package/dist/text.d.ts.map +1 -0
  69. package/dist/text.js +267 -0
  70. package/dist/text.js.map +1 -0
  71. package/dist/track.d.ts +1 -1
  72. package/dist/track.d.ts.map +1 -1
  73. package/dist/track.js +63 -5
  74. package/dist/track.js.map +1 -1
  75. package/dist/transition.d.ts +5 -0
  76. package/dist/transition.d.ts.map +1 -1
  77. package/dist/transition.js +8 -2
  78. package/dist/transition.js.map +1 -1
  79. package/dist/types.d.ts +19 -0
  80. package/dist/types.d.ts.map +1 -1
  81. package/package.json +11 -2
  82. package/platforms/android/include.gradle +7 -0
  83. package/platforms/android/java/org/rafaelaugusto/jolt/ColorTarget.java +102 -0
  84. package/platforms/android/proguard-rules.pro +6 -0
  85. package/src/animate.ts +105 -5
  86. package/src/color.ts +101 -0
  87. package/src/decay.ts +45 -0
  88. package/src/driver/android-color.ts +168 -0
  89. package/src/driver/android.ts +120 -10
  90. package/src/driver/index.ts +9 -2
  91. package/src/driver/ios-color.ts +432 -0
  92. package/src/driver/ios.ts +13 -3
  93. package/src/engine.ts +17 -9
  94. package/src/index.ts +10 -1
  95. package/src/liquid-grid.ts +28 -0
  96. package/src/liquid.ts +282 -0
  97. package/src/loader.ts +201 -0
  98. package/src/press.ts +8 -2
  99. package/src/properties.ts +16 -6
  100. package/src/reveal.ts +374 -0
  101. package/src/text-layout.ts +216 -0
  102. package/src/text.ts +298 -0
  103. package/src/track.ts +105 -5
  104. package/src/transition.ts +16 -2
  105. package/src/types.ts +18 -0
@@ -0,0 +1,134 @@
1
+ import {} from '@nativescript/core';
2
+ import { readColor } from '../color.js';
3
+ const playing = new WeakMap();
4
+ export function presentedAndroidColor(view, property) {
5
+ const active = playing.get(view)?.get(property);
6
+ if (active)
7
+ return active.target.getColor() >>> 0;
8
+ if (property === 'color' && view.nativeViewProtected instanceof android.widget.TextView)
9
+ return view.nativeViewProtected.getCurrentTextColor() >>> 0;
10
+ return readColor(view, property);
11
+ }
12
+ export function playAndroidColor(view, track, onEnd) {
13
+ const property = track.property;
14
+ const changes = property === 'borderColor'
15
+ ? [
16
+ 'borderTopColorChange',
17
+ 'borderRightColorChange',
18
+ 'borderBottomColorChange',
19
+ 'borderLeftColorChange',
20
+ ]
21
+ : [`${property}Change`];
22
+ const bridge = globalThis;
23
+ let target;
24
+ try {
25
+ target = new bridge.org.rafaelaugusto.jolt.ColorTarget(view.nativeViewProtected, property === 'backgroundColor' ? 0 : property === 'borderColor' ? 1 : 2, track.values[0] | 0);
26
+ }
27
+ catch {
28
+ // A JS-only update cannot install the native plugin. Keep the final model.
29
+ onEnd(false);
30
+ return {
31
+ cancel() { },
32
+ elapsed: () => 0,
33
+ target: {
34
+ getColor: () => readColor(view, property),
35
+ setColor() { },
36
+ isSupported: () => false,
37
+ },
38
+ };
39
+ }
40
+ const frames = Array.create(android.animation.Keyframe, track.values.length);
41
+ track.values.forEach((value, index) => {
42
+ frames[index] = android.animation.Keyframe.ofInt(track.times[index], value | 0);
43
+ });
44
+ const holder = android.animation.PropertyValuesHolder.ofKeyframe('color', frames);
45
+ holder.setEvaluator(new android.animation.ArgbEvaluator());
46
+ const holders = Array.create(android.animation.PropertyValuesHolder, 1);
47
+ holders[0] = holder;
48
+ const animator = android.animation.ObjectAnimator.ofPropertyValuesHolder(target, holders);
49
+ animator.setDuration(Math.max(track.duration, 1));
50
+ animator.setStartDelay(track.delay);
51
+ animator.setInterpolator(new android.view.animation.LinearInterpolator());
52
+ if (track.repeat > 0) {
53
+ animator.setRepeatCount(Number.isFinite(track.repeat)
54
+ ? track.repeat
55
+ : android.animation.ValueAnimator.INFINITE);
56
+ animator.setRepeatMode(track.reverse
57
+ ? android.animation.ValueAnimator.REVERSE
58
+ : android.animation.ValueAnimator.RESTART);
59
+ }
60
+ let stopped = false, started = false, queued = false;
61
+ const cleanup = () => {
62
+ if (stopped)
63
+ return;
64
+ stopped = true;
65
+ view.off('unloaded', cancel);
66
+ if (property === 'color') {
67
+ view.off('textChange', invalidate);
68
+ view.off('formattedTextChange', invalidate);
69
+ }
70
+ for (const name of changes)
71
+ view.style.off(name, invalidate);
72
+ if (playing.get(view)?.get(property) === handle)
73
+ playing.get(view)?.delete(property);
74
+ };
75
+ const cancel = () => {
76
+ if (stopped)
77
+ return;
78
+ cleanup();
79
+ animator.cancel();
80
+ onEnd(false);
81
+ };
82
+ const invalidate = () => {
83
+ if (stopped || queued)
84
+ return;
85
+ queued = true;
86
+ void Promise.resolve().then(() => {
87
+ queued = false;
88
+ if (!stopped)
89
+ cancel();
90
+ });
91
+ };
92
+ const handle = {
93
+ target,
94
+ elapsed: () => (started ? track.delay + animator.getCurrentPlayTime() : 0),
95
+ cancel() {
96
+ cleanup();
97
+ animator.cancel();
98
+ },
99
+ };
100
+ let entries = playing.get(view);
101
+ if (!entries)
102
+ playing.set(view, (entries = new Map()));
103
+ entries.set(property, handle);
104
+ animator.addListener(new android.animation.Animator.AnimatorListener({
105
+ onAnimationStart() {
106
+ started = true;
107
+ },
108
+ onAnimationRepeat() { },
109
+ onAnimationCancel() { },
110
+ onAnimationEnd() {
111
+ if (!stopped) {
112
+ cleanup();
113
+ onEnd();
114
+ }
115
+ },
116
+ }));
117
+ view.on('unloaded', cancel);
118
+ if (property === 'color') {
119
+ view.on('textChange', invalidate);
120
+ view.on('formattedTextChange', invalidate);
121
+ }
122
+ for (const name of changes)
123
+ view.style.on(name, invalidate);
124
+ if (target.isSupported()) {
125
+ target.setColor(track.values[0] | 0);
126
+ animator.start();
127
+ }
128
+ else {
129
+ cleanup();
130
+ onEnd(false);
131
+ }
132
+ return handle;
133
+ }
134
+ //# sourceMappingURL=android-color.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"android-color.js","sourceRoot":"","sources":["../../src/driver/android-color.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- import { type Driver } from './index.js';
1
+ import type { Driver } from './index.js';
2
2
  export declare function createAndroidDriver(): Driver;
3
3
  //# sourceMappingURL=android.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../src/driver/android.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,KAAK,MAAM,EAAE,MAAM,YAAY,CAAA;AAqB/C,wBAAgB,mBAAmB,IAAI,MAAM,CA6E5C"}
1
+ {"version":3,"file":"android.d.ts","sourceRoot":"","sources":["../../src/driver/android.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AA8DxC,wBAAgB,mBAAmB,IAAI,MAAM,CAkJ5C"}
@@ -1,5 +1,36 @@
1
1
  import { Utils } from '@nativescript/core';
2
- import { after } from './index.js';
2
+ import { isColorProperty } from '../color.js';
3
+ import { playAndroidColor, presentedAndroidColor } from './android-color.js';
4
+ /** Own only layers we create; keep app-configured hardware/software layers and paints intact. */
5
+ function fadeLayer(view, nativeView) {
6
+ const { View, ViewGroup } = android.view;
7
+ if (!view.isLoaded ||
8
+ view.nativeViewProtected !== nativeView ||
9
+ !(nativeView instanceof ViewGroup) ||
10
+ nativeView.getChildCount() === 0 ||
11
+ !nativeView.isHardwareAccelerated() ||
12
+ nativeView.getLayerType() !== View.LAYER_TYPE_NONE)
13
+ return undefined;
14
+ // Do not cache an entire oversized scrolling/content tree into a GPU texture.
15
+ const { widthPixels, heightPixels } = nativeView.getResources().getDisplayMetrics();
16
+ const width = nativeView.getWidth();
17
+ const height = nativeView.getHeight();
18
+ if (width <= 0 || height <= 0 || width > widthPixels || height > heightPixels)
19
+ return undefined;
20
+ nativeView.setLayerType(View.LAYER_TYPE_HARDWARE, null);
21
+ let active = true;
22
+ const restore = () => {
23
+ if (!active)
24
+ return;
25
+ active = false;
26
+ view.off('unloaded', restore);
27
+ if (nativeView.getLayerType() === View.LAYER_TYPE_HARDWARE) {
28
+ nativeView.setLayerType(View.LAYER_TYPE_NONE, null);
29
+ }
30
+ };
31
+ view.on('unloaded', restore);
32
+ return restore;
33
+ }
3
34
  const accessors = {
4
35
  opacity: { get: (v) => v.getAlpha(), set: (v, value) => v.setAlpha(value) },
5
36
  x: { get: (v) => v.getTranslationX(), set: (v, value) => v.setTranslationX(value) },
@@ -27,8 +58,13 @@ export function createAndroidDriver() {
27
58
  return {
28
59
  now: () => android.os.SystemClock.uptimeMillis(),
29
60
  play(view, track, _startedAt, onEnd) {
61
+ if (isColorProperty(track.property))
62
+ return playAndroidColor(view, track, onEnd);
30
63
  const nativeView = view.nativeViewProtected;
31
64
  const scale = unit(track.property);
65
+ if (track.property === 'rotateX' || track.property === 'rotateY') {
66
+ nativeView.setCameraDistance((view.perspective || 300) * Utils.layout.getDisplayDensity());
67
+ }
32
68
  const keyframes = Array.create(android.animation.Keyframe, track.values.length);
33
69
  track.values.forEach((value, i) => {
34
70
  keyframes[i] = android.animation.Keyframe.ofFloat(track.times[i], value * scale);
@@ -36,6 +72,14 @@ export function createAndroidDriver() {
36
72
  const holders = Array.create(android.animation.PropertyValuesHolder, 1);
37
73
  holders[0] = android.animation.PropertyValuesHolder.ofKeyframe(nativeProperties[track.property], keyframes);
38
74
  const animator = android.animation.ObjectAnimator.ofPropertyValuesHolder(nativeView, holders);
75
+ let cancelled = false;
76
+ let ended = false;
77
+ let started = false;
78
+ let restoreLayer;
79
+ const releaseLayer = () => {
80
+ restoreLayer?.();
81
+ restoreLayer = undefined;
82
+ };
39
83
  animator.setDuration(Math.max(track.duration, 1));
40
84
  animator.setStartDelay(track.delay);
41
85
  animator.setInterpolator(interpolator);
@@ -48,26 +92,78 @@ export function createAndroidDriver() {
48
92
  : android.animation.ValueAnimator.RESTART);
49
93
  }
50
94
  animator.addListener(new android.animation.Animator.AnimatorListener({
51
- onAnimationStart() { },
95
+ onAnimationStart() {
96
+ started = true;
97
+ if (!cancelled &&
98
+ !ended &&
99
+ track.property === 'opacity' &&
100
+ track.values.some((value) => value !== track.values[0]))
101
+ restoreLayer = fadeLayer(view, nativeView);
102
+ },
52
103
  onAnimationRepeat() { },
53
- onAnimationCancel() { },
104
+ onAnimationCancel() {
105
+ cancelled = true;
106
+ releaseLayer();
107
+ },
54
108
  onAnimationEnd() {
109
+ if (ended)
110
+ return;
111
+ ended = true;
112
+ releaseLayer();
55
113
  onEnd();
56
114
  },
57
115
  }));
58
116
  accessors[track.property].set(nativeView, track.values[0] * scale);
59
117
  animator.start();
60
- return animator;
118
+ return {
119
+ elapsed: () => (started ? track.delay + animator.getCurrentPlayTime() : 0),
120
+ cancel() {
121
+ // Cancel before native callbacks: Android can send onStart while cancelling a delay.
122
+ cancelled = true;
123
+ releaseLayer();
124
+ animator.cancel();
125
+ },
126
+ };
61
127
  },
62
128
  stop(_view, handle) {
63
129
  ;
64
130
  handle.cancel();
65
131
  },
132
+ elapsed: (handle) => handle.elapsed(),
66
133
  presented(view, property) {
134
+ if (isColorProperty(property))
135
+ return presentedAndroidColor(view, property);
67
136
  const nativeView = view.nativeViewProtected;
68
137
  return nativeView ? accessors[property].get(nativeView) / unit(property) : undefined;
69
138
  },
70
- after,
139
+ after(ms, callback) {
140
+ // A native marker follows animator duration scale, including changes during playback.
141
+ // Only completion crosses the bridge; there is no JavaScript update listener.
142
+ const values = Array.create('float', 2);
143
+ values[0] = 0;
144
+ values[1] = 1;
145
+ const marker = android.animation.ValueAnimator.ofFloat(values);
146
+ marker.setDuration(ms);
147
+ let active = true;
148
+ marker.addListener(new android.animation.Animator.AnimatorListener({
149
+ onAnimationStart() { },
150
+ onAnimationRepeat() { },
151
+ onAnimationCancel() {
152
+ active = false;
153
+ },
154
+ onAnimationEnd() {
155
+ if (!active)
156
+ return;
157
+ active = false;
158
+ callback();
159
+ },
160
+ }));
161
+ marker.start();
162
+ return () => {
163
+ active = false;
164
+ marker.cancel();
165
+ };
166
+ },
71
167
  };
72
168
  }
73
169
  //# sourceMappingURL=android.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"android.js","sourceRoot":"","sources":["../../src/driver/android.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"android.js","sourceRoot":"","sources":["../../src/driver/android.ts"],"names":[],"mappings":"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"}
@@ -5,11 +5,13 @@ export interface Driver {
5
5
  /** Milliseconds, on the clock the platform's animations run on. */
6
6
  now(): number;
7
7
  /** Starts the track at `startedAt + track.delay` and calls `onEnd` once, however it ends. */
8
- play(view: View, track: Track, startedAt: number, onEnd: () => void): unknown;
8
+ play(view: View, track: Track, startedAt: number, onEnd: (finished?: boolean) => void): unknown;
9
9
  stop(view: View, handle: unknown): void;
10
+ /** Track time, including its delay, when the native clock differs from `now()`. */
11
+ elapsed?(handle: unknown): number;
10
12
  /** The value on screen, when the platform knows it better than the track does. */
11
13
  presented(view: View, property: Property): number | undefined;
12
- /** Calls back after `ms` on the same clock, and returns a function that cancels it. */
14
+ /** Calls back after `ms` of animation time, respecting platform speed settings. */
13
15
  after(ms: number, callback: () => void): () => void;
14
16
  }
15
17
  export declare function after(ms: number, callback: () => void): () => void;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,GAAG,IAAI,MAAM,CAAA;IACb,6FAA6F;IAC7F,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAA;IAC7E,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACvC,kFAAkF;IAClF,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;IAC7D,uFAAuF;IACvF,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CACpD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,cAGrD;AAID,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,QAEjD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAIxC,MAAM,WAAW,MAAM;IACrB,mEAAmE;IACnE,GAAG,IAAI,MAAM,CAAA;IACb,6FAA6F;IAC7F,IAAI,CACF,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,GAClC,OAAO,CAAA;IACV,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACvC,mFAAmF;IACnF,OAAO,CAAC,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAA;IACjC,kFAAkF;IAClF,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;IAC7D,mFAAmF;IACnF,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAA;CACpD;AAED,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,cAGrD;AAID,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,QAEjD"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,oBAAoB,CAAA;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAc1C,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,QAAoB;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACtC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,IAAI,MAA0B,CAAA;AAE9B,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAwB;IAChD,MAAM,GAAG,IAAI,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/driver/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAa,MAAM,oBAAoB,CAAA;AAGzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAqB1C,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,QAAoB;IACpD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;IACtC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAA;AAClC,CAAC;AAED,IAAI,MAA0B,CAAA;AAE9B,MAAM,UAAU,SAAS;IACvB,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAA;AAC3E,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,IAAwB;IAChD,MAAM,GAAG,IAAI,CAAA;AACf,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { type View } from '@nativescript/core';
2
+ import { type ColorProperty } from '../color.js';
3
+ import type { Track } from '../track.js';
4
+ interface ColorHandle {
5
+ stop(): void;
6
+ presented(): number | undefined;
7
+ }
8
+ export declare function presentedIOSColor(view: View, property: ColorProperty): number | undefined;
9
+ /** Glyph entrances and color masks cannot own the same UILabel paint at once. */
10
+ export declare function stopIOSColorText(view: View): void;
11
+ /** Core Animation paints a solid layer through an exact UILabel alpha mask. */
12
+ export declare function playIOSColor(view: View, track: Track, startedAt: number, onEnd: (finished?: boolean) => void): ColorHandle;
13
+ export {};
14
+ //# sourceMappingURL=ios-color.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ios-color.d.ts","sourceRoot":"","sources":["../../src/driver/ios-color.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAGrD,OAAO,EAAa,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAexC,UAAU,WAAW;IACnB,IAAI,IAAI,IAAI,CAAA;IACZ,SAAS,IAAI,MAAM,GAAG,SAAS,CAAA;CAChC;AAWD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,aAAa,GACtB,MAAM,GAAG,SAAS,CAQpB;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,QAE1C;AAED,+EAA+E;AAC/E,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,OAAO,KAAK,IAAI,GAClC,WAAW,CAqOb"}