@triniwiz/nativescript-masonkit 1.0.0-beta.108 → 1.0.0-beta.109

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 (120) hide show
  1. package/box-shadow.d.ts +10 -0
  2. package/box-shadow.js +49 -0
  3. package/box-shadow.js.map +1 -0
  4. package/button/index.windows.js +0 -2
  5. package/button/index.windows.js.map +1 -1
  6. package/common.d.ts +31 -7
  7. package/common.js +625 -184
  8. package/common.js.map +1 -1
  9. package/css-filter.d.ts +17 -0
  10. package/css-filter.js +141 -0
  11. package/css-filter.js.map +1 -0
  12. package/css-transform.d.ts +6 -0
  13. package/css-transform.js +101 -0
  14. package/css-transform.js.map +1 -0
  15. package/html-windows.d.ts +1 -0
  16. package/html-windows.js +163 -0
  17. package/html-windows.js.map +1 -0
  18. package/html.d.ts +8 -0
  19. package/html.js +134 -0
  20. package/html.js.map +1 -0
  21. package/index.d.ts +6 -4
  22. package/index.windows.d.ts +2 -0
  23. package/index.windows.js +2 -0
  24. package/index.windows.js.map +1 -1
  25. package/input/common.d.ts +16 -0
  26. package/input/common.js +45 -3
  27. package/input/common.js.map +1 -1
  28. package/input/index.android.d.ts +8 -3
  29. package/input/index.android.js +24 -7
  30. package/input/index.android.js.map +1 -1
  31. package/input/index.ios.d.ts +7 -3
  32. package/input/index.ios.js +18 -7
  33. package/input/index.ios.js.map +1 -1
  34. package/input/index.windows.d.ts +14 -2
  35. package/input/index.windows.js +143 -4
  36. package/input/index.windows.js.map +1 -1
  37. package/li/index.windows.js +4 -2
  38. package/li/index.windows.js.map +1 -1
  39. package/list/index.windows.d.ts +5 -2
  40. package/list/index.windows.js +26 -4
  41. package/list/index.windows.js.map +1 -1
  42. package/package.json +1 -1
  43. package/platforms/android/masonkit-release.aar +0 -0
  44. package/platforms/ios/Mason.xcframework/Info.plist +11 -11
  45. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Headers/Mason-Swift.h +14 -1
  46. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Mason +0 -0
  47. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  48. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.abi.json +5091 -13148
  49. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.private.swiftinterface +28 -0
  50. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  51. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftinterface +28 -0
  52. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  53. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8874 -8713
  54. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Headers/Mason-Swift.h +28 -2
  55. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Mason +0 -0
  56. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  57. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  58. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.abi.json +5091 -13148
  59. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +28 -0
  60. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  61. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftinterface +28 -0
  62. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.abi.json +5091 -13148
  63. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +28 -0
  64. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  65. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +28 -0
  66. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/_CodeSignature/CodeResources +26 -26
  67. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  68. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8868 -8708
  69. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/x86_64/Mason.yml +8467 -8310
  70. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Headers/Mason-Swift.h +14 -1
  71. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Mason +0 -0
  72. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-xros.swiftsourceinfo +0 -0
  73. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.abi.json +5091 -13148
  74. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.private.swiftinterface +28 -0
  75. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.swiftdoc +0 -0
  76. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.swiftinterface +28 -0
  77. package/platforms/ios/Mason.xcframework/xros-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  78. package/platforms/ios/Mason.xcframework/xros-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8366 -8204
  79. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Headers/Mason-Swift.h +14 -1
  80. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Mason +0 -0
  81. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo +0 -0
  82. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.abi.json +5091 -13148
  83. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.private.swiftinterface +28 -0
  84. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.swiftdoc +0 -0
  85. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.swiftinterface +28 -0
  86. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/_CodeSignature/CodeResources +14 -14
  87. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  88. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8365 -8204
  89. package/platforms/windows/arm64/NativeScript.Mason.dll +0 -0
  90. package/platforms/windows/arm64/NativeScript.Mason.winmd +0 -0
  91. package/platforms/windows/x64/NativeScript.Mason.dll +0 -0
  92. package/platforms/windows/x64/NativeScript.Mason.winmd +0 -0
  93. package/properties.js +1 -1
  94. package/properties.js.map +1 -1
  95. package/scroll/index.windows.js +4 -2
  96. package/scroll/index.windows.js.map +1 -1
  97. package/style.d.ts +28 -2
  98. package/style.js +291 -69
  99. package/style.js.map +1 -1
  100. package/symbols.d.ts +4 -0
  101. package/symbols.js +6 -2
  102. package/symbols.js.map +1 -1
  103. package/text/index.windows.d.ts +3 -0
  104. package/text/index.windows.js +39 -10
  105. package/text/index.windows.js.map +1 -1
  106. package/textarea/index.windows.d.ts +2 -0
  107. package/textarea/index.windows.js +5 -1
  108. package/textarea/index.windows.js.map +1 -1
  109. package/typings/android.d.ts +3 -0
  110. package/typings/objc!Mason.d.ts +4 -0
  111. package/typings/windows.d.ts +29 -1
  112. package/view/index.windows.js +4 -2
  113. package/view/index.windows.js.map +1 -1
  114. package/vue/src/element-registry.d.ts.map +1 -1
  115. package/vue/src/element-registry.js +4 -1
  116. package/vue/src/element-registry.js.map +1 -1
  117. package/vue/src/v-model.d.ts +27 -0
  118. package/vue/src/v-model.d.ts.map +1 -0
  119. package/vue/src/v-model.js +70 -0
  120. package/vue/src/v-model.js.map +1 -0
package/style.js CHANGED
@@ -3,7 +3,9 @@ import { cssUnits } from './units';
3
3
  import { masonEngine } from './windows-panel-helpers';
4
4
  import { reportCssDiagnostic } from './diagnostics';
5
5
  import { expandColorStops, resolveStopPositions } from './gradient-stops';
6
- import { Color, Length as CoreLength, PercentLength as CorePercentLength, Screen } from '@nativescript/core';
6
+ import { encodeBoxShadows, parseBoxShadows } from './box-shadow';
7
+ import { encodeCssFilter, parseCssFilter } from './css-filter';
8
+ import { Color, Length as CoreLength, PercentLength as CorePercentLength, Screen, knownFolders } from '@nativescript/core';
7
9
  // The Windows shell lays out in XAML DIPs, so its style buffer holds DIPs. Core's Windows density
8
10
  // is 1 until the window has a XamlRoot, so converting stored early styles unscaled and later ones scaled.
9
11
  const layout = __WINDOWS__ ? { ...coreLayout, getDisplayDensity: () => 1, toDevicePixels: (value) => value, toDeviceIndependentPixels: (value) => value } : coreLayout;
@@ -257,7 +259,7 @@ function windowsSetGrid(nativeView, field, value) {
257
259
  // UpdateGrid doesn't mark the node dirty / invalidate XAML measure on its own;
258
260
  // SyncStyle does, so a grid item's placement change re-runs the container layout.
259
261
  try {
260
- nativeView.SyncStyle('0', '0');
262
+ nativeView.SyncStyle(-1, -1, -1, -1);
261
263
  }
262
264
  catch (_) { }
263
265
  }
@@ -610,6 +612,8 @@ StateKeys.CARET_COLOR = StateKeys.flag(76);
610
612
  StateKeys.WORD_SPACING = StateKeys.flag(77);
611
613
  StateKeys.FONT_STRETCH = StateKeys.flag(78);
612
614
  StateKeys.DISPLAY_AND_MODE = StateKeys.DISPLAY.or(StateKeys.DISPLAY_MODE);
615
+ StateKeys.FLOW_TYPE = StateKeys.DISPLAY.or(StateKeys.DISPLAY_MODE).or(StateKeys.POSITION).or(StateKeys.FLOAT);
616
+ StateKeys.WINDOWS_TEXT = [49, 50, 51, 52, 53, 54, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 73, 74, 75, 77, 78].reduce((mask, n) => mask.or(StateKeys.flag(n)), StateKeys.NONE);
613
617
  function wordsToBigInt(w0, w1, w2, w3) {
614
618
  return BigInt(w0 >>> 0) | (BigInt(w1 >>> 0) << 32n) | (BigInt(w2 >>> 0) << 64n) | (BigInt(w3 >>> 0) << 96n);
615
619
  }
@@ -745,6 +749,102 @@ export function parseLinearGradientCss(value) {
745
749
  return null;
746
750
  return { angle, offsets: resolveStopPositions(positions), colors, interpolation };
747
751
  }
752
+ const RADIAL_GRADIENT_ARGS = /radial-gradient\s*\(([\s\S]*)\)\s*$/i;
753
+ function positionFraction(token, axis) {
754
+ if (token == null)
755
+ return null;
756
+ const t = token.trim().toLowerCase();
757
+ if (t === 'center')
758
+ return 0.5;
759
+ if (t === (axis === 'x' ? 'left' : 'top'))
760
+ return 0;
761
+ if (t === (axis === 'x' ? 'right' : 'bottom'))
762
+ return 1;
763
+ if (t.endsWith('%')) {
764
+ const n = parseFloat(t);
765
+ return Number.isFinite(n) ? n / 100 : null;
766
+ }
767
+ return null;
768
+ }
769
+ export function parseBoxPosition(value, fallback = 0.5) {
770
+ const parts = value.trim().toLowerCase().split(/\s+/).filter(Boolean);
771
+ let x = null;
772
+ let y = null;
773
+ for (const part of parts) {
774
+ if ((part === 'top' || part === 'bottom') && y == null)
775
+ y = positionFraction(part, 'y');
776
+ else if ((part === 'left' || part === 'right') && x == null)
777
+ x = positionFraction(part, 'x');
778
+ else if (x == null)
779
+ x = positionFraction(part, 'x');
780
+ else if (y == null)
781
+ y = positionFraction(part, 'y');
782
+ }
783
+ if (x != null || y != null)
784
+ return { x: x ?? 0.5, y: y ?? 0.5 };
785
+ return { x: fallback, y: fallback };
786
+ }
787
+ export function parseRadialGradientCss(value) {
788
+ const m = RADIAL_GRADIENT_ARGS.exec(value.trim());
789
+ if (!m)
790
+ return null;
791
+ const parts = splitTopLevelCommas(m[1])
792
+ .map((p) => p.trim())
793
+ .filter(Boolean);
794
+ if (parts.length < 2)
795
+ return null;
796
+ let start = 0;
797
+ let cx = 0.5;
798
+ let cy = 0.5;
799
+ let size = 'farthest-corner';
800
+ let interpolation = '';
801
+ let head = parts[0];
802
+ const method = INTERPOLATION_METHOD.exec(head);
803
+ if (method) {
804
+ interpolation = method[1].toLowerCase().replace(/\s+/g, ' ');
805
+ head = (head.slice(0, method.index) + head.slice(method.index + method[0].length)).trim();
806
+ start = 1;
807
+ }
808
+ if (/\b(circle|ellipse|closest-side|farthest-side|closest-corner|farthest-corner|at)\b/i.test(head)) {
809
+ start = 1;
810
+ const at = /\bat\s+(.+)$/i.exec(head);
811
+ if (at) {
812
+ const p = parseBoxPosition(at[1]);
813
+ cx = p.x;
814
+ cy = p.y;
815
+ }
816
+ const sizeKeyword = /(closest-side|farthest-side|closest-corner|farthest-corner)/i.exec(head);
817
+ if (sizeKeyword)
818
+ size = sizeKeyword[1].toLowerCase();
819
+ }
820
+ const sideX = size.startsWith('closest') ? Math.min(cx, 1 - cx) : Math.max(cx, 1 - cx);
821
+ const sideY = size.startsWith('closest') ? Math.min(cy, 1 - cy) : Math.max(cy, 1 - cy);
822
+ const corner = size.endsWith('corner') ? Math.SQRT2 : 1;
823
+ const colors = [];
824
+ const positions = [];
825
+ for (const stop of expandColorStops(parts.slice(start))) {
826
+ const pos = /\s+(-?[\d.]+)(%|[a-z]+)\s*$/i.exec(stop);
827
+ const colorStr = pos ? stop.slice(0, pos.index).trim() : stop;
828
+ const argb = normalizeColorValue(colorStr);
829
+ if (argb == null)
830
+ continue;
831
+ colors.push(argb >>> 0);
832
+ positions.push(pos && pos[2] === '%' ? parseFloat(pos[1]) / 100 : null);
833
+ }
834
+ if (colors.length < 1)
835
+ return null;
836
+ return { cx, cy, rx: Math.max(sideX * corner, 0.001), ry: Math.max(sideY * corner, 0.001), offsets: resolveStopPositions(positions), colors, interpolation };
837
+ }
838
+ export function backgroundFit(size) {
839
+ const t = (size ?? '').trim().toLowerCase();
840
+ if (t === 'cover')
841
+ return 3;
842
+ if (t === 'contain')
843
+ return 2;
844
+ if (t === '100%' || t === '100% 100%')
845
+ return 1;
846
+ return 0;
847
+ }
748
848
  const SIDE_TOKEN = /^(auto|[+-]?(\d+\.?\d*|\.\d+)(e[+-]?\d+)?(px|dip|dppx|rem|em|pt|vw|vh|vmin|vmax|%)?|[a-z-]+\(.*\))$/i;
749
849
  /** 1-4 lengths, percentages or `auto`. Anything else makes the whole declaration invalid, which CSS ignores. */
750
850
  export function isSideList(value) {
@@ -1199,6 +1299,7 @@ export class Style {
1199
1299
  // `false` means a write happened without a snapshot, so always sync.
1200
1300
  this._turnSnapshot = undefined;
1201
1301
  this._synced = false;
1302
+ this._windowsCss = new Map();
1202
1303
  }
1203
1304
  static fromView(view, nativeView) {
1204
1305
  const ret = new Style();
@@ -1399,34 +1500,91 @@ export class Style {
1399
1500
  }
1400
1501
  if (__WINDOWS__) {
1401
1502
  // Android and iOS parse these natively; Windows parses them here into the style buffer.
1503
+ if (!this._pseudo)
1504
+ this._windowsCss.set(name, value);
1402
1505
  this.applyWindowsCssString(name, value);
1403
1506
  }
1404
1507
  }
1508
+ applyWindowsBackground(shorthand) {
1509
+ const v = (this._windowsBackground ?? '').trim();
1510
+ const layer = splitTopLevelCommas(v)[0]?.trim() ?? '';
1511
+ const stopsOf = (g) => g.offsets.map((o, i) => o + ':' + (g.colors[i] >>> 0)).join(',');
1512
+ try {
1513
+ if (/^radial-gradient/i.test(layer)) {
1514
+ const g = parseRadialGradientCss(layer);
1515
+ if (g)
1516
+ NativeScript.Mason.Css.ApplyRadialGradientAt(this.nativeView, g.cx, g.cy, g.rx, g.ry, stopsOf(g), g.interpolation);
1517
+ return;
1518
+ }
1519
+ if (/^linear-gradient/i.test(layer)) {
1520
+ const g = parseLinearGradientCss(layer);
1521
+ if (g && g.colors.length)
1522
+ NativeScript.Mason.Css.ApplyLinearGradient(this.nativeView, g.angle, stopsOf(g), g.interpolation);
1523
+ return;
1524
+ }
1525
+ const url = /url\(\s*(['"]?)(.*?)\1\s*\)/i.exec(layer);
1526
+ if (url) {
1527
+ let source = url[2];
1528
+ if (source.startsWith('~/'))
1529
+ source = source.replace('~/', knownFolders.currentApp().path + '/');
1530
+ const rest = layer.slice(url.index + url[0].length).trim();
1531
+ const keywords = /\b(no-repeat|repeat-x|repeat-y|repeat|space|round|scroll|fixed|local|border-box|padding-box|content-box)\b/gi;
1532
+ const [positionPart, sizePart] = rest.split('/').map((p) => p.replace(keywords, '').trim());
1533
+ const size = shorthand && sizePart ? sizePart.split(/\s+/).slice(0, 2).join(' ') : this._windowsBackgroundSize;
1534
+ const position = parseBoxPosition(shorthand && positionPart ? positionPart : (this._windowsBackgroundPosition ?? '0% 0%'), 0);
1535
+ const align = (f) => (f <= 0.25 ? 0 : f >= 0.75 ? 2 : 1);
1536
+ NativeScript.Mason.Css.ApplyBackgroundImage(this.nativeView, source, backgroundFit(size), align(position.x), align(position.y));
1537
+ return;
1538
+ }
1539
+ if (!ANY_GRADIENT.test(layer)) {
1540
+ NativeScript.Mason.Css.ClearBackground(this.nativeView);
1541
+ if (shorthand && v.length && v.toLowerCase() !== 'none')
1542
+ this.backgroundColor = v;
1543
+ }
1544
+ }
1545
+ catch (_) { }
1546
+ }
1405
1547
  applyWindowsCssString(name, value) {
1406
1548
  // A gradient is a Panel brush from Css that VisualApply leaves over BACKGROUND_COLOR; clearing
1407
1549
  // it lets VisualApply repaint the color.
1408
1550
  if (name === 'background' || name === 'background-image') {
1409
- const v = typeof value === 'string' ? value : String(value ?? '');
1410
- if (LINEAR_GRADIENT.test(v)) {
1411
- const g = parseLinearGradientCss(v);
1412
- if (g && g.colors.length) {
1413
- try {
1414
- // Pass stops as an "offset:argb,..." string — WinRT array_view params don't marshal
1415
- // reliably from the NS-Windows JS runtime (plain arrays -> E_FAIL, typed arrays -> crash).
1416
- const stops = g.offsets.map((o, i) => o + ':' + (g.colors[i] >>> 0)).join(',');
1417
- NativeScript.Mason.Css.ApplyLinearGradient(this.nativeView, g.angle, stops, g.interpolation);
1418
- }
1419
- catch (_) { }
1420
- }
1421
- }
1422
- else if (!ANY_GRADIENT.test(v)) {
1423
- try {
1424
- NativeScript.Mason.Css.ClearBackground(this.nativeView);
1425
- }
1426
- catch (_) { }
1427
- if (name === 'background' && v.trim().length && v.trim().toLowerCase() !== 'none') {
1428
- this.backgroundColor = v;
1429
- }
1551
+ this._windowsBackground = typeof value === 'string' ? value : String(value ?? '');
1552
+ this.applyWindowsBackground(name === 'background');
1553
+ return;
1554
+ }
1555
+ if (name === 'background-size' || name === 'background-position') {
1556
+ if (name === 'background-size')
1557
+ this._windowsBackgroundSize = String(value ?? '');
1558
+ else
1559
+ this._windowsBackgroundPosition = String(value ?? '');
1560
+ if (/url\(/i.test(this._windowsBackground ?? ''))
1561
+ this.applyWindowsBackground(false);
1562
+ return;
1563
+ }
1564
+ if (name === 'filter' || name === 'backdrop-filter') {
1565
+ const view = this.nativeView;
1566
+ if (!view)
1567
+ return;
1568
+ const current = this.color >>> 0 || 0xff000000;
1569
+ const spec = encodeCssFilter(parseCssFilter(typeof value === 'string' ? value : '', (token) => cssLengthToDip(token, this.emBasis())), (color) => (color && color.toLowerCase() !== 'currentcolor' ? (normalizeColorValue(color) ?? current) : current));
1570
+ if (name === 'filter')
1571
+ NativeScript.Mason.Css.SetFilter(view, spec);
1572
+ else
1573
+ NativeScript.Mason.Css.SetBackdropFilter(view, spec);
1574
+ return;
1575
+ }
1576
+ if (name === 'font-feature-settings') {
1577
+ const view = this.nativeView;
1578
+ if (view && typeof view.SetFontFeatureSettings === 'function')
1579
+ view.SetFontFeatureSettings(typeof value === 'string' ? value : '');
1580
+ return;
1581
+ }
1582
+ if (name === 'text-shadow') {
1583
+ const view = this.nativeView;
1584
+ if (view && typeof view.SetTextShadow === 'function') {
1585
+ const current = this.color >>> 0 || 0xff000000;
1586
+ const shadows = parseBoxShadows(typeof value === 'string' ? value : '', (token) => cssLengthToDip(token, this.emBasis()));
1587
+ view.SetTextShadow(encodeBoxShadows(shadows, (color) => (color && color.toLowerCase() !== 'currentcolor' ? (normalizeColorValue(color) ?? current) : current)));
1430
1588
  }
1431
1589
  return;
1432
1590
  }
@@ -1524,6 +1682,9 @@ export class Style {
1524
1682
  case 'text-decoration-color':
1525
1683
  color = parseTextDecorationColor(value);
1526
1684
  break;
1685
+ case 'text-decoration-thickness':
1686
+ thickness = cssLengthToDip(value, this.emBasis()) ?? null;
1687
+ break;
1527
1688
  }
1528
1689
  if (line == null && style == null && color == null && thickness == null)
1529
1690
  return;
@@ -1597,22 +1758,38 @@ export class Style {
1597
1758
  view.mason_syncStyleParts(this._d0, this._d1, this._d2, this._d3);
1598
1759
  }
1599
1760
  else if (__WINDOWS__) {
1600
- // The Windows elements re-read the whole buffer, so the dirty bits aren't passed.
1601
1761
  // @ts-ignore
1602
1762
  const view = this.view?.windows ?? this.view._view;
1603
- view.SyncStyle('', '');
1604
- this.view?._windowsSyncAnonymousText?.();
1763
+ const all = !this._hasDirty;
1764
+ const d0 = all ? -1 : this._d0;
1765
+ const d1 = all ? -1 : this._d1;
1766
+ const d2 = all ? -1 : this._d2;
1767
+ const d3 = all ? -1 : this._d3;
1768
+ view.SyncStyle(d0, d1, d2, d3);
1769
+ const text = StateKeys.WINDOWS_TEXT;
1770
+ if ((d0 & text.w0) | (d1 & text.w1) | (d2 & text.w2) | (d3 & text.w3)) {
1771
+ this.view?._windowsSyncAnonymousText?.(d0, d1, d2, d3);
1772
+ }
1773
+ const flow = StateKeys.FLOW_TYPE;
1774
+ if (!this._pseudo && (d0 & flow.w0) | (d1 & flow.w1) | (d2 & flow.w2) | (d3 & flow.w3)) {
1775
+ this.view?._windowsFlowTypeChanged?.();
1776
+ }
1605
1777
  }
1606
1778
  }
1607
1779
  /** The anonymous Windows Text holding a container's own runs inherits the container's text styles. */
1608
- copyTextStyleTo(text) {
1780
+ copyTextStyleTo(text, d0 = -1, d1 = -1, d2 = -1, d3 = -1, block = false) {
1609
1781
  if (!__WINDOWS__ || !this.u8View)
1610
1782
  return;
1611
1783
  //@ts-ignore
1612
1784
  const target = new Uint8Array(NSWinRT.interop.arrayBufferFromBuffer(masonEngine().StyleValues(text)));
1613
1785
  target.set(this.u8View.subarray(StyleKeys.FONT_COLOR, StyleKeys.BACKGROUND_COLOR), StyleKeys.FONT_COLOR);
1614
1786
  target.set(this.u8View.subarray(StyleKeys.DECORATION_LINE, StyleKeys.PSEUDO_SET_MASK_LOW), StyleKeys.DECORATION_LINE);
1615
- text.SyncStyle('0', '0');
1787
+ target.set(this.u8View.subarray(StyleKeys.HYPHENS, StyleKeys.FONT_STRETCH_STATE + 1), StyleKeys.HYPHENS);
1788
+ if (block) {
1789
+ target[StyleKeys.DISPLAY] = 3;
1790
+ target[StyleKeys.DISPLAY_MODE] = 0 /* DisplayMode.None */;
1791
+ }
1792
+ text.SyncStyle(d0, d1, d2, d3);
1616
1793
  }
1617
1794
  setOrAppendState(value) {
1618
1795
  if (this._turnSnapshot === undefined) {
@@ -1703,6 +1880,24 @@ export class Style {
1703
1880
  this.commitState(StateKeys.BOX_SIZING);
1704
1881
  }
1705
1882
  }
1883
+ get direction() {
1884
+ switch (getUint8(this.style_view, StyleKeys.DIRECTION)) {
1885
+ case 1:
1886
+ return 'ltr';
1887
+ case 2:
1888
+ return 'rtl';
1889
+ default:
1890
+ return 'inherit';
1891
+ }
1892
+ }
1893
+ set direction(value) {
1894
+ const direction = value === 'ltr' ? 1 : value === 'rtl' ? 2 : 0;
1895
+ if (getUint8(this.style_view, StyleKeys.DIRECTION) === direction)
1896
+ return;
1897
+ this.prepareMut();
1898
+ setUint8(this.style_view, StyleKeys.DIRECTION, direction);
1899
+ this.commitState(StateKeys.DIRECTION);
1900
+ }
1706
1901
  get listStyleType() {
1707
1902
  switch (getUint8(this.style_view, StyleKeys.LIST_STYLE_TYPE)) {
1708
1903
  case 1:
@@ -1732,6 +1927,18 @@ export class Style {
1732
1927
  setInt8(this.style_view, StyleKeys.LIST_STYLE_TYPE_STATE, 1);
1733
1928
  this.commitState(StateKeys.LIST_STYLE_TYPE);
1734
1929
  }
1930
+ get listStylePosition() {
1931
+ return getUint8(this.style_view, StyleKeys.LIST_STYLE_POSITION) === 1 ? 'inside' : 'outside';
1932
+ }
1933
+ set listStylePosition(value) {
1934
+ if (value !== 'outside' && value !== 'inside') {
1935
+ return;
1936
+ }
1937
+ this.prepareMut();
1938
+ setUint8(this.style_view, StyleKeys.LIST_STYLE_POSITION, value === 'inside' ? 1 : 0);
1939
+ setInt8(this.style_view, StyleKeys.LIST_STYLE_POSITION_STATE, 1);
1940
+ this.commitState(StateKeys.LIST_STYLE_POSITION);
1941
+ }
1735
1942
  get fontSize() {
1736
1943
  if (!this.style_view) {
1737
1944
  // BLACK ?
@@ -1926,6 +2133,12 @@ export class Style {
1926
2133
  }
1927
2134
  const normalized = normalizeColorValue(value);
1928
2135
  if (normalized == null) {
2136
+ // Leaving :active on Windows resets an unset color, which then inherits again.
2137
+ if (__WINDOWS__ && getInt8(this.style_view, StyleKeys.FONT_COLOR_STATE)) {
2138
+ this.prepareMut();
2139
+ setInt8(this.style_view, StyleKeys.FONT_COLOR_STATE, 0);
2140
+ this.commitState(StateKeys.FONT_COLOR);
2141
+ }
1929
2142
  return;
1930
2143
  }
1931
2144
  this.prepareMut();
@@ -1996,6 +2209,15 @@ export class Style {
1996
2209
  get styleView() {
1997
2210
  return this.style_view;
1998
2211
  }
2212
+ get hasBoxStyle() {
2213
+ const view = this.style_view;
2214
+ if (!view)
2215
+ return false;
2216
+ if (getInt8(view, StyleKeys.WIDTH_TYPE) !== 0 || getInt8(view, StyleKeys.HEIGHT_TYPE) !== 0)
2217
+ return true;
2218
+ const sides = [StyleKeys.PADDING_LEFT_VALUE, StyleKeys.PADDING_RIGHT_VALUE, StyleKeys.PADDING_TOP_VALUE, StyleKeys.PADDING_BOTTOM_VALUE, StyleKeys.BORDER_LEFT_VALUE, StyleKeys.BORDER_RIGHT_VALUE, StyleKeys.BORDER_TOP_VALUE, StyleKeys.BORDER_BOTTOM_VALUE];
2219
+ return sides.some((offset) => getFloat32(view, offset) > 0);
2220
+ }
1999
2221
  get display() {
2000
2222
  const mode = getInt8(this.style_view, StyleKeys.DISPLAY_MODE);
2001
2223
  if (mode === 1 /* DisplayMode.Inline */) {
@@ -3762,7 +3984,7 @@ export class Style {
3762
3984
  if (__APPLE__) {
3763
3985
  return this.appleStyle.gridAutoRows;
3764
3986
  }
3765
- return '';
3987
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridAutoRowsCss ?? '') : '';
3766
3988
  }
3767
3989
  set gridAutoRows(value) {
3768
3990
  if (!this.nativeView) {
@@ -3790,7 +4012,7 @@ export class Style {
3790
4012
  if (__APPLE__) {
3791
4013
  return this.appleStyle.gridAutoColumns;
3792
4014
  }
3793
- return '';
4015
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridAutoColumnsCss ?? '') : '';
3794
4016
  }
3795
4017
  set gridAutoColumns(value) {
3796
4018
  if (!this.nativeView) {
@@ -3866,7 +4088,7 @@ export class Style {
3866
4088
  if (__APPLE__) {
3867
4089
  return this.appleStyle.gridColumn;
3868
4090
  }
3869
- return '';
4091
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridColumnCss ?? '') : '';
3870
4092
  }
3871
4093
  get gridColumnStart() {
3872
4094
  if (!this.nativeView) {
@@ -3878,7 +4100,7 @@ export class Style {
3878
4100
  if (__APPLE__) {
3879
4101
  return this.appleStyle.gridColumnStart;
3880
4102
  }
3881
- return '';
4103
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridColumnStartCss ?? '') : '';
3882
4104
  }
3883
4105
  set gridColumnStart(value) {
3884
4106
  if (!this.nativeView) {
@@ -3906,7 +4128,7 @@ export class Style {
3906
4128
  if (__APPLE__) {
3907
4129
  return this.appleStyle.gridColumnEnd;
3908
4130
  }
3909
- return '';
4131
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridColumnEndCss ?? '') : '';
3910
4132
  }
3911
4133
  set gridColumnEnd(value) {
3912
4134
  if (!this.nativeView) {
@@ -3950,7 +4172,7 @@ export class Style {
3950
4172
  if (__APPLE__) {
3951
4173
  return this.appleStyle.gridRow;
3952
4174
  }
3953
- return '';
4175
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridRowCss ?? '') : '';
3954
4176
  }
3955
4177
  get gridRowStart() {
3956
4178
  if (!this.nativeView) {
@@ -3962,7 +4184,7 @@ export class Style {
3962
4184
  if (__APPLE__) {
3963
4185
  return this.appleStyle.gridRowStart;
3964
4186
  }
3965
- return '';
4187
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridRowStartCss ?? '') : '';
3966
4188
  }
3967
4189
  set gridRowStart(value) {
3968
4190
  if (!this.nativeView) {
@@ -3990,7 +4212,7 @@ export class Style {
3990
4212
  if (__APPLE__) {
3991
4213
  return this.appleStyle.gridRowEnd;
3992
4214
  }
3993
- return '';
4215
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridRowEndCss ?? '') : '';
3994
4216
  }
3995
4217
  set gridRowEnd(value) {
3996
4218
  if (!this.nativeView) {
@@ -4034,7 +4256,7 @@ export class Style {
4034
4256
  if (__APPLE__) {
4035
4257
  return this.appleStyle.gridArea;
4036
4258
  }
4037
- return '';
4259
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridAreaCss ?? '') : '';
4038
4260
  }
4039
4261
  set gridTemplateRows(value) {
4040
4262
  if (!this.nativeView) {
@@ -4062,7 +4284,7 @@ export class Style {
4062
4284
  if (__APPLE__) {
4063
4285
  return this.appleStyle.gridTemplateRows;
4064
4286
  }
4065
- return '';
4287
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridTemplateRowsCss ?? '') : '';
4066
4288
  }
4067
4289
  get gridTemplateColumns() {
4068
4290
  if (!this.nativeView) {
@@ -4074,7 +4296,7 @@ export class Style {
4074
4296
  if (__APPLE__) {
4075
4297
  return this.appleStyle.gridTemplateColumns;
4076
4298
  }
4077
- return '';
4299
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridTemplateColumnsCss ?? '') : '';
4078
4300
  }
4079
4301
  set gridTemplateColumns(value) {
4080
4302
  if (!this.nativeView) {
@@ -4102,7 +4324,7 @@ export class Style {
4102
4324
  if (__APPLE__) {
4103
4325
  return this.appleStyle.gridTemplateAreas;
4104
4326
  }
4105
- return '';
4327
+ return __WINDOWS__ ? (this.nativeView?.Style?.GridTemplateAreasCss ?? '') : '';
4106
4328
  }
4107
4329
  set gridTemplateAreas(value) {
4108
4330
  if (!this.nativeView) {
@@ -4469,7 +4691,7 @@ export class Style {
4469
4691
  if (__APPLE__) {
4470
4692
  return this.appleStyle.background;
4471
4693
  }
4472
- return '';
4694
+ return __WINDOWS__ ? (this._windowsCss.get('background') ?? '') : '';
4473
4695
  }
4474
4696
  set background(value) {
4475
4697
  value = this.coerceCssStringValue(value);
@@ -4485,7 +4707,7 @@ export class Style {
4485
4707
  if (__APPLE__) {
4486
4708
  return this.appleStyle.backgroundImage;
4487
4709
  }
4488
- return '';
4710
+ return __WINDOWS__ ? (this._windowsCss.get('background-image') ?? '') : '';
4489
4711
  }
4490
4712
  set backgroundImage(value) {
4491
4713
  value = this.coerceCssStringValue(value);
@@ -4501,7 +4723,7 @@ export class Style {
4501
4723
  if (__APPLE__) {
4502
4724
  return this.appleStyle.backgroundRepeat;
4503
4725
  }
4504
- return '';
4726
+ return __WINDOWS__ ? (this._windowsCss.get('background-repeat') ?? '') : '';
4505
4727
  }
4506
4728
  set backgroundRepeat(value) {
4507
4729
  value = this.coerceCssStringValue(value);
@@ -4517,7 +4739,7 @@ export class Style {
4517
4739
  if (__APPLE__) {
4518
4740
  return this.appleStyle.backgroundPosition;
4519
4741
  }
4520
- return '';
4742
+ return __WINDOWS__ ? (this._windowsCss.get('background-position') ?? '') : '';
4521
4743
  }
4522
4744
  set backgroundPosition(value) {
4523
4745
  value = this.coerceCssStringValue(value);
@@ -4533,7 +4755,7 @@ export class Style {
4533
4755
  if (__APPLE__) {
4534
4756
  return this.appleStyle.backgroundSize;
4535
4757
  }
4536
- return '';
4758
+ return __WINDOWS__ ? (this._windowsCss.get('background-size') ?? '') : '';
4537
4759
  }
4538
4760
  set backgroundSize(value) {
4539
4761
  value = this.coerceCssStringValue(value);
@@ -4549,7 +4771,7 @@ export class Style {
4549
4771
  if (__APPLE__) {
4550
4772
  return this.appleStyle.backgroundClip;
4551
4773
  }
4552
- return '';
4774
+ return __WINDOWS__ ? (this._windowsCss.get('background-clip') ?? '') : '';
4553
4775
  }
4554
4776
  set backgroundClip(value) {
4555
4777
  value = this.coerceCssStringValue(value);
@@ -4565,7 +4787,7 @@ export class Style {
4565
4787
  if (__APPLE__) {
4566
4788
  return this.appleStyle.backgroundPositionX;
4567
4789
  }
4568
- return '';
4790
+ return __WINDOWS__ ? (this._windowsCss.get('background-position-x') ?? '') : '';
4569
4791
  }
4570
4792
  set backgroundPositionX(value) {
4571
4793
  value = cssInitialIfReset(this.coerceCssStringValue(value), '0%');
@@ -4581,7 +4803,7 @@ export class Style {
4581
4803
  if (__APPLE__) {
4582
4804
  return this.appleStyle.backgroundPositionY;
4583
4805
  }
4584
- return '';
4806
+ return __WINDOWS__ ? (this._windowsCss.get('background-position-y') ?? '') : '';
4585
4807
  }
4586
4808
  set backgroundPositionY(value) {
4587
4809
  value = cssInitialIfReset(this.coerceCssStringValue(value), '0%');
@@ -4597,7 +4819,7 @@ export class Style {
4597
4819
  if (__APPLE__) {
4598
4820
  return this.appleStyle.backgroundOrigin;
4599
4821
  }
4600
- return '';
4822
+ return __WINDOWS__ ? (this._windowsCss.get('background-origin') ?? '') : '';
4601
4823
  }
4602
4824
  set backgroundOrigin(value) {
4603
4825
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'padding-box');
@@ -4613,7 +4835,7 @@ export class Style {
4613
4835
  if (__APPLE__) {
4614
4836
  return this.appleStyle.backgroundAttachment;
4615
4837
  }
4616
- return '';
4838
+ return __WINDOWS__ ? (this._windowsCss.get('background-attachment') ?? '') : '';
4617
4839
  }
4618
4840
  set backgroundAttachment(value) {
4619
4841
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'scroll');
@@ -4629,7 +4851,7 @@ export class Style {
4629
4851
  if (__APPLE__) {
4630
4852
  return this.appleStyle.backgroundBlendMode;
4631
4853
  }
4632
- return '';
4854
+ return __WINDOWS__ ? (this._windowsCss.get('background-blend-mode') ?? '') : '';
4633
4855
  }
4634
4856
  set backgroundBlendMode(value) {
4635
4857
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'normal');
@@ -4735,7 +4957,7 @@ export class Style {
4735
4957
  }
4736
4958
  get objectFit() {
4737
4959
  const map = ['contain', 'cover', 'fill', 'none', 'scale-down'];
4738
- return map[getUint8(this.style_view, StyleKeys.OBJECT_FIT)] ?? 'contain';
4960
+ return map[getUint8(this.style_view, StyleKeys.OBJECT_FIT)] ?? 'fill';
4739
4961
  }
4740
4962
  /** Read by `Img`; previously reachable only through the native HTML parser. */
4741
4963
  set objectFit(value) {
@@ -4784,7 +5006,7 @@ export class Style {
4784
5006
  if (__APPLE__) {
4785
5007
  return this.appleStyle.fontFamily;
4786
5008
  }
4787
- return '';
5009
+ return __WINDOWS__ ? (this._windowsCss.get('font-family') ?? '') : '';
4788
5010
  }
4789
5011
  // `font-family` is a native Style property (builds a FontFace), not a
4790
5012
  // style-buffer field, so it can't be written through the shared buffer.
@@ -4864,7 +5086,7 @@ export class Style {
4864
5086
  if (__APPLE__) {
4865
5087
  return this.appleStyle.border;
4866
5088
  }
4867
- return '';
5089
+ return __WINDOWS__ ? (this._windowsCss.get('border') ?? '') : '';
4868
5090
  }
4869
5091
  set border(value) {
4870
5092
  value = this.coerceCssStringValue(value);
@@ -4879,7 +5101,7 @@ export class Style {
4879
5101
  if (__APPLE__) {
4880
5102
  return this.appleStyle.paddingCss;
4881
5103
  }
4882
- return '';
5104
+ return __WINDOWS__ ? (this._windowsCss.get('padding') ?? '') : '';
4883
5105
  }
4884
5106
  set paddingCss(value) {
4885
5107
  // a bare number is dip, matching other numeric setters; Android's
@@ -4896,7 +5118,7 @@ export class Style {
4896
5118
  if (__APPLE__) {
4897
5119
  return this.appleStyle.marginCss;
4898
5120
  }
4899
- return '';
5121
+ return __WINDOWS__ ? (this._windowsCss.get('margin') ?? '') : '';
4900
5122
  }
4901
5123
  set marginCss(value) {
4902
5124
  // See the comment on `paddingCss` above — same dip-vs-px mislabeling fix.
@@ -4912,7 +5134,7 @@ export class Style {
4912
5134
  if (__APPLE__) {
4913
5135
  return this.appleStyle.insetCss;
4914
5136
  }
4915
- return '';
5137
+ return __WINDOWS__ ? (this._windowsCss.get('inset') ?? '') : '';
4916
5138
  }
4917
5139
  set insetCss(value) {
4918
5140
  // See the comment on `paddingCss` above — same dip-vs-px mislabeling fix.
@@ -4957,7 +5179,7 @@ export class Style {
4957
5179
  if (__APPLE__) {
4958
5180
  return this.appleStyle.filter;
4959
5181
  }
4960
- return '';
5182
+ return __WINDOWS__ ? (this._windowsCss.get('filter') ?? '') : '';
4961
5183
  }
4962
5184
  set filter(value) {
4963
5185
  value = this.coerceCssStringValue(value);
@@ -4973,7 +5195,7 @@ export class Style {
4973
5195
  if (__APPLE__) {
4974
5196
  return this.appleStyle.boxShadow;
4975
5197
  }
4976
- return '';
5198
+ return __WINDOWS__ ? (this._windowsCss.get('box-shadow') ?? '') : '';
4977
5199
  }
4978
5200
  set 'box-shadow'(value) {
4979
5201
  this.boxShadow = value;
@@ -4995,7 +5217,7 @@ export class Style {
4995
5217
  if (__APPLE__) {
4996
5218
  return this.appleStyle.transform;
4997
5219
  }
4998
- return '';
5220
+ return __WINDOWS__ ? (this._windowsCss.get('transform') ?? '') : '';
4999
5221
  }
5000
5222
  set transform(value) {
5001
5223
  value = this.coerceCssStringValue(value);
@@ -5159,7 +5381,7 @@ export class Style {
5159
5381
  if (__APPLE__) {
5160
5382
  return this.appleStyle.textShadow;
5161
5383
  }
5162
- return '';
5384
+ return __WINDOWS__ ? (this._windowsCss.get('text-shadow') ?? '') : '';
5163
5385
  }
5164
5386
  set textShadow(value) {
5165
5387
  value = this.coerceCssStringValue(value);
@@ -5257,7 +5479,7 @@ export class Style {
5257
5479
  if (__APPLE__) {
5258
5480
  return this.appleStyle.cornerShape;
5259
5481
  }
5260
- return '';
5482
+ return __WINDOWS__ ? (this._windowsCss.get('corner-shape') ?? '') : '';
5261
5483
  }
5262
5484
  get cornerShapeTopLeft() {
5263
5485
  if (!this.nativeView)
@@ -5268,7 +5490,7 @@ export class Style {
5268
5490
  if (__APPLE__) {
5269
5491
  return this.appleStyle.cornerShapeTopLeft;
5270
5492
  }
5271
- return '';
5493
+ return __WINDOWS__ ? (this._windowsCss.get('corner-shape-top-left') ?? '') : '';
5272
5494
  }
5273
5495
  set cornerShapeTopLeft(value) {
5274
5496
  value = this.coerceCssStringValue(value);
@@ -5283,7 +5505,7 @@ export class Style {
5283
5505
  if (__APPLE__) {
5284
5506
  return this.appleStyle.cornerShapeTopRight;
5285
5507
  }
5286
- return '';
5508
+ return __WINDOWS__ ? (this._windowsCss.get('corner-shape-top-right') ?? '') : '';
5287
5509
  }
5288
5510
  set cornerShapeTopRight(value) {
5289
5511
  value = this.coerceCssStringValue(value);
@@ -5298,7 +5520,7 @@ export class Style {
5298
5520
  if (__APPLE__) {
5299
5521
  return this.appleStyle.cornerShapeBottomRight;
5300
5522
  }
5301
- return '';
5523
+ return __WINDOWS__ ? (this._windowsCss.get('corner-shape-bottom-right') ?? '') : '';
5302
5524
  }
5303
5525
  set cornerShapeBottomRight(value) {
5304
5526
  value = this.coerceCssStringValue(value);
@@ -5313,7 +5535,7 @@ export class Style {
5313
5535
  if (__APPLE__) {
5314
5536
  return this.appleStyle.cornerShapeBottomLeft;
5315
5537
  }
5316
- return '';
5538
+ return __WINDOWS__ ? (this._windowsCss.get('corner-shape-bottom-left') ?? '') : '';
5317
5539
  }
5318
5540
  set cornerShapeBottomLeft(value) {
5319
5541
  value = this.coerceCssStringValue(value);
@@ -5461,7 +5683,7 @@ export class Style {
5461
5683
  if (__APPLE__) {
5462
5684
  return this.appleStyle.borderImage;
5463
5685
  }
5464
- return '';
5686
+ return __WINDOWS__ ? (this._windowsCss.get('border-image') ?? '') : '';
5465
5687
  }
5466
5688
  set borderImage(value) {
5467
5689
  value = this.coerceCssStringValue(value);
@@ -5508,7 +5730,7 @@ export class Style {
5508
5730
  if (__APPLE__) {
5509
5731
  return this.appleStyle.fontFeatureSettings;
5510
5732
  }
5511
- return 'normal';
5733
+ return __WINDOWS__ ? this._windowsCss.get('font-feature-settings') || 'normal' : 'normal';
5512
5734
  }
5513
5735
  set fontFeatureSettings(value) {
5514
5736
  value = this.coerceCssStringValue(value);
@@ -5614,7 +5836,7 @@ export class Style {
5614
5836
  if (__APPLE__) {
5615
5837
  return this.appleStyle.backdropFilter;
5616
5838
  }
5617
- return '';
5839
+ return __WINDOWS__ ? (this._windowsCss.get('backdrop-filter') ?? '') : '';
5618
5840
  }
5619
5841
  set backdropFilter(value) {
5620
5842
  value = this.coerceCssStringValue(value);