@triniwiz/nativescript-masonkit 1.0.0-beta.111 → 1.0.0-beta.112

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 (93) hide show
  1. package/common.d.ts +12 -0
  2. package/common.js +72 -1
  3. package/common.js.map +1 -1
  4. package/css-colors.d.ts +17 -0
  5. package/css-colors.js +55 -0
  6. package/css-colors.js.map +1 -0
  7. package/css-keyframes.d.ts +41 -0
  8. package/css-keyframes.js +438 -0
  9. package/css-keyframes.js.map +1 -0
  10. package/css-shorthands.d.ts +13 -0
  11. package/css-shorthands.js +199 -0
  12. package/css-shorthands.js.map +1 -1
  13. package/index.d.ts +45 -0
  14. package/input/common.d.ts +18 -1
  15. package/input/common.js +46 -2
  16. package/input/common.js.map +1 -1
  17. package/input/index.android.d.ts +4 -1
  18. package/input/index.android.js +21 -1
  19. package/input/index.android.js.map +1 -1
  20. package/input/index.ios.d.ts +4 -1
  21. package/input/index.ios.js +19 -1
  22. package/input/index.ios.js.map +1 -1
  23. package/input/index.windows.d.ts +7 -1
  24. package/input/index.windows.js +43 -1
  25. package/input/index.windows.js.map +1 -1
  26. package/package.json +1 -1
  27. package/platforms/android/masonkit-release.aar +0 -0
  28. package/platforms/ios/Mason.xcframework/Info.plist +7 -7
  29. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Headers/Mason-Swift.h +60 -1
  30. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Mason +0 -0
  31. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  32. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.abi.json +27634 -24898
  33. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.private.swiftinterface +325 -221
  34. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  35. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftinterface +325 -221
  36. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  37. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +9308 -8879
  38. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Headers/Mason-Swift.h +120 -2
  39. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Mason +0 -0
  40. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  41. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  42. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.abi.json +27634 -24898
  43. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +325 -221
  44. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  45. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftinterface +325 -221
  46. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.abi.json +27634 -24898
  47. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +325 -221
  48. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  49. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +325 -221
  50. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/_CodeSignature/CodeResources +26 -26
  51. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  52. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +9302 -8873
  53. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/x86_64/Mason.yml +8878 -8474
  54. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Headers/Mason-Swift.h +60 -1
  55. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Mason +0 -0
  56. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-xros.swiftsourceinfo +0 -0
  57. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.abi.json +27634 -24898
  58. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.private.swiftinterface +325 -221
  59. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.swiftdoc +0 -0
  60. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.swiftinterface +325 -221
  61. package/platforms/ios/Mason.xcframework/xros-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  62. package/platforms/ios/Mason.xcframework/xros-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8799 -8371
  63. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Headers/Mason-Swift.h +60 -1
  64. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Mason +0 -0
  65. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo +0 -0
  66. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.abi.json +27634 -24898
  67. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.private.swiftinterface +325 -221
  68. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.swiftdoc +0 -0
  69. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.swiftinterface +325 -221
  70. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/_CodeSignature/CodeResources +14 -14
  71. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  72. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8798 -8370
  73. package/platforms/windows/arm64/NativeScript.Mason.dll +0 -0
  74. package/platforms/windows/arm64/NativeScript.Mason.winmd +0 -0
  75. package/platforms/windows/x64/NativeScript.Mason.dll +0 -0
  76. package/platforms/windows/x64/NativeScript.Mason.winmd +0 -0
  77. package/properties.d.ts +17 -0
  78. package/properties.js +294 -3
  79. package/properties.js.map +1 -1
  80. package/scroll/index.ios.d.ts +1 -1
  81. package/scroll/index.ios.js +7 -2
  82. package/scroll/index.ios.js.map +1 -1
  83. package/style.d.ts +75 -4
  84. package/style.js +413 -8
  85. package/style.js.map +1 -1
  86. package/typings/android.d.ts +43 -0
  87. package/typings/objc!Mason.d.ts +41 -0
  88. package/typings/windows.d.ts +6 -0
  89. package/view/index.ios.js +7 -2
  90. package/view/index.ios.js.map +1 -1
  91. package/windows-mask.d.ts +70 -0
  92. package/windows-mask.js +492 -0
  93. package/windows-mask.js.map +1 -0
@@ -0,0 +1,41 @@
1
+ import type { CssAnimationProperty, Style, View } from '@nativescript/core';
2
+ /**
3
+ * CSS keyframes for properties MasonKit draws itself.
4
+ *
5
+ * Core plays each keyframe interval with its native Animation, which only knows opacity,
6
+ * background-color, transforms, width and height. MasonKit's animatable properties are taken
7
+ * out of core's keyframes and interpolated every frame on the same timeline instead: delay,
8
+ * duration, iterations, each interval's timing function and `animation-fill-mode`.
9
+ */
10
+ type Interpolate = (from: string, to: string, t: number) => string;
11
+ interface Track {
12
+ property: CssAnimationProperty<Style, string>;
13
+ interpolate: Interpolate;
14
+ /** [time in ms from the start of an iteration, value]; time-ordered. */
15
+ stops: [number, string][];
16
+ }
17
+ /** Lets keyframes animate [property] with [interpolate]; [initial] is its CSS initial value. */
18
+ export declare function registerKeyframeProperty(property: CssAnimationProperty<Style, string>, interpolate: Interpolate, initial: string): void;
19
+ /** Interpolates `<position>` lists (`mask-position`, `background-position`). */
20
+ export declare const interpolatePositionList: Interpolate;
21
+ /** Interpolates `<bg-size>` lists (`mask-size`, `background-size`). */
22
+ export declare const interpolateSizeList: Interpolate;
23
+ /** Core's keyframe curve as an easing function; `linear`, `spring` and unknown curves are linear. */
24
+ export declare function easing(curve: any): (t: number) => number;
25
+ /**
26
+ * The value of [track] at [time] ms into an iteration of [total] ms. [curveAt] gives the timing
27
+ * function of the interval starting at a time. A missing first or last keyframe uses [base], the
28
+ * element's own value, as CSS does.
29
+ */
30
+ export declare function sampleTrack(track: Pick<Track, 'interpolate' | 'stops'>, base: string, total: number, time: number, curveAt: (start: number) => (t: number) => number): string;
31
+ /**
32
+ * Windows: View.animate()'s scale, rotate and translate, played per frame on the View properties
33
+ * (core's storyboards target a transform that doesn't show on a Mason view).
34
+ */
35
+ export declare function animateTransforms(view: View, options: any): {
36
+ done: Promise<void>;
37
+ cancel: () => void;
38
+ };
39
+ /** Installs the keyframe hooks once. */
40
+ export declare function installKeyframes(): void;
41
+ export {};
@@ -0,0 +1,438 @@
1
+ import { CoreTypes, unsetValue } from '@nativescript/core';
2
+ import { KeyframeAnimation } from '@nativescript/core/ui/animation/keyframe-animation';
3
+ import { tokenizeCss } from './css-shorthands';
4
+ import { rotateProperty, scaleXProperty, scaleYProperty, translateXProperty, translateYProperty } from '@nativescript/core/ui/styling/style-properties';
5
+ const animatable = new Map();
6
+ /** Lets keyframes animate [property] with [interpolate]; [initial] is its CSS initial value. */
7
+ export function registerKeyframeProperty(property, interpolate, initial) {
8
+ animatable.set(property.name, { property, interpolate, initial });
9
+ }
10
+ // What core's native Animation plays. A keyframe interval with none of these is skipped by core
11
+ // at once, so its time would be lost.
12
+ const CORE_ANIMATED = ['backgroundColor', 'scale', 'translate', 'rotate', 'opacity', 'width', 'height'];
13
+ const NUMERIC = /^([+-]?(?:\d+\.?\d*|\.\d+)(?:e[+-]?\d+)?)([a-z]+|%)?$/i;
14
+ function component(token) {
15
+ const match = NUMERIC.exec(token);
16
+ return match ? { number: parseFloat(match[1]), unit: match[2] ?? '' } : { keyword: token };
17
+ }
18
+ function format(c) {
19
+ if (c.keyword !== undefined) {
20
+ return c.keyword;
21
+ }
22
+ return `${Math.round(c.number * 10000) / 10000}${c.unit}`;
23
+ }
24
+ function mix(a, b, t) {
25
+ if (a.number === undefined || b.number === undefined) {
26
+ return a.keyword === b.keyword ? a : null;
27
+ }
28
+ // A unitless 0 takes the other side's unit, as `0` does in CSS lengths.
29
+ const unit = a.unit || (a.number === 0 ? b.unit : a.unit);
30
+ const otherUnit = b.unit || (b.number === 0 ? unit : b.unit);
31
+ if (unit !== otherUnit) {
32
+ return null;
33
+ }
34
+ return { number: a.number + (b.number - a.number) * t, unit };
35
+ }
36
+ /** Layers of a list-valued property, each split into whitespace tokens. */
37
+ function layers(value) {
38
+ const result = [[]];
39
+ for (const token of tokenizeCss(value)) {
40
+ if (token === ',') {
41
+ result.push([]);
42
+ }
43
+ else {
44
+ result[result.length - 1].push(token);
45
+ }
46
+ }
47
+ return result;
48
+ }
49
+ const POSITION_KEYWORD = { left: 0, top: 0, center: 50, right: 100, bottom: 100 };
50
+ const VERTICAL = new Set(['top', 'bottom']);
51
+ const HORIZONTAL = new Set(['left', 'right']);
52
+ /** One `<position>` as [x, y], or null for the 3- and 4-value edge-offset forms. */
53
+ function position(tokens) {
54
+ const read = (token) => (token in POSITION_KEYWORD ? { number: POSITION_KEYWORD[token], unit: '%' } : component(token));
55
+ if (tokens.length === 1) {
56
+ return VERTICAL.has(tokens[0]) ? [read('center'), read(tokens[0])] : [read(tokens[0]), read('center')];
57
+ }
58
+ if (tokens.length === 2) {
59
+ const [a, b] = tokens;
60
+ return VERTICAL.has(a) || HORIZONTAL.has(b) ? [read(b), read(a)] : [read(a), read(b)];
61
+ }
62
+ return null;
63
+ }
64
+ /** One `<bg-size>` as [width, height]; `cover` and `contain` stay single keywords. */
65
+ function size(tokens) {
66
+ if (tokens.length === 1) {
67
+ return tokens[0] === 'cover' || tokens[0] === 'contain' ? [{ keyword: tokens[0] }] : [component(tokens[0]), { keyword: 'auto' }];
68
+ }
69
+ return tokens.length === 2 ? tokens.map(component) : null;
70
+ }
71
+ function listInterpolator(parse) {
72
+ return (from, to, t) => {
73
+ const a = layers(from).map(parse);
74
+ const b = layers(to).map(parse);
75
+ // Values that can't be mixed flip halfway, as CSS does for discrete animation.
76
+ const discrete = () => (t < 0.5 ? from : to);
77
+ if (a.length !== b.length) {
78
+ return discrete();
79
+ }
80
+ const out = [];
81
+ for (let i = 0; i < a.length; i++) {
82
+ const x = a[i];
83
+ const y = b[i];
84
+ if (!x || !y || x.length !== y.length) {
85
+ return discrete();
86
+ }
87
+ const mixed = x.map((c, j) => mix(c, y[j], t));
88
+ if (mixed.some((c) => c === null)) {
89
+ return discrete();
90
+ }
91
+ out.push(mixed.map(format).join(' '));
92
+ }
93
+ return out.join(', ');
94
+ };
95
+ }
96
+ /** Interpolates `<position>` lists (`mask-position`, `background-position`). */
97
+ export const interpolatePositionList = listInterpolator(position);
98
+ /** Interpolates `<bg-size>` lists (`mask-size`, `background-size`). */
99
+ export const interpolateSizeList = listInterpolator(size);
100
+ // ---------------------------------------------------------------------------------------------
101
+ // Timing
102
+ function cubicBezier(x1, y1, x2, y2) {
103
+ const sample = (a1, a2, s) => ((1 - 3 * a2 + 3 * a1) * s + (3 * a2 - 6 * a1)) * s * s + 3 * a1 * s;
104
+ const slope = (a1, a2, s) => 3 * (1 - 3 * a2 + 3 * a1) * s * s + 2 * (3 * a2 - 6 * a1) * s + 3 * a1;
105
+ return (t) => {
106
+ if (t <= 0 || t >= 1) {
107
+ return t;
108
+ }
109
+ // Newton's method for the curve parameter at x = t, then bisection if it stalls.
110
+ let s = t;
111
+ for (let i = 0; i < 8; i++) {
112
+ const error = sample(x1, x2, s) - t;
113
+ if (Math.abs(error) < 1e-6) {
114
+ return sample(y1, y2, s);
115
+ }
116
+ const d = slope(x1, x2, s);
117
+ if (Math.abs(d) < 1e-6) {
118
+ break;
119
+ }
120
+ s -= error / d;
121
+ }
122
+ let lo = 0;
123
+ let hi = 1;
124
+ s = t;
125
+ for (let i = 0; i < 30; i++) {
126
+ const x = sample(x1, x2, s);
127
+ if (Math.abs(x - t) < 1e-6) {
128
+ break;
129
+ }
130
+ if (x < t) {
131
+ lo = s;
132
+ }
133
+ else {
134
+ hi = s;
135
+ }
136
+ s = (lo + hi) / 2;
137
+ }
138
+ return sample(y1, y2, s);
139
+ };
140
+ }
141
+ const NAMED_CURVES = {
142
+ [CoreTypes.AnimationCurve.ease]: [0.25, 0.1, 0.25, 1],
143
+ [CoreTypes.AnimationCurve.easeIn]: [0.42, 0, 1, 1],
144
+ [CoreTypes.AnimationCurve.easeOut]: [0, 0, 0.58, 1],
145
+ [CoreTypes.AnimationCurve.easeInOut]: [0.42, 0, 0.58, 1],
146
+ };
147
+ /** Core's keyframe curve as an easing function; `linear`, `spring` and unknown curves are linear. */
148
+ export function easing(curve) {
149
+ if (curve && typeof curve === 'object' && typeof curve.x1 === 'number') {
150
+ return cubicBezier(curve.x1, curve.y1, curve.x2, curve.y2);
151
+ }
152
+ const named = NAMED_CURVES[curve];
153
+ return named ? cubicBezier(...named) : (t) => t;
154
+ }
155
+ /**
156
+ * The value of [track] at [time] ms into an iteration of [total] ms. [curveAt] gives the timing
157
+ * function of the interval starting at a time. A missing first or last keyframe uses [base], the
158
+ * element's own value, as CSS does.
159
+ */
160
+ export function sampleTrack(track, base, total, time, curveAt) {
161
+ const stops = track.stops;
162
+ const points = [];
163
+ if (stops[0][0] > 0) {
164
+ points.push([0, base]);
165
+ }
166
+ points.push(...stops);
167
+ if (stops[stops.length - 1][0] < total) {
168
+ points.push([total, base]);
169
+ }
170
+ if (time <= points[0][0]) {
171
+ return points[0][1];
172
+ }
173
+ for (let i = 1; i < points.length; i++) {
174
+ const [end, to] = points[i];
175
+ if (time <= end) {
176
+ const [start, from] = points[i - 1];
177
+ const span = end - start;
178
+ const t = span > 0 ? curveAt(start)((time - start) / span) : 1;
179
+ return track.interpolate(from, to, t);
180
+ }
181
+ }
182
+ return points[points.length - 1][1];
183
+ }
184
+ // ---------------------------------------------------------------------------------------------
185
+ // Playing alongside core
186
+ const driver_ = Symbol('mason:keyframeDriver');
187
+ const tracks_ = Symbol('mason:keyframeTracks');
188
+ const nextFrame = typeof requestAnimationFrame === 'function' ? (callback) => requestAnimationFrame(callback) : (callback) => setTimeout(callback, 16);
189
+ class KeyframeDriver {
190
+ constructor(view, tracks, total, delay, iterations, forwards, segments) {
191
+ this.view = view;
192
+ this.tracks = tracks;
193
+ this.total = total;
194
+ this.delay = delay;
195
+ this.iterations = iterations;
196
+ this.forwards = forwards;
197
+ this.stopped = false;
198
+ this.startTime = 0;
199
+ this.intervalEnds = [];
200
+ this.curves = [];
201
+ /** The curve of the interval starting at [start]: the first one ending after it. */
202
+ this.curveAt = (start) => {
203
+ // Skips the 0.01 ms interval core gives a 0% keyframe.
204
+ const index = this.intervalEnds.findIndex((end) => end > start + 1);
205
+ return this.curves[index === -1 ? this.curves.length - 1 : index];
206
+ };
207
+ const style = view.style;
208
+ this.bases = tracks.map((track) => {
209
+ const value = style[track.property.name];
210
+ return typeof value === 'string' && value.trim() ? value : animatable.get(track.property.name).initial;
211
+ });
212
+ // Core has already moved each keyframe's timing function onto the interval that keyframe
213
+ // starts, so an interval's own curve is the one to use.
214
+ let time = 0;
215
+ for (const segment of segments) {
216
+ time += segment.duration;
217
+ this.intervalEnds.push(time);
218
+ this.curves.push(easing(segment.curve));
219
+ }
220
+ }
221
+ start(onFinish) {
222
+ this.startTime = Date.now();
223
+ const tick = () => {
224
+ if (this.stopped) {
225
+ return;
226
+ }
227
+ const elapsed = Date.now() - this.startTime - this.delay;
228
+ if (elapsed < 0) {
229
+ nextFrame(tick);
230
+ return;
231
+ }
232
+ const iteration = this.total > 0 ? Math.floor(elapsed / this.total) : this.iterations;
233
+ if (iteration >= this.iterations) {
234
+ this.apply(this.total);
235
+ this.finish(!this.forwards);
236
+ onFinish();
237
+ return;
238
+ }
239
+ this.apply(elapsed - iteration * this.total);
240
+ nextFrame(tick);
241
+ };
242
+ tick();
243
+ }
244
+ apply(time) {
245
+ const style = this.view.style;
246
+ this.tracks.forEach((track, i) => {
247
+ const value = sampleTrack(track, this.bases[i], this.total, time, this.curveAt);
248
+ if (style[track.property.keyframe] !== value) {
249
+ style[track.property.keyframe] = value;
250
+ }
251
+ });
252
+ }
253
+ finish(reset) {
254
+ this.stopped = true;
255
+ if (reset) {
256
+ const style = this.view.style;
257
+ for (const track of this.tracks) {
258
+ style[track.property.keyframe] = unsetValue;
259
+ }
260
+ }
261
+ }
262
+ }
263
+ /** Takes MasonKit's properties out of core's keyframe intervals, as tracks with stop times. */
264
+ function extractTracks(segments) {
265
+ const byName = new Map();
266
+ let time = 0;
267
+ for (const segment of segments) {
268
+ time += segment.duration;
269
+ for (const [name, entry] of animatable) {
270
+ if (name in segment) {
271
+ let track = byName.get(name);
272
+ if (!track) {
273
+ track = { property: entry.property, interpolate: entry.interpolate, stops: [] };
274
+ byName.set(name, track);
275
+ }
276
+ // Core gives a 0% keyframe a 0.01 ms interval; it is still the start.
277
+ track.stops.push([segment === segments[0] && segment.duration <= 1 ? 0 : time, String(segment[name])]);
278
+ delete segment[name];
279
+ }
280
+ }
281
+ }
282
+ return { tracks: [...byName.values()], total: time };
283
+ }
284
+ /**
285
+ * Keeps every interval timed for core: an interval left with nothing core can animate is
286
+ * skipped at once, so it holds the previous interval's values instead.
287
+ */
288
+ function holdEmptyIntervals(segments) {
289
+ let previous = {};
290
+ for (const segment of segments) {
291
+ const present = CORE_ANIMATED.filter((name) => name in segment);
292
+ if (present.length === 0) {
293
+ Object.assign(segment, previous);
294
+ }
295
+ else {
296
+ previous = { ...previous, ...Object.fromEntries(present.map((name) => [name, segment[name]])) };
297
+ }
298
+ }
299
+ }
300
+ /**
301
+ * Windows: core's native animation of scale/rotate/translate never shows on a Mason view (see
302
+ * ViewBase.updateNativeTransform), so they become per-frame tracks of the View properties.
303
+ */
304
+ function splitTransforms(segments) {
305
+ for (const segment of segments) {
306
+ if (segment.rotate && typeof segment.rotate === 'object')
307
+ segment.rotate = segment.rotate.z ?? 0;
308
+ if (segment.scale && typeof segment.scale === 'object') {
309
+ segment.scaleX = segment.scale.x;
310
+ segment.scaleY = segment.scale.y;
311
+ delete segment.scale;
312
+ }
313
+ if (segment.translate && typeof segment.translate === 'object') {
314
+ segment.translateX = segment.translate.x;
315
+ segment.translateY = segment.translate.y;
316
+ delete segment.translate;
317
+ }
318
+ }
319
+ }
320
+ function interpolateNumber(from, to, t) {
321
+ const a = parseFloat(from) || 0;
322
+ const b = parseFloat(to) || 0;
323
+ return String(a + (b - a) * t);
324
+ }
325
+ if (__WINDOWS__) {
326
+ registerKeyframeProperty(rotateProperty, interpolateNumber, '0');
327
+ registerKeyframeProperty(scaleXProperty, interpolateNumber, '1');
328
+ registerKeyframeProperty(scaleYProperty, interpolateNumber, '1');
329
+ registerKeyframeProperty(translateXProperty, interpolateNumber, '0');
330
+ registerKeyframeProperty(translateYProperty, interpolateNumber, '0');
331
+ }
332
+ /**
333
+ * Windows: View.animate()'s scale, rotate and translate, played per frame on the View properties
334
+ * (core's storyboards target a transform that doesn't show on a Mason view).
335
+ */
336
+ export function animateTransforms(view, options) {
337
+ const v = view;
338
+ const tracks = [];
339
+ const add = (name, to, initial) => {
340
+ if (typeof to === 'number' && Number.isFinite(to))
341
+ tracks.push({ name, from: typeof v[name] === 'number' ? v[name] : initial, to });
342
+ };
343
+ const rotate = options.rotate;
344
+ add('rotate', typeof rotate === 'object' ? rotate?.z : rotate, 0);
345
+ add('scaleX', options.scale?.x, 1);
346
+ add('scaleY', options.scale?.y, 1);
347
+ add('translateX', options.translate?.x, 0);
348
+ add('translateY', options.translate?.y, 0);
349
+ const duration = typeof options.duration === 'number' ? options.duration : 300;
350
+ const delay = typeof options.delay === 'number' ? options.delay : 0;
351
+ const iterations = typeof options.iterations === 'number' && options.iterations > 0 ? options.iterations : 1;
352
+ const curve = easing(options.curve);
353
+ let stopped = false;
354
+ let resolve;
355
+ const done = new Promise((r) => (resolve = r));
356
+ const set = (t) => {
357
+ for (const track of tracks)
358
+ v[track.name] = track.from + (track.to - track.from) * t;
359
+ };
360
+ const start = Date.now();
361
+ const tick = () => {
362
+ if (stopped)
363
+ return;
364
+ const elapsed = Date.now() - start - delay;
365
+ if (elapsed < 0) {
366
+ nextFrame(tick);
367
+ return;
368
+ }
369
+ const iteration = duration > 0 ? Math.floor(elapsed / duration) : iterations;
370
+ if (iteration >= iterations) {
371
+ set(1);
372
+ resolve();
373
+ return;
374
+ }
375
+ set(curve((elapsed - iteration * duration) / duration));
376
+ nextFrame(tick);
377
+ };
378
+ tick();
379
+ return {
380
+ done,
381
+ cancel: () => {
382
+ stopped = true;
383
+ resolve();
384
+ },
385
+ };
386
+ }
387
+ let installed = false;
388
+ /** Installs the keyframe hooks once. */
389
+ export function installKeyframes() {
390
+ if (installed) {
391
+ return;
392
+ }
393
+ installed = true;
394
+ const proto = KeyframeAnimation.prototype;
395
+ const play = proto.play;
396
+ const cancel = proto.cancel;
397
+ proto.play = function (view) {
398
+ // The keyframe intervals are shared by every play of this animation, so take the tracks
399
+ // out once.
400
+ if (this[tracks_] === undefined) {
401
+ if (__WINDOWS__)
402
+ splitTransforms(this.animations);
403
+ this[tracks_] = extractTracks(this.animations);
404
+ if (this[tracks_].tracks.length) {
405
+ holdEmptyIntervals(this.animations);
406
+ }
407
+ }
408
+ const { tracks, total } = this[tracks_];
409
+ if (!tracks.length) {
410
+ return play.call(this, view);
411
+ }
412
+ const hasCoreWork = this.animations.some((segment) => CORE_ANIMATED.some((name) => name in segment));
413
+ let finishDriver;
414
+ const driverDone = new Promise((resolve) => (finishDriver = resolve));
415
+ const driver = new KeyframeDriver(view, tracks, total, this.delay ?? 0, this.iterations ?? 1, !!this._isForwards, this.animations);
416
+ this[driver_] = driver;
417
+ driver.start(() => finishDriver());
418
+ if (!hasCoreWork) {
419
+ this._isPlaying = true;
420
+ return driverDone.then(() => {
421
+ this._isPlaying = false;
422
+ });
423
+ }
424
+ return Promise.all([play.call(this, view), driverDone]).then(() => undefined);
425
+ };
426
+ proto.cancel = function () {
427
+ const driver = this[driver_];
428
+ if (driver) {
429
+ driver.finish(true);
430
+ this[driver_] = undefined;
431
+ }
432
+ if (this._nativeAnimations?.length || !driver) {
433
+ return cancel.call(this);
434
+ }
435
+ this._isPlaying = false;
436
+ };
437
+ }
438
+ //# sourceMappingURL=css-keyframes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-keyframes.js","sourceRoot":"","sources":["../../../packages/nativescript-masonkit/css-keyframes.ts"],"names":[],"mappings":"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"}
@@ -22,6 +22,19 @@ export declare function parseCornerRadius(value: string): CornerRadius;
22
22
  export declare function borderRadiusCorners(value: string): CornerRadius[];
23
23
  export declare function composeBorderRadius(corners: CornerRadius[]): string;
24
24
  export declare function splitBackground(value: string): LonghandValue[];
25
+ /** `mask` into image, position, size, repeat, origin, clip, composite and mode, per layer. */
26
+ export declare function splitMask(value: string): LonghandValue[];
27
+ /** A -webkit-mask-composite list as `mask-composite`; operators with no equivalent become `add`. */
28
+ export declare function webkitMaskComposite(value: string): string;
29
+ /** A -webkit-mask-origin or -clip list as the standard property. */
30
+ export declare function webkitMaskBox(value: string): string;
31
+ /** `-webkit-mask`: `mask` with WebKit's composite operators and box keywords. */
32
+ export declare function splitWebkitMask(value: string): LonghandValue[];
33
+ /**
34
+ * `mask-border` (and `-webkit-mask-box-image`) into source, slice, width, outset, repeat and mode:
35
+ * `<source> || <slice> [ / <width>? [ / <outset> ]? ]? || <repeat> || <mode>`.
36
+ */
37
+ export declare function splitMaskBorder(value: string): LonghandValue[];
25
38
  export declare function splitOverflow(value: string): string[];
26
39
  export declare function splitFlexFlow(value: string): LonghandValue[];
27
40
  export declare function splitFlex(value: string): string[];