@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,492 @@
1
+ import { tokenizeCss } from './css-shorthands';
2
+ import { expandColorStops, resolveStopPositions } from './gradient-stops';
3
+ const BOX = { 'border-box': 0, 'padding-box': 1, 'content-box': 2, 'margin-box': 3, 'fill-box': 0, 'stroke-box': 0, 'view-box': 0, 'no-clip': 3 };
4
+ const REPEAT = { repeat: 0, 'no-repeat': 1, space: 2, round: 3, stretch: 4 };
5
+ const MODE = { 'match-source': 0, alpha: 1, luminance: 2 };
6
+ const COMPOSITE = { add: 0, subtract: 1, intersect: 2, exclude: 3 };
7
+ function layerList(value) {
8
+ if (!value)
9
+ return [];
10
+ const parts = [''];
11
+ let tokens;
12
+ try {
13
+ tokens = tokenizeCss(value);
14
+ }
15
+ catch {
16
+ return [];
17
+ }
18
+ for (const token of tokens) {
19
+ if (token === ',')
20
+ parts.push('');
21
+ else
22
+ parts[parts.length - 1] += (parts[parts.length - 1] ? ' ' : '') + token;
23
+ }
24
+ return parts.map((p) => p.trim());
25
+ }
26
+ function at(list, i, fallback) {
27
+ return list.length ? list[i % list.length] : fallback;
28
+ }
29
+ function len(token, ctx) {
30
+ if (token == null)
31
+ return null;
32
+ const t = token.trim().toLowerCase();
33
+ if (t.endsWith('%')) {
34
+ const n = parseFloat(t);
35
+ return Number.isFinite(n) ? [0, n] : null;
36
+ }
37
+ if (/^[+-]?(\d+\.?\d*|\.\d+)$/.test(t))
38
+ return [parseFloat(t), 0];
39
+ const px = ctx.length(t);
40
+ return px == null || !Number.isFinite(px) ? null : [px, 0];
41
+ }
42
+ /** The text inside url(...), unquoted. */
43
+ export function urlOf(token) {
44
+ const m = /^url\(\s*([\s\S]*?)\s*\)$/i.exec(token.trim());
45
+ if (!m)
46
+ return null;
47
+ let inner = m[1];
48
+ if ((inner.startsWith('"') && inner.endsWith('"')) || (inner.startsWith("'") && inner.endsWith("'")))
49
+ inner = inner.slice(1, -1);
50
+ return inner;
51
+ }
52
+ function flatStops(offsets, colors) {
53
+ const out = [];
54
+ for (let i = 0; i < colors.length; i++)
55
+ out.push(offsets[i], colors[i] >>> 0);
56
+ return out;
57
+ }
58
+ function positionFraction(token, axis) {
59
+ if (token === 'center')
60
+ return 0.5;
61
+ if (token === (axis === 'x' ? 'left' : 'top'))
62
+ return 0;
63
+ if (token === (axis === 'x' ? 'right' : 'bottom'))
64
+ return 1;
65
+ if (token.endsWith('%')) {
66
+ const n = parseFloat(token);
67
+ return Number.isFinite(n) ? n / 100 : null;
68
+ }
69
+ return null;
70
+ }
71
+ function parseConic(value, ctx) {
72
+ const m = /conic-gradient\s*\(([\s\S]*)\)\s*$/i.exec(value.trim());
73
+ if (!m)
74
+ return null;
75
+ const parts = layerList(m[1]);
76
+ let head = parts[0] ?? '';
77
+ let start = 0;
78
+ let from = 0;
79
+ let cx = 0.5;
80
+ let cy = 0.5;
81
+ if (/^(from\s|at\s|in\s)/i.test(head)) {
82
+ start = 1;
83
+ const fromMatch = /from\s+(-?[\d.]+)(deg|rad|turn|grad)?/i.exec(head);
84
+ if (fromMatch)
85
+ from = angleDegrees(parseFloat(fromMatch[1]), fromMatch[2] ?? 'deg');
86
+ const atMatch = /\bat\s+(.+)$/i.exec(head);
87
+ if (atMatch) {
88
+ const tokens = atMatch[1].trim().toLowerCase().split(/\s+/);
89
+ let x = null;
90
+ let y = null;
91
+ for (const t of tokens) {
92
+ if ((t === 'top' || t === 'bottom') && y == null)
93
+ y = positionFraction(t, 'y');
94
+ else if (x == null)
95
+ x = positionFraction(t, 'x');
96
+ else if (y == null)
97
+ y = positionFraction(t, 'y');
98
+ }
99
+ cx = x ?? 0.5;
100
+ cy = y ?? 0.5;
101
+ }
102
+ head = '';
103
+ }
104
+ const colors = [];
105
+ const positions = [];
106
+ for (const stop of expandColorStops(parts.slice(start))) {
107
+ const pos = /\s+(-?[\d.]+)(%|deg|rad|turn|grad)\s*$/i.exec(stop);
108
+ const color = ctx.color(pos ? stop.slice(0, pos.index).trim() : stop);
109
+ if (color == null)
110
+ continue;
111
+ colors.push(color >>> 0);
112
+ positions.push(pos ? (pos[2] === '%' ? parseFloat(pos[1]) / 100 : angleDegrees(parseFloat(pos[1]), pos[2]) / 360) : null);
113
+ }
114
+ if (!colors.length)
115
+ return null;
116
+ return { t: 'con', a: from, c: [cx, cy], s: flatStops(resolveStopPositions(positions), colors) };
117
+ }
118
+ function angleDegrees(n, unit) {
119
+ switch (unit.toLowerCase()) {
120
+ case 'rad':
121
+ return (n * 180) / Math.PI;
122
+ case 'turn':
123
+ return n * 360;
124
+ case 'grad':
125
+ return n * 0.9;
126
+ default:
127
+ return n;
128
+ }
129
+ }
130
+ /** One mask/border image, or null for `none` and anything that can't be drawn. */
131
+ export function encodeImage(token, ctx) {
132
+ const t = token.trim();
133
+ if (!t || t.toLowerCase() === 'none')
134
+ return null;
135
+ const url = urlOf(t);
136
+ if (url != null)
137
+ return url ? { t: 'img', src: ctx.source(url) } : null;
138
+ if (/^(repeating-)?conic-gradient\(/i.test(t))
139
+ return parseConic(t, ctx);
140
+ if (/^(repeating-)?radial-gradient\(/i.test(t)) {
141
+ const g = ctx.radial(t);
142
+ return g && g.colors.length ? { t: 'rad', c: [g.cx, g.cy], r: [g.rx, g.ry], s: flatStops(g.offsets, g.colors) } : null;
143
+ }
144
+ if (/^(repeating-)?linear-gradient\(/i.test(t)) {
145
+ const g = ctx.linear(t);
146
+ return g && g.colors.length ? { t: 'lin', a: g.angle, s: flatStops(g.offsets, g.colors) } : null;
147
+ }
148
+ return null;
149
+ }
150
+ /** A background-position-style value as [x, y], each px + % of (area − tile). */
151
+ export function encodePosition(value, ctx) {
152
+ const tokens = value.trim().toLowerCase().split(/\s+/).filter(Boolean);
153
+ const keyword = (t) => ['left', 'right', 'top', 'bottom', 'center'].includes(t);
154
+ const edge = (t) => (t === 'left' || t === 'top' ? [0, 0] : t === 'right' || t === 'bottom' ? [0, 100] : [0, 50]);
155
+ let x = [0, 0];
156
+ let y = [0, 0];
157
+ if (tokens.length === 1) {
158
+ const t = tokens[0];
159
+ if (t === 'top' || t === 'bottom')
160
+ return [[0, 50], edge(t)];
161
+ if (keyword(t))
162
+ return [edge(t), [0, 50]];
163
+ return [len(t, ctx) ?? [0, 0], [0, 50]];
164
+ }
165
+ if (tokens.length === 2) {
166
+ let [a, b] = tokens;
167
+ if (a === 'top' || a === 'bottom' || b === 'left' || b === 'right')
168
+ [a, b] = [b, a];
169
+ x = keyword(a) ? edge(a) : (len(a, ctx) ?? [0, 0]);
170
+ y = keyword(b) ? edge(b) : (len(b, ctx) ?? [0, 0]);
171
+ return [x, y];
172
+ }
173
+ // 3 or 4 values: keyword offset pairs, offsets measured from the named edge.
174
+ let i = 0;
175
+ const axes = {};
176
+ while (i < tokens.length) {
177
+ const kw = tokens[i++];
178
+ const next = tokens[i];
179
+ const offset = next && !keyword(next) ? len(next, ctx) : null;
180
+ if (offset)
181
+ i++;
182
+ const base = edge(kw);
183
+ const o = offset ?? [0, 0];
184
+ const v = kw === 'right' || kw === 'bottom' ? [0 - o[0], 100 - o[1]] : [base[0] + o[0], base[1] + o[1]];
185
+ if (kw === 'left' || kw === 'right')
186
+ axes.x = v;
187
+ else if (kw === 'top' || kw === 'bottom')
188
+ axes.y = v;
189
+ else if (!axes.x)
190
+ axes.x = v;
191
+ else
192
+ axes.y = v;
193
+ }
194
+ return [axes.x ?? [0, 50], axes.y ?? [0, 50]];
195
+ }
196
+ function encodeSize(value, ctx) {
197
+ const t = value.trim().toLowerCase();
198
+ if (t === 'cover')
199
+ return [1];
200
+ if (t === 'contain')
201
+ return [2];
202
+ const [w, h = 'auto'] = t.split(/\s+/);
203
+ const lw = w === 'auto' ? null : len(w, ctx);
204
+ const lh = h === 'auto' ? null : len(h, ctx);
205
+ return [0, lw ? 1 : 0, ...(lw ?? [0, 0]), lh ? 1 : 0, ...(lh ?? [0, 0])];
206
+ }
207
+ function encodeRepeat(value) {
208
+ const t = value.trim().toLowerCase();
209
+ if (t === 'repeat-x')
210
+ return [0, 1];
211
+ if (t === 'repeat-y')
212
+ return [1, 0];
213
+ const [a, b = a] = t.split(/\s+/);
214
+ return [REPEAT[a] ?? 0, REPEAT[b] ?? 0];
215
+ }
216
+ function cornerRadii(value, ctx) {
217
+ // border-radius grammar: 1-4 horizontal radii [/ 1-4 vertical radii], each a px+% Len.
218
+ const [hPart, vPart] = value.split('/');
219
+ const expand = (part) => {
220
+ const list = (part ?? '').trim().split(/\s+/).filter(Boolean);
221
+ if (!list.length)
222
+ return null;
223
+ const [a, b = a, c = a, d = b] = list;
224
+ return [a, b, c, d];
225
+ };
226
+ const hs = expand(hPart) ?? ['0', '0', '0', '0'];
227
+ const vs = expand(vPart) ?? hs;
228
+ const out = [];
229
+ for (let i = 0; i < 4; i++)
230
+ out.push(...(len(hs[i], ctx) ?? [0, 0]), ...(len(vs[i], ctx) ?? [0, 0]));
231
+ return out;
232
+ }
233
+ function radiusKind(token) {
234
+ return token === 'closest-side' ? 1 : token === 'farthest-side' ? 2 : 0;
235
+ }
236
+ /** clip-path as the native shape spec, or null for none and what can't be drawn. */
237
+ export function encodeClipPath(value, ctx) {
238
+ let tokens;
239
+ try {
240
+ tokens = tokenizeCss(value.trim());
241
+ }
242
+ catch {
243
+ return null;
244
+ }
245
+ if (!tokens.length || tokens[0].toLowerCase() === 'none')
246
+ return null;
247
+ let box = 0;
248
+ let shape = null;
249
+ for (const token of tokens) {
250
+ const lower = token.toLowerCase();
251
+ if (lower in BOX && lower !== 'no-clip')
252
+ box = BOX[lower];
253
+ else if (/^[a-z-]+\(/i.test(token))
254
+ shape = token;
255
+ }
256
+ if (!shape)
257
+ return { b: box, s: 0 };
258
+ const m = /^([a-z-]+)\(([\s\S]*)\)$/i.exec(shape);
259
+ if (!m)
260
+ return null;
261
+ const name = m[1].toLowerCase();
262
+ const args = m[2].trim();
263
+ const v = [];
264
+ const push = (l) => v.push(...(l ?? [0, 0]));
265
+ const insetOf = (sides, round) => {
266
+ for (const s of sides)
267
+ push(s);
268
+ v.push(...cornerRadii(round ?? '0', ctx));
269
+ return { b: box, s: 1, v };
270
+ };
271
+ const roundSplit = (text) => {
272
+ const r = /\s+round\s+/i.exec(text);
273
+ return r ? [text.slice(0, r.index), text.slice(r.index + r[0].length)] : [text, undefined];
274
+ };
275
+ switch (name) {
276
+ case 'inset': {
277
+ const [sidesText, round] = roundSplit(args);
278
+ const list = sidesText.trim().split(/\s+/).filter(Boolean);
279
+ const [a, b = a, c = a, d = b] = list;
280
+ return insetOf([len(a, ctx), len(b, ctx), len(c, ctx), len(d, ctx)], round);
281
+ }
282
+ case 'rect': {
283
+ // rect(top right bottom left): right/bottom measured from the left/top edge.
284
+ const [sidesText, round] = roundSplit(args);
285
+ const [t, r, b, l] = sidesText.split(/[\s,]+/).filter(Boolean);
286
+ const edge = (token, far) => {
287
+ if (!token || token === 'auto')
288
+ return [0, 0];
289
+ const value = len(token, ctx);
290
+ if (!value)
291
+ return null;
292
+ return far ? [0 - value[0], 100 - value[1]] : value;
293
+ };
294
+ return insetOf([edge(t, false), edge(r, true), edge(b, true), edge(l, false)], round);
295
+ }
296
+ case 'xywh': {
297
+ const [sidesText, round] = roundSplit(args);
298
+ const [x, y, w, h] = sidesText
299
+ .split(/\s+/)
300
+ .filter(Boolean)
301
+ .map((t) => len(t, ctx) ?? [0, 0]);
302
+ if (!h)
303
+ return null;
304
+ return insetOf([y, [0 - (x[0] + w[0]), 100 - x[1] - w[1]], [0 - (y[0] + h[0]), 100 - y[1] - h[1]], x], round);
305
+ }
306
+ case 'circle':
307
+ case 'ellipse': {
308
+ const atIndex = args.search(/(^|\s)at\s/i);
309
+ const radii = (atIndex >= 0 ? args.slice(0, atIndex) : args).trim().split(/\s+/).filter(Boolean);
310
+ const position = atIndex >= 0 ? args.slice(atIndex).replace(/^\s*at\s+/i, '') : 'center';
311
+ // The centre is a plain position in the box, not one offset by a tile.
312
+ const [cx, cy] = encodePosition(position, ctx);
313
+ push(cx);
314
+ push(cy);
315
+ const kinds = [];
316
+ const count = name === 'circle' ? 1 : 2;
317
+ for (let i = 0; i < count; i++) {
318
+ const r = radii[i] ?? (name === 'circle' ? 'closest-side' : 'closest-side');
319
+ kinds.push(radiusKind(r));
320
+ push(radiusKind(r) ? [0, 0] : len(r, ctx));
321
+ }
322
+ return { b: box, s: name === 'circle' ? 2 : 3, v, k: kinds };
323
+ }
324
+ case 'polygon': {
325
+ const list = layerList(args);
326
+ let evenOdd = false;
327
+ if (/^(evenodd|nonzero)$/i.test(list[0] ?? ''))
328
+ evenOdd = list.shift().toLowerCase() === 'evenodd';
329
+ for (const point of list) {
330
+ const [x, y] = point.split(/\s+/);
331
+ push(len(x, ctx));
332
+ push(len(y, ctx));
333
+ }
334
+ return v.length >= 6 ? { b: box, s: 4, v, e: evenOdd } : null;
335
+ }
336
+ case 'path': {
337
+ const list = layerList(args);
338
+ let evenOdd = false;
339
+ if (/^(evenodd|nonzero)$/i.test(list[0] ?? ''))
340
+ evenOdd = list.shift().toLowerCase() === 'evenodd';
341
+ const d = (list[0] ?? '').replace(/^["']|["']$/g, '');
342
+ return d ? { b: box, s: 5, d, e: evenOdd } : null;
343
+ }
344
+ default:
345
+ return null;
346
+ }
347
+ }
348
+ /** The 9-slice part of mask-border or border-image, or null when it has no image. */
349
+ export function encodeNineSlice(parts, ctx, defaults) {
350
+ const image = encodeImage(parts.source, ctx);
351
+ if (!image)
352
+ return null;
353
+ const sliceTokens = parts.slice.trim().toLowerCase().split(/\s+/).filter(Boolean);
354
+ const fill = sliceTokens.includes('fill');
355
+ const nums = sliceTokens.filter((t) => t !== 'fill');
356
+ const [s1 = '0', s2 = s1, s3 = s1, s4 = s2] = nums;
357
+ const sl = [];
358
+ for (const s of [s1, s2, s3, s4])
359
+ sl.push(parseFloat(s) || 0, s.endsWith('%') ? 1 : 0);
360
+ const widthTokens = parts.width.trim().toLowerCase().split(/\s+/).filter(Boolean);
361
+ const [w1 = defaults.width === 'auto' ? 'auto' : '1', w2 = w1, w3 = w1, w4 = w2] = widthTokens;
362
+ const w = [];
363
+ for (const t of [w1, w2, w3, w4]) {
364
+ if (t === 'auto')
365
+ w.push(2, 0, 0);
366
+ else if (/^[+]?(\d+\.?\d*|\.\d+)$/.test(t))
367
+ w.push(0, parseFloat(t), 0);
368
+ else
369
+ w.push(1, ...(len(t, ctx) ?? [0, 0]));
370
+ }
371
+ const outsetTokens = parts.outset.trim().toLowerCase().split(/\s+/).filter(Boolean);
372
+ const [o1 = '0', o2 = o1, o3 = o1, o4 = o2] = outsetTokens;
373
+ const o = [];
374
+ for (const t of [o1, o2, o3, o4]) {
375
+ if (/^[+]?(\d+\.?\d*|\.\d+)$/.test(t))
376
+ o.push(0, parseFloat(t));
377
+ else
378
+ o.push(1, ctx.length(t) ?? 0);
379
+ }
380
+ const [rx = 'stretch', ry = rx] = parts.repeat.trim().toLowerCase().split(/\s+/).filter(Boolean);
381
+ return { i: image, sl, f: fill, w, o, r: [REPEAT[rx] ?? 4, REPEAT[ry] ?? 4], lum: parts.mode?.trim().toLowerCase() === 'luminance' };
382
+ }
383
+ function maskBorderOf(css, ctx) {
384
+ const source = css.get('mask-border-source');
385
+ if (!source)
386
+ return null;
387
+ return encodeNineSlice({
388
+ source,
389
+ slice: css.get('mask-border-slice') ?? '0',
390
+ width: css.get('mask-border-width') ?? 'auto',
391
+ outset: css.get('mask-border-outset') ?? '0',
392
+ repeat: css.get('mask-border-repeat') ?? 'stretch',
393
+ mode: css.get('mask-border-mode') ?? 'alpha',
394
+ }, ctx, { width: 'auto' });
395
+ }
396
+ /** mask-*, clip-path and mask-border longhands as the JSON Css.SetMask takes, or '' for none. */
397
+ export function encodeWindowsMask(css, ctx) {
398
+ const images = layerList(css.get('mask-image'));
399
+ const sizes = layerList(css.get('mask-size'));
400
+ const positions = layerList(css.get('mask-position'));
401
+ const repeats = layerList(css.get('mask-repeat'));
402
+ const origins = layerList(css.get('mask-origin'));
403
+ const clips = layerList(css.get('mask-clip'));
404
+ const modes = layerList(css.get('mask-mode'));
405
+ const composites = layerList(css.get('mask-composite'));
406
+ const layers = [];
407
+ let drawable = false;
408
+ images.forEach((token, i) => {
409
+ const image = encodeImage(token, ctx);
410
+ if (image)
411
+ drawable = true;
412
+ const [x, y] = encodePosition(at(positions, i, '0% 0%'), ctx);
413
+ layers.push({
414
+ i: image,
415
+ sz: encodeSize(at(sizes, i, 'auto'), ctx),
416
+ p: [...x, ...y],
417
+ r: encodeRepeat(at(repeats, i, 'repeat')),
418
+ o: BOX[at(origins, i, 'border-box').toLowerCase()] ?? 0,
419
+ c: BOX[at(clips, i, 'border-box').toLowerCase()] ?? 0,
420
+ m: MODE[at(modes, i, 'match-source').toLowerCase()] ?? 0,
421
+ k: COMPOSITE[at(composites, i, 'add').toLowerCase()] ?? 0,
422
+ });
423
+ });
424
+ const spec = {};
425
+ if (drawable)
426
+ spec.l = layers;
427
+ const clip = encodeClipPath(css.get('clip-path') ?? '', ctx);
428
+ if (clip)
429
+ spec.cp = clip;
430
+ const border = maskBorderOf(css, ctx);
431
+ if (border)
432
+ spec.mb = border;
433
+ return Object.keys(spec).length ? JSON.stringify(spec) : '';
434
+ }
435
+ /** One url() background layer as the JSON Css.SetBackgroundLayers takes, or '' if it can't be drawn. */
436
+ export function encodeWindowsBackground(url, size, position, repeat, ctx) {
437
+ if (!url)
438
+ return '';
439
+ const [x, y] = encodePosition(position || '0% 0%', ctx);
440
+ // Backgrounds are positioned in the padding box and painted to the border box's edge.
441
+ const layer = { i: { t: 'img', src: ctx.source(url) }, sz: encodeSize(size || 'auto', ctx), p: [...x, ...y], r: encodeRepeat(repeat || 'repeat'), o: 1, c: 0, m: 0, k: 0 };
442
+ return JSON.stringify({ l: [layer] });
443
+ }
444
+ const BORDER_IMAGE_REPEAT = new Set(['stretch', 'repeat', 'round', 'space']);
445
+ /** The border-image shorthand as the JSON Css.SetBorderImage takes, or '' for none. */
446
+ export function encodeWindowsBorderImage(value, ctx) {
447
+ let tokens;
448
+ try {
449
+ tokens = tokenizeCss(value.trim());
450
+ }
451
+ catch {
452
+ return '';
453
+ }
454
+ let source = '';
455
+ const groups = [[]];
456
+ const repeat = [];
457
+ for (const token of tokens) {
458
+ const lower = token.toLowerCase();
459
+ if (token === '/')
460
+ groups.push([]);
461
+ else if (BORDER_IMAGE_REPEAT.has(lower))
462
+ repeat.push(lower);
463
+ else if (!source && (lower === 'none' || /^[a-z-]+\(/i.test(token)))
464
+ source = token;
465
+ else
466
+ groups[groups.length - 1].push(token);
467
+ }
468
+ if (!source)
469
+ return '';
470
+ const [slice, width, outset] = groups.map((g) => g.join(' '));
471
+ const nine = encodeNineSlice({ source, slice: slice || '100%', width: width || '', outset: outset || '0', repeat: repeat.join(' ') || 'stretch' }, ctx, { width: 'border' });
472
+ return nine ? JSON.stringify({ mb: nine }) : '';
473
+ }
474
+ /** Longhands that feed Css.SetMask. */
475
+ export const WINDOWS_MASK_PROPERTIES = new Set([
476
+ 'mask-image',
477
+ 'mask-size',
478
+ 'mask-position',
479
+ 'mask-repeat',
480
+ 'mask-origin',
481
+ 'mask-clip',
482
+ 'mask-mode',
483
+ 'mask-composite',
484
+ 'clip-path',
485
+ 'mask-border-source',
486
+ 'mask-border-slice',
487
+ 'mask-border-width',
488
+ 'mask-border-outset',
489
+ 'mask-border-repeat',
490
+ 'mask-border-mode',
491
+ ]);
492
+ //# sourceMappingURL=windows-mask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"windows-mask.js","sourceRoot":"","sources":["../../../packages/nativescript-masonkit/windows-mask.ts"],"names":[],"mappings":"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"}