@triniwiz/nativescript-masonkit 1.0.0-beta.105 → 1.0.0-beta.107

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 (77) hide show
  1. package/angular/fesm2022/triniwiz-nativescript-masonkit-angular.mjs.map +1 -1
  2. package/common.d.ts +26 -7
  3. package/common.js +154 -20
  4. package/common.js.map +1 -1
  5. package/css-shorthands.js +11 -1
  6. package/css-shorthands.js.map +1 -1
  7. package/package.json +1 -1
  8. package/platforms/android/masonkit-release.aar +0 -0
  9. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Headers/Mason-Swift.h +7 -0
  10. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Headers/mason_native.h +33 -0
  11. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Mason +0 -0
  12. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  13. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.abi.json +4521 -13215
  14. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.private.swiftinterface +6 -4
  15. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  16. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftinterface +6 -4
  17. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  18. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8710 -8669
  19. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Headers/Mason-Swift.h +14 -0
  20. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Headers/mason_native.h +33 -0
  21. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Mason +0 -0
  22. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  23. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  24. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.abi.json +4521 -13215
  25. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +6 -4
  26. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  27. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftinterface +6 -4
  28. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.abi.json +4521 -13215
  29. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +6 -4
  30. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  31. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +6 -4
  32. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/_CodeSignature/CodeResources +28 -28
  33. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  34. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8704 -8663
  35. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/x86_64/Mason.yml +8307 -8281
  36. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Headers/Mason-Swift.h +7 -0
  37. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Headers/mason_native.h +33 -0
  38. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Mason +0 -0
  39. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-xros.swiftsourceinfo +0 -0
  40. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.abi.json +4521 -13215
  41. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.private.swiftinterface +6 -4
  42. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.swiftdoc +0 -0
  43. package/platforms/ios/Mason.xcframework/xros-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros.swiftinterface +6 -4
  44. package/platforms/ios/Mason.xcframework/xros-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  45. package/platforms/ios/Mason.xcframework/xros-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8203 -8161
  46. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Headers/Mason-Swift.h +7 -0
  47. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Headers/mason_native.h +33 -0
  48. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Mason +0 -0
  49. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-xros-simulator.swiftsourceinfo +0 -0
  50. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.abi.json +4521 -13215
  51. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.private.swiftinterface +6 -4
  52. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.swiftdoc +0 -0
  53. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-xros-simulator.swiftinterface +6 -4
  54. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/Mason.framework/_CodeSignature/CodeResources +16 -16
  55. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  56. package/platforms/ios/Mason.xcframework/xros-arm64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8203 -8161
  57. package/platforms/windows/arm64/NativeScript.Mason.dll +0 -0
  58. package/platforms/windows/arm64/NativeScript.Mason.winmd +0 -0
  59. package/platforms/windows/x64/NativeScript.Mason.dll +0 -0
  60. package/platforms/windows/x64/NativeScript.Mason.winmd +0 -0
  61. package/properties.d.ts +0 -5
  62. package/properties.js +23 -13
  63. package/properties.js.map +1 -1
  64. package/scroll/index.ios.js +1 -0
  65. package/scroll/index.ios.js.map +1 -1
  66. package/style.d.ts +3 -0
  67. package/style.js +148 -136
  68. package/style.js.map +1 -1
  69. package/text/index.android.js +9 -2
  70. package/text/index.android.js.map +1 -1
  71. package/text/index.ios.js +11 -2
  72. package/text/index.ios.js.map +1 -1
  73. package/typings/android.d.ts +2 -0
  74. package/typings/objc!Mason.d.ts +4 -0
  75. package/utils/index.ios.d.ts +2 -2
  76. package/view/index.ios.js +1 -0
  77. package/view/index.ios.js.map +1 -1
package/style.js CHANGED
@@ -606,26 +606,8 @@ const getUint8 = (view, offset) => {
606
606
  const setUint8 = (view, offset, value) => {
607
607
  view.setUint8(offset, value);
608
608
  };
609
- const splitBigIntToInt64Parts = (value) => {
610
- const MASK64 = (1n << 64n) - 1n;
611
- const LOW = value & MASK64;
612
- let HIGH = value >> 64n;
613
- // Ensure HIGH fits into signed 64-bit range
614
- const SIGN_BIT = 1n << 63n;
615
- if ((HIGH & SIGN_BIT) !== 0n) {
616
- // convert to signed representation
617
- HIGH = HIGH - (1n << 64n);
618
- }
619
- let lowSigned = LOW;
620
- if ((LOW & SIGN_BIT) !== 0n) {
621
- lowSigned = LOW - (1n << 64n);
622
- }
623
- return [lowSigned.toString(), HIGH.toString()];
624
- };
625
- // Android-only fast path for syncStyle(): splits the 128-bit dirty mask into
626
- // four signed 32-bit words (plain {N} int marshalling) instead of two 64-bit
627
- // decimal strings. Recombined via (high32 << 32) | (low32 & 0xffffffff) in
628
- // Element.syncStyleParts.
609
+ // Splits the 128-bit dirty mask into four signed 32-bit words (plain {N} int
610
+ // marshalling) for Element.syncStyleParts on Android and mason_syncStyleParts on iOS.
629
611
  const splitBigIntToInt32Parts = (value) => {
630
612
  const MASK64 = (1n << 64n) - 1n;
631
613
  const MASK32 = 0xffffffffn;
@@ -1152,6 +1134,21 @@ function queueStyleSync(style) {
1152
1134
  queueMicrotask(flushStyleSyncs);
1153
1135
  }
1154
1136
  }
1137
+ let nodeHelperShared;
1138
+ export function nodeHelper() {
1139
+ return (nodeHelperShared ?? (nodeHelperShared = org.nativescript.mason.masonkit.NodeHelper.getShared()));
1140
+ }
1141
+ function androidWritableStyleBuffer(nativeView) {
1142
+ if (typeof nativeView?.getWritableStyleBuffer === 'function') {
1143
+ return nativeView.getWritableStyleBuffer();
1144
+ }
1145
+ let style = nativeView?.getStyle?.();
1146
+ if (!style) {
1147
+ // if a non mason view is passed
1148
+ style = org.nativescript.mason.masonkit.Mason.getShared().styleForViewOrNode(nativeView);
1149
+ }
1150
+ return typeof style.getWritableValue === 'function' ? style.getWritableValue() : style.getValues();
1151
+ }
1155
1152
  function windowsStyleValues(nativeView) {
1156
1153
  if (nativeView?.Node)
1157
1154
  return masonEngine().StyleValues(nativeView);
@@ -1189,13 +1186,7 @@ export class Style {
1189
1186
  ret.view_ = view;
1190
1187
  ret.nativeView = nativeView;
1191
1188
  if (__ANDROID__) {
1192
- let style = nativeView?.getStyle?.();
1193
- if (!style) {
1194
- // if a non mason view is passed
1195
- style = org.nativescript.mason.masonkit.Mason.getShared().styleForViewOrNode(nativeView);
1196
- }
1197
- const styleBuffer = typeof style.getWritableValue === 'function' ? style.getWritableValue() : style.getValues();
1198
- const buffer = ArrayBuffer.from(styleBuffer);
1189
+ const buffer = ArrayBuffer.from(androidWritableStyleBuffer(nativeView));
1199
1190
  ret.style_view = new DataView(buffer);
1200
1191
  ret.i8View = new Int8Array(buffer);
1201
1192
  ret.u8View = new Uint8Array(buffer);
@@ -1494,7 +1485,7 @@ export class Style {
1494
1485
  }
1495
1486
  }
1496
1487
  setBorderColor(value) {
1497
- if (!(__WINDOWS__ || __ANDROID__) || !this.style_view)
1488
+ if (!(__WINDOWS__ || __ANDROID__ || __APPLE__) || !this.style_view)
1498
1489
  return;
1499
1490
  const c = parseSidesColorShorthand(String(value ?? ''));
1500
1491
  this.writeBorderSide('top', null, null, c.t);
@@ -1535,11 +1526,11 @@ export class Style {
1535
1526
  view.syncStyleParts(lowLow, lowHigh, highLow, highHigh);
1536
1527
  }
1537
1528
  else if (__APPLE__) {
1538
- const [low, high] = splitBigIntToInt64Parts(this.isDirty);
1529
+ const [lowLow, lowHigh, highLow, highHigh] = splitBigIntToInt32Parts(this.isDirty);
1539
1530
  //@ts-ignore
1540
1531
  const view = this.view?.ios ?? this.view._view;
1541
1532
  // @ts-ignore
1542
- view.mason_syncStyle(low, high);
1533
+ view.mason_syncStyleParts(lowLow, lowHigh, highLow, highHigh);
1543
1534
  }
1544
1535
  else if (__WINDOWS__) {
1545
1536
  // The Windows elements re-read the whole buffer, so the dirty bits aren't passed.
@@ -1633,14 +1624,7 @@ export class Style {
1633
1624
  this.u8View = new Uint8Array(buffer);
1634
1625
  }
1635
1626
  if (__ANDROID__) {
1636
- let style = this.nativeView?.getStyle?.();
1637
- if (!style) {
1638
- // if a non mason view is passed
1639
- style = org.nativescript.mason.masonkit.Mason.getShared().styleForViewOrNode(this.nativeView);
1640
- }
1641
- style.prepareMut();
1642
- const styleBuffer = style.getValues();
1643
- const buffer = ArrayBuffer.from(styleBuffer);
1627
+ const buffer = ArrayBuffer.from(androidWritableStyleBuffer(this.nativeView));
1644
1628
  this.style_view = new DataView(buffer);
1645
1629
  this.i8View = new Int8Array(buffer);
1646
1630
  this.u8View = new Uint8Array(buffer);
@@ -3715,7 +3699,7 @@ export class Style {
3715
3699
  return '';
3716
3700
  }
3717
3701
  if (__ANDROID__) {
3718
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridAutoRows(this.nativeView);
3702
+ return nodeHelper().getGridAutoRows(this.nativeView);
3719
3703
  }
3720
3704
  if (__APPLE__) {
3721
3705
  return this.nativeView.style.gridAutoRows;
@@ -3729,7 +3713,7 @@ export class Style {
3729
3713
  // A bare number can't marshal over JNI into the native String setter.
3730
3714
  value = value == null ? '' : String(value);
3731
3715
  if (__ANDROID__) {
3732
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridAutoRows(this.nativeView, value);
3716
+ nodeHelper().setGridAutoRows(this.nativeView, value);
3733
3717
  }
3734
3718
  if (__APPLE__) {
3735
3719
  this.nativeView.style.gridAutoRows = value;
@@ -3743,7 +3727,7 @@ export class Style {
3743
3727
  return '';
3744
3728
  }
3745
3729
  if (__ANDROID__) {
3746
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridAutoColumns(this.nativeView);
3730
+ return nodeHelper().getGridAutoColumns(this.nativeView);
3747
3731
  }
3748
3732
  if (__APPLE__) {
3749
3733
  return this.nativeView.style.gridAutoColumns;
@@ -3757,7 +3741,7 @@ export class Style {
3757
3741
  // See gridAutoRows above.
3758
3742
  value = value == null ? '' : String(value);
3759
3743
  if (__ANDROID__) {
3760
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridAutoColumns(this.nativeView, value);
3744
+ nodeHelper().setGridAutoColumns(this.nativeView, value);
3761
3745
  }
3762
3746
  if (__APPLE__) {
3763
3747
  this.nativeView.style.gridAutoColumns = value;
@@ -3805,7 +3789,7 @@ export class Style {
3805
3789
  // See gridAutoRows above.
3806
3790
  value = value == null ? '' : String(value);
3807
3791
  if (__ANDROID__) {
3808
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridColumn(this.nativeView, value);
3792
+ nodeHelper().setGridColumn(this.nativeView, value);
3809
3793
  }
3810
3794
  if (__APPLE__) {
3811
3795
  this.nativeView.style.gridColumn = value;
@@ -3819,7 +3803,7 @@ export class Style {
3819
3803
  return '';
3820
3804
  }
3821
3805
  if (__ANDROID__) {
3822
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridColumn(this.nativeView);
3806
+ return nodeHelper().getGridColumn(this.nativeView);
3823
3807
  }
3824
3808
  if (__APPLE__) {
3825
3809
  return this.nativeView.style.gridColumn;
@@ -3831,7 +3815,7 @@ export class Style {
3831
3815
  return '';
3832
3816
  }
3833
3817
  if (__ANDROID__) {
3834
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridColumnStart(this.nativeView);
3818
+ return nodeHelper().getGridColumnStart(this.nativeView);
3835
3819
  }
3836
3820
  if (__APPLE__) {
3837
3821
  return this.nativeView.style.gridColumnStart;
@@ -3845,7 +3829,7 @@ export class Style {
3845
3829
  // See gridAutoRows above.
3846
3830
  value = value == null ? '' : String(value);
3847
3831
  if (__ANDROID__) {
3848
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridColumnStart(this.nativeView, value);
3832
+ nodeHelper().setGridColumnStart(this.nativeView, value);
3849
3833
  }
3850
3834
  if (__APPLE__) {
3851
3835
  this.nativeView.style.gridColumnStart = value;
@@ -3859,7 +3843,7 @@ export class Style {
3859
3843
  return '';
3860
3844
  }
3861
3845
  if (__ANDROID__) {
3862
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridColumnEnd(this.nativeView);
3846
+ return nodeHelper().getGridColumnEnd(this.nativeView);
3863
3847
  }
3864
3848
  if (__APPLE__) {
3865
3849
  return this.nativeView.style.gridColumnEnd;
@@ -3873,7 +3857,7 @@ export class Style {
3873
3857
  // See gridAutoRows above.
3874
3858
  value = value == null ? '' : String(value);
3875
3859
  if (__ANDROID__) {
3876
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridColumnEnd(this.nativeView, value);
3860
+ nodeHelper().setGridColumnEnd(this.nativeView, value);
3877
3861
  }
3878
3862
  if (__APPLE__) {
3879
3863
  this.nativeView.style.gridColumnEnd = value;
@@ -3889,7 +3873,7 @@ export class Style {
3889
3873
  // See gridAutoRows above.
3890
3874
  value = value == null ? '' : String(value);
3891
3875
  if (__ANDROID__) {
3892
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridRow(this.nativeView, value);
3876
+ nodeHelper().setGridRow(this.nativeView, value);
3893
3877
  }
3894
3878
  if (__APPLE__) {
3895
3879
  this.nativeView.style.gridRow = value;
@@ -3903,7 +3887,7 @@ export class Style {
3903
3887
  return '';
3904
3888
  }
3905
3889
  if (__ANDROID__) {
3906
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridRow(this.nativeView);
3890
+ return nodeHelper().getGridRow(this.nativeView);
3907
3891
  }
3908
3892
  if (__APPLE__) {
3909
3893
  return this.nativeView.style.gridRow;
@@ -3915,7 +3899,7 @@ export class Style {
3915
3899
  return '';
3916
3900
  }
3917
3901
  if (__ANDROID__) {
3918
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridRowStart(this.nativeView);
3902
+ return nodeHelper().getGridRowStart(this.nativeView);
3919
3903
  }
3920
3904
  if (__APPLE__) {
3921
3905
  return this.nativeView.style.gridRowStart;
@@ -3929,7 +3913,7 @@ export class Style {
3929
3913
  // See gridAutoRows above.
3930
3914
  value = value == null ? '' : String(value);
3931
3915
  if (__ANDROID__) {
3932
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridRowStart(this.nativeView, value);
3916
+ nodeHelper().setGridRowStart(this.nativeView, value);
3933
3917
  }
3934
3918
  if (__APPLE__) {
3935
3919
  this.nativeView.style.gridRowStart = value;
@@ -3943,7 +3927,7 @@ export class Style {
3943
3927
  return '';
3944
3928
  }
3945
3929
  if (__ANDROID__) {
3946
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridRowEnd(this.nativeView);
3930
+ return nodeHelper().getGridRowEnd(this.nativeView);
3947
3931
  }
3948
3932
  if (__APPLE__) {
3949
3933
  return this.nativeView.style.gridRowEnd;
@@ -3957,7 +3941,7 @@ export class Style {
3957
3941
  // See gridAutoRows above.
3958
3942
  value = value == null ? '' : String(value);
3959
3943
  if (__ANDROID__) {
3960
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridRowEnd(this.nativeView, value);
3944
+ nodeHelper().setGridRowEnd(this.nativeView, value);
3961
3945
  }
3962
3946
  if (__APPLE__) {
3963
3947
  this.nativeView.style.gridRowEnd = value;
@@ -3973,7 +3957,7 @@ export class Style {
3973
3957
  // See gridAutoRows above.
3974
3958
  value = value == null ? '' : String(value);
3975
3959
  if (__ANDROID__) {
3976
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridArea(this.nativeView, value);
3960
+ nodeHelper().setGridArea(this.nativeView, value);
3977
3961
  }
3978
3962
  if (__APPLE__) {
3979
3963
  this.nativeView.style.gridArea = value;
@@ -3987,7 +3971,7 @@ export class Style {
3987
3971
  return '';
3988
3972
  }
3989
3973
  if (__ANDROID__) {
3990
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridArea(this.nativeView);
3974
+ return nodeHelper().getGridArea(this.nativeView);
3991
3975
  }
3992
3976
  if (__APPLE__) {
3993
3977
  return this.nativeView.style.gridArea;
@@ -4001,7 +3985,7 @@ export class Style {
4001
3985
  // null clears the template; also guards against a bare number (see gridAutoRows above).
4002
3986
  value = value == null ? '' : String(value);
4003
3987
  if (__ANDROID__) {
4004
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridTemplateRows(this.nativeView, value);
3988
+ nodeHelper().setGridTemplateRows(this.nativeView, value);
4005
3989
  }
4006
3990
  if (__APPLE__) {
4007
3991
  this.nativeView.style.gridTemplateRows = value;
@@ -4015,7 +3999,7 @@ export class Style {
4015
3999
  return '';
4016
4000
  }
4017
4001
  if (__ANDROID__) {
4018
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridTemplateRows(this.nativeView);
4002
+ return nodeHelper().getGridTemplateRows(this.nativeView);
4019
4003
  }
4020
4004
  if (__APPLE__) {
4021
4005
  return this.nativeView.style.gridTemplateRows;
@@ -4027,7 +4011,7 @@ export class Style {
4027
4011
  return '';
4028
4012
  }
4029
4013
  if (__ANDROID__) {
4030
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridTemplateColumns(this.nativeView);
4014
+ return nodeHelper().getGridTemplateColumns(this.nativeView);
4031
4015
  }
4032
4016
  if (__APPLE__) {
4033
4017
  return this.nativeView.style.gridTemplateColumns;
@@ -4041,7 +4025,7 @@ export class Style {
4041
4025
  // null clears the template; also guards against a bare number (see gridAutoRows above).
4042
4026
  value = value == null ? '' : String(value);
4043
4027
  if (__ANDROID__) {
4044
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridTemplateColumns(this.nativeView, value);
4028
+ nodeHelper().setGridTemplateColumns(this.nativeView, value);
4045
4029
  }
4046
4030
  if (__APPLE__) {
4047
4031
  this.nativeView.style.gridTemplateColumns = value;
@@ -4055,7 +4039,7 @@ export class Style {
4055
4039
  return '';
4056
4040
  }
4057
4041
  if (__ANDROID__) {
4058
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getGridTemplateAreas(this.nativeView);
4042
+ return nodeHelper().getGridTemplateAreas(this.nativeView);
4059
4043
  }
4060
4044
  if (__APPLE__) {
4061
4045
  return this.nativeView.style.gridTemplateAreas;
@@ -4069,7 +4053,7 @@ export class Style {
4069
4053
  // null clears it; also guards against a bare number (see gridAutoRows above).
4070
4054
  value = value == null ? '' : String(value);
4071
4055
  if (__ANDROID__) {
4072
- org.nativescript.mason.masonkit.NodeHelper.getShared().setGridTemplateAreas(this.nativeView, value);
4056
+ nodeHelper().setGridTemplateAreas(this.nativeView, value);
4073
4057
  }
4074
4058
  if (__APPLE__) {
4075
4059
  this.nativeView.style.gridTemplateAreas = value;
@@ -4241,7 +4225,8 @@ export class Style {
4241
4225
  // length — TYPE 0 means "multiply by the resolved font size".
4242
4226
  const unitless = /^-?[\d.]+$/.test(t);
4243
4227
  this.prepareMut();
4244
- setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, unitless ? finite(parseFloat(t) || 0) : tokenToDevicePx(t, parseFloat(t) || 0));
4228
+ // An absolute line-height is stored in CSS px (iOS points, Android dip), as the number path.
4229
+ setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, unitless ? finite(parseFloat(t) || 0) : layout.toDeviceIndependentPixels(tokenToDevicePx(t, parseFloat(t) || 0)));
4245
4230
  setUint8(this.style_view, StyleKeys.LINE_HEIGHT_STATE, 1);
4246
4231
  setUint8(this.style_view, StyleKeys.LINE_HEIGHT_TYPE, unitless ? 0 : 1);
4247
4232
  this.commitState(StateKeys.LINE_HEIGHT);
@@ -4259,14 +4244,14 @@ export class Style {
4259
4244
  switch (value.unit) {
4260
4245
  case 'dip':
4261
4246
  this.prepareMut();
4262
- setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, layout.toDevicePixels(value.value));
4247
+ setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, value.value);
4263
4248
  setUint8(this.style_view, StyleKeys.LINE_HEIGHT_STATE, 1);
4264
4249
  setUint8(this.style_view, StyleKeys.LINE_HEIGHT_TYPE, 1);
4265
4250
  this.commitState(StateKeys.LINE_HEIGHT);
4266
4251
  break;
4267
4252
  case 'px':
4268
4253
  this.prepareMut();
4269
- setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, layout.toDevicePixels(value.value));
4254
+ setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, layout.toDeviceIndependentPixels(value.value));
4270
4255
  setUint8(this.style_view, StyleKeys.LINE_HEIGHT_STATE, 1);
4271
4256
  setUint8(this.style_view, StyleKeys.LINE_HEIGHT_TYPE, 1);
4272
4257
  this.commitState(StateKeys.LINE_HEIGHT);
@@ -4421,7 +4406,7 @@ export class Style {
4421
4406
  return '';
4422
4407
  }
4423
4408
  if (__ANDROID__) {
4424
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackground(this.nativeView);
4409
+ return nodeHelper().getBackground(this.nativeView);
4425
4410
  }
4426
4411
  if (__APPLE__) {
4427
4412
  return this.nativeView.style.background;
@@ -4430,14 +4415,14 @@ export class Style {
4430
4415
  }
4431
4416
  set background(value) {
4432
4417
  value = this.coerceCssStringValue(value);
4433
- this.setPseudoCssStringValue('background', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackground(this.nativeView, value), () => (this.nativeView.style.background = value));
4418
+ this.setPseudoCssStringValue('background', value, () => nodeHelper().setBackground(this.nativeView, value), () => (this.nativeView.style.background = value));
4434
4419
  }
4435
4420
  get backgroundImage() {
4436
4421
  if (!this.nativeView) {
4437
4422
  return '';
4438
4423
  }
4439
4424
  if (__ANDROID__) {
4440
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundImage(this.nativeView);
4425
+ return nodeHelper().getBackgroundImage(this.nativeView);
4441
4426
  }
4442
4427
  if (__APPLE__) {
4443
4428
  return this.nativeView.style.backgroundImage;
@@ -4446,14 +4431,14 @@ export class Style {
4446
4431
  }
4447
4432
  set backgroundImage(value) {
4448
4433
  value = this.coerceCssStringValue(value);
4449
- this.setPseudoCssStringValue('background-image', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundImage(this.nativeView, value), () => (this.nativeView.style.backgroundImage = value));
4434
+ this.setPseudoCssStringValue('background-image', value, () => nodeHelper().setBackgroundImage(this.nativeView, value), () => (this.nativeView.style.backgroundImage = value));
4450
4435
  }
4451
4436
  get backgroundRepeat() {
4452
4437
  if (!this.nativeView) {
4453
4438
  return '';
4454
4439
  }
4455
4440
  if (__ANDROID__) {
4456
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundRepeat(this.nativeView);
4441
+ return nodeHelper().getBackgroundRepeat(this.nativeView);
4457
4442
  }
4458
4443
  if (__APPLE__) {
4459
4444
  return this.nativeView.style.backgroundRepeat;
@@ -4462,14 +4447,14 @@ export class Style {
4462
4447
  }
4463
4448
  set backgroundRepeat(value) {
4464
4449
  value = this.coerceCssStringValue(value);
4465
- this.setPseudoCssStringValue('background-repeat', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundRepeat(this.nativeView, value), () => (this.nativeView.style.backgroundRepeat = value));
4450
+ this.setPseudoCssStringValue('background-repeat', value, () => nodeHelper().setBackgroundRepeat(this.nativeView, value), () => (this.nativeView.style.backgroundRepeat = value));
4466
4451
  }
4467
4452
  get backgroundPosition() {
4468
4453
  if (!this.nativeView) {
4469
4454
  return '';
4470
4455
  }
4471
4456
  if (__ANDROID__) {
4472
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundPosition(this.nativeView);
4457
+ return nodeHelper().getBackgroundPosition(this.nativeView);
4473
4458
  }
4474
4459
  if (__APPLE__) {
4475
4460
  return this.nativeView.style.backgroundPosition;
@@ -4478,14 +4463,14 @@ export class Style {
4478
4463
  }
4479
4464
  set backgroundPosition(value) {
4480
4465
  value = this.coerceCssStringValue(value);
4481
- this.setPseudoCssStringValue('background-position', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundPosition(this.nativeView, value), () => (this.nativeView.style.backgroundPosition = value));
4466
+ this.setPseudoCssStringValue('background-position', value, () => nodeHelper().setBackgroundPosition(this.nativeView, value), () => (this.nativeView.style.backgroundPosition = value));
4482
4467
  }
4483
4468
  get backgroundSize() {
4484
4469
  if (!this.nativeView) {
4485
4470
  return '';
4486
4471
  }
4487
4472
  if (__ANDROID__) {
4488
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundSize(this.nativeView);
4473
+ return nodeHelper().getBackgroundSize(this.nativeView);
4489
4474
  }
4490
4475
  if (__APPLE__) {
4491
4476
  return this.nativeView.style.backgroundSize;
@@ -4494,14 +4479,14 @@ export class Style {
4494
4479
  }
4495
4480
  set backgroundSize(value) {
4496
4481
  value = this.coerceCssStringValue(value);
4497
- this.setPseudoCssStringValue('background-size', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundSize(this.nativeView, value), () => (this.nativeView.style.backgroundSize = value));
4482
+ this.setPseudoCssStringValue('background-size', value, () => nodeHelper().setBackgroundSize(this.nativeView, value), () => (this.nativeView.style.backgroundSize = value));
4498
4483
  }
4499
4484
  get backgroundClip() {
4500
4485
  if (!this.nativeView) {
4501
4486
  return '';
4502
4487
  }
4503
4488
  if (__ANDROID__) {
4504
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundClip(this.nativeView);
4489
+ return nodeHelper().getBackgroundClip(this.nativeView);
4505
4490
  }
4506
4491
  if (__APPLE__) {
4507
4492
  return this.nativeView.style.backgroundClip;
@@ -4510,14 +4495,14 @@ export class Style {
4510
4495
  }
4511
4496
  set backgroundClip(value) {
4512
4497
  value = this.coerceCssStringValue(value);
4513
- this.setPseudoCssStringValue('background-clip', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundClip(this.nativeView, value), () => (this.nativeView.style.backgroundClip = value));
4498
+ this.setPseudoCssStringValue('background-clip', value, () => nodeHelper().setBackgroundClip(this.nativeView, value), () => (this.nativeView.style.backgroundClip = value));
4514
4499
  }
4515
4500
  get backgroundPositionX() {
4516
4501
  if (!this.nativeView) {
4517
4502
  return '';
4518
4503
  }
4519
4504
  if (__ANDROID__) {
4520
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundPositionX(this.nativeView);
4505
+ return nodeHelper().getBackgroundPositionX(this.nativeView);
4521
4506
  }
4522
4507
  if (__APPLE__) {
4523
4508
  return this.nativeView.style.backgroundPositionX;
@@ -4526,14 +4511,14 @@ export class Style {
4526
4511
  }
4527
4512
  set backgroundPositionX(value) {
4528
4513
  value = cssInitialIfReset(this.coerceCssStringValue(value), '0%');
4529
- this.setPseudoCssStringValue('background-position-x', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundPositionX(this.nativeView, value), () => (this.nativeView.style.backgroundPositionX = value));
4514
+ this.setPseudoCssStringValue('background-position-x', value, () => nodeHelper().setBackgroundPositionX(this.nativeView, value), () => (this.nativeView.style.backgroundPositionX = value));
4530
4515
  }
4531
4516
  get backgroundPositionY() {
4532
4517
  if (!this.nativeView) {
4533
4518
  return '';
4534
4519
  }
4535
4520
  if (__ANDROID__) {
4536
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundPositionY(this.nativeView);
4521
+ return nodeHelper().getBackgroundPositionY(this.nativeView);
4537
4522
  }
4538
4523
  if (__APPLE__) {
4539
4524
  return this.nativeView.style.backgroundPositionY;
@@ -4542,14 +4527,14 @@ export class Style {
4542
4527
  }
4543
4528
  set backgroundPositionY(value) {
4544
4529
  value = cssInitialIfReset(this.coerceCssStringValue(value), '0%');
4545
- this.setPseudoCssStringValue('background-position-y', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundPositionY(this.nativeView, value), () => (this.nativeView.style.backgroundPositionY = value));
4530
+ this.setPseudoCssStringValue('background-position-y', value, () => nodeHelper().setBackgroundPositionY(this.nativeView, value), () => (this.nativeView.style.backgroundPositionY = value));
4546
4531
  }
4547
4532
  get backgroundOrigin() {
4548
4533
  if (!this.nativeView) {
4549
4534
  return '';
4550
4535
  }
4551
4536
  if (__ANDROID__) {
4552
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundOrigin(this.nativeView);
4537
+ return nodeHelper().getBackgroundOrigin(this.nativeView);
4553
4538
  }
4554
4539
  if (__APPLE__) {
4555
4540
  return this.nativeView.style.backgroundOrigin;
@@ -4558,14 +4543,14 @@ export class Style {
4558
4543
  }
4559
4544
  set backgroundOrigin(value) {
4560
4545
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'padding-box');
4561
- this.setPseudoCssStringValue('background-origin', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundOrigin(this.nativeView, value), () => (this.nativeView.style.backgroundOrigin = value));
4546
+ this.setPseudoCssStringValue('background-origin', value, () => nodeHelper().setBackgroundOrigin(this.nativeView, value), () => (this.nativeView.style.backgroundOrigin = value));
4562
4547
  }
4563
4548
  get backgroundAttachment() {
4564
4549
  if (!this.nativeView) {
4565
4550
  return '';
4566
4551
  }
4567
4552
  if (__ANDROID__) {
4568
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundAttachment(this.nativeView);
4553
+ return nodeHelper().getBackgroundAttachment(this.nativeView);
4569
4554
  }
4570
4555
  if (__APPLE__) {
4571
4556
  return this.nativeView.style.backgroundAttachment;
@@ -4574,14 +4559,14 @@ export class Style {
4574
4559
  }
4575
4560
  set backgroundAttachment(value) {
4576
4561
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'scroll');
4577
- this.setPseudoCssStringValue('background-attachment', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundAttachment(this.nativeView, value), () => (this.nativeView.style.backgroundAttachment = value));
4562
+ this.setPseudoCssStringValue('background-attachment', value, () => nodeHelper().setBackgroundAttachment(this.nativeView, value), () => (this.nativeView.style.backgroundAttachment = value));
4578
4563
  }
4579
4564
  get backgroundBlendMode() {
4580
4565
  if (!this.nativeView) {
4581
4566
  return '';
4582
4567
  }
4583
4568
  if (__ANDROID__) {
4584
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundBlendMode(this.nativeView);
4569
+ return nodeHelper().getBackgroundBlendMode(this.nativeView);
4585
4570
  }
4586
4571
  if (__APPLE__) {
4587
4572
  return this.nativeView.style.backgroundBlendMode;
@@ -4590,17 +4575,27 @@ export class Style {
4590
4575
  }
4591
4576
  set backgroundBlendMode(value) {
4592
4577
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'normal');
4593
- this.setPseudoCssStringValue('background-blend-mode', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundBlendMode(this.nativeView, value), () => (this.nativeView.style.backgroundBlendMode = value));
4578
+ this.setPseudoCssStringValue('background-blend-mode', value, () => nodeHelper().setBackgroundBlendMode(this.nativeView, value), () => (this.nativeView.style.backgroundBlendMode = value));
4579
+ }
4580
+ hasBorderRadius() {
4581
+ const view = this.style_view;
4582
+ if (!view)
4583
+ return true;
4584
+ for (const [, keys] of RADIUS_KEYS) {
4585
+ if (getFloat32(view, keys.xValue) !== 0 || getFloat32(view, keys.yValue) !== 0)
4586
+ return true;
4587
+ }
4588
+ return false;
4594
4589
  }
4595
4590
  get borderRadius() {
4596
4591
  if (!this.nativeView) {
4597
4592
  return '';
4598
4593
  }
4599
4594
  if (__ANDROID__) {
4600
- return this._borderRadiusCss ?? org.nativescript.mason.masonkit.NodeHelper.getShared().getBorderRadius(this.nativeView);
4595
+ return this._borderRadiusCss ?? nodeHelper().getBorderRadius(this.nativeView);
4601
4596
  }
4602
4597
  if (__APPLE__) {
4603
- return this.nativeView.style.borderRadius;
4598
+ return this._borderRadiusCss ?? this.nativeView.style.borderRadius;
4604
4599
  }
4605
4600
  if (__WINDOWS__ && this.style_view) {
4606
4601
  // Read back so a single corner longhand keeps the other three instead of resetting them to 0.
@@ -4613,12 +4608,29 @@ export class Style {
4613
4608
  }
4614
4609
  set borderRadius(value) {
4615
4610
  value = this.coerceCssStringValue(value);
4616
- if (__ANDROID__ && this.nativeView && !this._pseudo && this._writeBorderRadius(value, deviceScale())) {
4611
+ if ((__ANDROID__ || __APPLE__) && this.nativeView && !this._pseudo && this._writeBorderRadius(value, deviceScale())) {
4617
4612
  return;
4618
4613
  }
4619
4614
  if (!this._pseudo)
4620
4615
  this._borderRadiusCss = undefined;
4621
- this.setPseudoCssStringValue('border-radius', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderRadius(this.nativeView, value), () => (this.nativeView.style.borderRadius = value));
4616
+ this.setPseudoCssStringValue('border-radius', value, () => nodeHelper().setBorderRadius(this.nativeView, value), () => (this.nativeView.style.borderRadius = value));
4617
+ }
4618
+ _writeCornerRadius(corner, radius, shorthand, scale = deviceScale()) {
4619
+ if (!this.nativeView || this._pseudo || !this.style_view)
4620
+ return false;
4621
+ const h = fastRadiusTokens(radius[0], scale);
4622
+ const v = radius[1] === radius[0] ? h : fastRadiusTokens(radius[1], scale);
4623
+ if (!h || h.length !== 1 || !v || v.length !== 1)
4624
+ return false;
4625
+ this._borderRadiusCss = shorthand;
4626
+ this.prepareMut();
4627
+ const keys = RADIUS_KEYS[corner][1];
4628
+ setUint8(this.style_view, keys.xType, h[0].type);
4629
+ setFloat32(this.style_view, keys.xValue, h[0].value);
4630
+ setUint8(this.style_view, keys.yType, v[0].type);
4631
+ setFloat32(this.style_view, keys.yValue, v[0].value);
4632
+ this.commitState(StateKeys.BORDER_RADIUS);
4633
+ return true;
4622
4634
  }
4623
4635
  _writeBorderRadius(value, scale) {
4624
4636
  let cleaned = value.trim();
@@ -4709,7 +4721,7 @@ export class Style {
4709
4721
  if (!this.nativeView)
4710
4722
  return '';
4711
4723
  if (__ANDROID__) {
4712
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getFontFamily(this.nativeView);
4724
+ return nodeHelper().getFontFamily(this.nativeView);
4713
4725
  }
4714
4726
  if (__APPLE__) {
4715
4727
  return this.nativeView.style.fontFamily;
@@ -4720,18 +4732,18 @@ export class Style {
4720
4732
  // style-buffer field, so it can't be written through the shared buffer.
4721
4733
  set fontFamily(value) {
4722
4734
  value = this.coerceCssStringValue(value);
4723
- this.setPseudoCssStringValue('font-family', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setFontFamily(this.nativeView, value), () => (this.nativeView.style.fontFamily = value));
4735
+ this.setPseudoCssStringValue('font-family', value, () => nodeHelper().setFontFamily(this.nativeView, value), () => (this.nativeView.style.fontFamily = value));
4724
4736
  }
4725
4737
  set textDecoration(value) {
4726
4738
  value = this.coerceCssStringValue(value);
4727
- this.setPseudoCssStringValue('text-decoration', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTextDecoration(this.nativeView, value), () => this.nativeView.style.setTextDecoration(value));
4739
+ this.setPseudoCssStringValue('text-decoration', value, () => nodeHelper().setTextDecoration(this.nativeView, value), () => this.nativeView.style.setTextDecoration(value));
4728
4740
  }
4729
4741
  get textDecorationLine() {
4730
4742
  if (!this.nativeView) {
4731
4743
  return '';
4732
4744
  }
4733
4745
  if (__ANDROID__) {
4734
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getTextDecorationLine(this.nativeView);
4746
+ return nodeHelper().getTextDecorationLine(this.nativeView);
4735
4747
  }
4736
4748
  if (__APPLE__) {
4737
4749
  return this.nativeView.style.textDecorationLine;
@@ -4743,14 +4755,14 @@ export class Style {
4743
4755
  }
4744
4756
  set textDecorationLine(value) {
4745
4757
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'none');
4746
- this.setPseudoCssStringValue('text-decoration-line', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTextDecorationLine(this.nativeView, value), () => (this.nativeView.style.textDecorationLine = value));
4758
+ this.setPseudoCssStringValue('text-decoration-line', value, () => nodeHelper().setTextDecorationLine(this.nativeView, value), () => (this.nativeView.style.textDecorationLine = value));
4747
4759
  }
4748
4760
  get textDecorationStyle() {
4749
4761
  if (!this.nativeView) {
4750
4762
  return '';
4751
4763
  }
4752
4764
  if (__ANDROID__) {
4753
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getTextDecorationStyle(this.nativeView);
4765
+ return nodeHelper().getTextDecorationStyle(this.nativeView);
4754
4766
  }
4755
4767
  if (__APPLE__) {
4756
4768
  return this.nativeView.style.textDecorationStyle;
@@ -4762,14 +4774,14 @@ export class Style {
4762
4774
  }
4763
4775
  set textDecorationStyle(value) {
4764
4776
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'solid');
4765
- this.setPseudoCssStringValue('text-decoration-style', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTextDecorationStyle(this.nativeView, value), () => (this.nativeView.style.textDecorationStyle = value));
4777
+ this.setPseudoCssStringValue('text-decoration-style', value, () => nodeHelper().setTextDecorationStyle(this.nativeView, value), () => (this.nativeView.style.textDecorationStyle = value));
4766
4778
  }
4767
4779
  get textDecorationColor() {
4768
4780
  if (!this.nativeView) {
4769
4781
  return '';
4770
4782
  }
4771
4783
  if (__ANDROID__) {
4772
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getTextDecorationColor(this.nativeView);
4784
+ return nodeHelper().getTextDecorationColor(this.nativeView);
4773
4785
  }
4774
4786
  if (__APPLE__) {
4775
4787
  return this.nativeView.style.textDecorationColor;
@@ -4782,14 +4794,14 @@ export class Style {
4782
4794
  }
4783
4795
  set textDecorationColor(value) {
4784
4796
  value = cssInitialIfReset(this.coerceCssStringValue(value), 'currentcolor');
4785
- this.setPseudoCssStringValue('text-decoration-color', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTextDecorationColor(this.nativeView, value), () => (this.nativeView.style.textDecorationColor = value));
4797
+ this.setPseudoCssStringValue('text-decoration-color', value, () => nodeHelper().setTextDecorationColor(this.nativeView, value), () => (this.nativeView.style.textDecorationColor = value));
4786
4798
  }
4787
4799
  get border() {
4788
4800
  if (!this.nativeView) {
4789
4801
  return '';
4790
4802
  }
4791
4803
  if (__ANDROID__) {
4792
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBorder(this.nativeView);
4804
+ return nodeHelper().getBorder(this.nativeView);
4793
4805
  }
4794
4806
  if (__APPLE__) {
4795
4807
  return this.nativeView.style.border;
@@ -4798,13 +4810,13 @@ export class Style {
4798
4810
  }
4799
4811
  set border(value) {
4800
4812
  value = this.coerceCssStringValue(value);
4801
- this.setPseudoCssStringValue('border', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorder(this.nativeView, value), () => (this.nativeView.style.border = value));
4813
+ this.setPseudoCssStringValue('border', value, () => nodeHelper().setBorder(this.nativeView, value), () => (this.nativeView.style.border = value));
4802
4814
  }
4803
4815
  get paddingCss() {
4804
4816
  if (!this.nativeView)
4805
4817
  return '';
4806
4818
  if (__ANDROID__) {
4807
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getPaddingCssValue(this.nativeView);
4819
+ return nodeHelper().getPaddingCssValue(this.nativeView);
4808
4820
  }
4809
4821
  if (__APPLE__) {
4810
4822
  return this.nativeView.style.paddingCss;
@@ -4815,13 +4827,13 @@ export class Style {
4815
4827
  // a bare number is dip, matching other numeric setters; Android's
4816
4828
  // native parser treats "px" as unscaled device pixels, "dip" as scaled
4817
4829
  const strValue = typeof value === 'number' ? `${value}dip` : value;
4818
- this.setPseudoCssStringValue('padding', strValue, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setPaddingCss(this.nativeView, strValue), () => (this.nativeView.style.paddingCss = strValue));
4830
+ this.setPseudoCssStringValue('padding', strValue, () => nodeHelper().setPaddingCss(this.nativeView, strValue), () => (this.nativeView.style.paddingCss = strValue));
4819
4831
  }
4820
4832
  get marginCss() {
4821
4833
  if (!this.nativeView)
4822
4834
  return '';
4823
4835
  if (__ANDROID__) {
4824
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getMarginCssValue(this.nativeView);
4836
+ return nodeHelper().getMarginCssValue(this.nativeView);
4825
4837
  }
4826
4838
  if (__APPLE__) {
4827
4839
  return this.nativeView.style.marginCss;
@@ -4831,13 +4843,13 @@ export class Style {
4831
4843
  set marginCss(value) {
4832
4844
  // See the comment on `paddingCss` above — same dip-vs-px mislabeling fix.
4833
4845
  const strValue = typeof value === 'number' ? `${value}dip` : value;
4834
- this.setPseudoCssStringValue('margin', strValue, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setMarginCss(this.nativeView, strValue), () => (this.nativeView.style.marginCss = strValue));
4846
+ this.setPseudoCssStringValue('margin', strValue, () => nodeHelper().setMarginCss(this.nativeView, strValue), () => (this.nativeView.style.marginCss = strValue));
4835
4847
  }
4836
4848
  get insetCss() {
4837
4849
  if (!this.nativeView)
4838
4850
  return '';
4839
4851
  if (__ANDROID__) {
4840
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getInsetCssValue(this.nativeView);
4852
+ return nodeHelper().getInsetCssValue(this.nativeView);
4841
4853
  }
4842
4854
  if (__APPLE__) {
4843
4855
  return this.nativeView.style.insetCss;
@@ -4847,42 +4859,42 @@ export class Style {
4847
4859
  set insetCss(value) {
4848
4860
  // See the comment on `paddingCss` above — same dip-vs-px mislabeling fix.
4849
4861
  const strValue = typeof value === 'number' ? `${value}dip` : value;
4850
- this.setPseudoCssStringValue('inset', strValue, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setInsetCss(this.nativeView, strValue), () => (this.nativeView.style.insetCss = strValue));
4862
+ this.setPseudoCssStringValue('inset', strValue, () => nodeHelper().setInsetCss(this.nativeView, strValue), () => (this.nativeView.style.insetCss = strValue));
4851
4863
  }
4852
4864
  get borderLeft() {
4853
4865
  return '';
4854
4866
  }
4855
4867
  set borderLeft(value) {
4856
4868
  value = this.coerceCssStringValue(value);
4857
- this.setPseudoCssStringValue('border-left', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderLeft(this.nativeView, value), () => (this.nativeView.style.borderLeft = value));
4869
+ this.setPseudoCssStringValue('border-left', value, () => nodeHelper().setBorderLeft(this.nativeView, value), () => (this.nativeView.style.borderLeft = value));
4858
4870
  }
4859
4871
  get borderTop() {
4860
4872
  return '';
4861
4873
  }
4862
4874
  set borderTop(value) {
4863
4875
  value = this.coerceCssStringValue(value);
4864
- this.setPseudoCssStringValue('border-top', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderTop(this.nativeView, value), () => (this.nativeView.style.borderTop = value));
4876
+ this.setPseudoCssStringValue('border-top', value, () => nodeHelper().setBorderTop(this.nativeView, value), () => (this.nativeView.style.borderTop = value));
4865
4877
  }
4866
4878
  get borderRight() {
4867
4879
  return '';
4868
4880
  }
4869
4881
  set borderRight(value) {
4870
4882
  value = this.coerceCssStringValue(value);
4871
- this.setPseudoCssStringValue('border-right', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderRight(this.nativeView, value), () => (this.nativeView.style.borderRight = value));
4883
+ this.setPseudoCssStringValue('border-right', value, () => nodeHelper().setBorderRight(this.nativeView, value), () => (this.nativeView.style.borderRight = value));
4872
4884
  }
4873
4885
  get borderBottom() {
4874
4886
  return '';
4875
4887
  }
4876
4888
  set borderBottom(value) {
4877
4889
  value = this.coerceCssStringValue(value);
4878
- this.setPseudoCssStringValue('border-bottom', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderBottom(this.nativeView, value), () => (this.nativeView.style.borderBottom = value));
4890
+ this.setPseudoCssStringValue('border-bottom', value, () => nodeHelper().setBorderBottom(this.nativeView, value), () => (this.nativeView.style.borderBottom = value));
4879
4891
  }
4880
4892
  get filter() {
4881
4893
  if (!this.nativeView) {
4882
4894
  return '';
4883
4895
  }
4884
4896
  if (__ANDROID__) {
4885
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getFilter(this.nativeView);
4897
+ return nodeHelper().getFilter(this.nativeView);
4886
4898
  }
4887
4899
  if (__APPLE__) {
4888
4900
  return this.nativeView.style.filter;
@@ -4891,14 +4903,14 @@ export class Style {
4891
4903
  }
4892
4904
  set filter(value) {
4893
4905
  value = this.coerceCssStringValue(value);
4894
- this.setPseudoCssStringValue('filter', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setFilter(this.nativeView, value), () => (this.nativeView.style.filter = value));
4906
+ this.setPseudoCssStringValue('filter', value, () => nodeHelper().setFilter(this.nativeView, value), () => (this.nativeView.style.filter = value));
4895
4907
  }
4896
4908
  get boxShadow() {
4897
4909
  if (!this.nativeView) {
4898
4910
  return '';
4899
4911
  }
4900
4912
  if (__ANDROID__) {
4901
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBoxShadow(this.nativeView);
4913
+ return nodeHelper().getBoxShadow(this.nativeView);
4902
4914
  }
4903
4915
  if (__APPLE__) {
4904
4916
  return this.nativeView.style.boxShadow;
@@ -4913,14 +4925,14 @@ export class Style {
4913
4925
  }
4914
4926
  set boxShadow(value) {
4915
4927
  value = this.coerceCssStringValue(value);
4916
- this.setPseudoCssStringValue('box-shadow', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBoxShadow(this.nativeView, value), () => (this.nativeView.style.boxShadow = value));
4928
+ this.setPseudoCssStringValue('box-shadow', value, () => nodeHelper().setBoxShadow(this.nativeView, value), () => (this.nativeView.style.boxShadow = value));
4917
4929
  }
4918
4930
  get transform() {
4919
4931
  if (!this.nativeView) {
4920
4932
  return '';
4921
4933
  }
4922
4934
  if (__ANDROID__) {
4923
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getTransform(this.nativeView);
4935
+ return nodeHelper().getTransform(this.nativeView);
4924
4936
  }
4925
4937
  if (__APPLE__) {
4926
4938
  return this.nativeView.style.transform;
@@ -4929,7 +4941,7 @@ export class Style {
4929
4941
  }
4930
4942
  set transform(value) {
4931
4943
  value = this.coerceCssStringValue(value);
4932
- this.setPseudoCssStringValue('transform', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTransform(this.nativeView, value), () => (this.nativeView.style.transform = value));
4944
+ this.setPseudoCssStringValue('transform', value, () => nodeHelper().setTransform(this.nativeView, value), () => (this.nativeView.style.transform = value));
4933
4945
  }
4934
4946
  get verticalAlign() {
4935
4947
  const isPercent = getUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET) == 1;
@@ -5084,7 +5096,7 @@ export class Style {
5084
5096
  return '';
5085
5097
  }
5086
5098
  if (__ANDROID__) {
5087
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getTextShadow(this.nativeView);
5099
+ return nodeHelper().getTextShadow(this.nativeView);
5088
5100
  }
5089
5101
  if (__APPLE__) {
5090
5102
  return this.nativeView.style.textShadow;
@@ -5093,7 +5105,7 @@ export class Style {
5093
5105
  }
5094
5106
  set textShadow(value) {
5095
5107
  value = this.coerceCssStringValue(value);
5096
- this.setPseudoCssStringValue('text-shadow', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTextShadow(this.nativeView, value), () => (this.nativeView.style.textShadow = value));
5108
+ this.setPseudoCssStringValue('text-shadow', value, () => nodeHelper().setTextShadow(this.nativeView, value), () => (this.nativeView.style.textShadow = value));
5097
5109
  }
5098
5110
  get zIndex() {
5099
5111
  return getInt32(this.style_view, StyleKeys.Z_INDEX);
@@ -5175,14 +5187,14 @@ export class Style {
5175
5187
  }
5176
5188
  set cornerShape(value) {
5177
5189
  value = this.coerceCssStringValue(value);
5178
- this.setPseudoCssStringValue('corner-shape', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShape(this.nativeView, value), () => (this.nativeView.style.cornerShape = value));
5190
+ this.setPseudoCssStringValue('corner-shape', value, () => nodeHelper().setCornerShape(this.nativeView, value), () => (this.nativeView.style.cornerShape = value));
5179
5191
  }
5180
5192
  get cornerShape() {
5181
5193
  if (!this.nativeView) {
5182
5194
  return '';
5183
5195
  }
5184
5196
  if (__ANDROID__) {
5185
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShape(this.nativeView);
5197
+ return nodeHelper().getCornerShape(this.nativeView);
5186
5198
  }
5187
5199
  if (__APPLE__) {
5188
5200
  return this.nativeView.style.cornerShape;
@@ -5193,7 +5205,7 @@ export class Style {
5193
5205
  if (!this.nativeView)
5194
5206
  return '';
5195
5207
  if (__ANDROID__) {
5196
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeTopLeft(this.nativeView);
5208
+ return nodeHelper().getCornerShapeTopLeft(this.nativeView);
5197
5209
  }
5198
5210
  if (__APPLE__) {
5199
5211
  return this.nativeView.style.cornerShapeTopLeft;
@@ -5202,13 +5214,13 @@ export class Style {
5202
5214
  }
5203
5215
  set cornerShapeTopLeft(value) {
5204
5216
  value = this.coerceCssStringValue(value);
5205
- this.setPseudoCssStringValue('corner-shape-top-left', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeTopLeft(this.nativeView, value), () => (this.nativeView.style.cornerShapeTopLeft = value));
5217
+ this.setPseudoCssStringValue('corner-shape-top-left', value, () => nodeHelper().setCornerShapeTopLeft(this.nativeView, value), () => (this.nativeView.style.cornerShapeTopLeft = value));
5206
5218
  }
5207
5219
  get cornerShapeTopRight() {
5208
5220
  if (!this.nativeView)
5209
5221
  return '';
5210
5222
  if (__ANDROID__) {
5211
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeTopRight(this.nativeView);
5223
+ return nodeHelper().getCornerShapeTopRight(this.nativeView);
5212
5224
  }
5213
5225
  if (__APPLE__) {
5214
5226
  return this.nativeView.style.cornerShapeTopRight;
@@ -5217,13 +5229,13 @@ export class Style {
5217
5229
  }
5218
5230
  set cornerShapeTopRight(value) {
5219
5231
  value = this.coerceCssStringValue(value);
5220
- this.setPseudoCssStringValue('corner-shape-top-right', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeTopRight(this.nativeView, value), () => (this.nativeView.style.cornerShapeTopRight = value));
5232
+ this.setPseudoCssStringValue('corner-shape-top-right', value, () => nodeHelper().setCornerShapeTopRight(this.nativeView, value), () => (this.nativeView.style.cornerShapeTopRight = value));
5221
5233
  }
5222
5234
  get cornerShapeBottomRight() {
5223
5235
  if (!this.nativeView)
5224
5236
  return '';
5225
5237
  if (__ANDROID__) {
5226
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeBottomRight(this.nativeView);
5238
+ return nodeHelper().getCornerShapeBottomRight(this.nativeView);
5227
5239
  }
5228
5240
  if (__APPLE__) {
5229
5241
  return this.nativeView.style.cornerShapeBottomRight;
@@ -5232,13 +5244,13 @@ export class Style {
5232
5244
  }
5233
5245
  set cornerShapeBottomRight(value) {
5234
5246
  value = this.coerceCssStringValue(value);
5235
- this.setPseudoCssStringValue('corner-shape-bottom-right', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeBottomRight(this.nativeView, value), () => (this.nativeView.style.cornerShapeBottomRight = value));
5247
+ this.setPseudoCssStringValue('corner-shape-bottom-right', value, () => nodeHelper().setCornerShapeBottomRight(this.nativeView, value), () => (this.nativeView.style.cornerShapeBottomRight = value));
5236
5248
  }
5237
5249
  get cornerShapeBottomLeft() {
5238
5250
  if (!this.nativeView)
5239
5251
  return '';
5240
5252
  if (__ANDROID__) {
5241
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeBottomLeft(this.nativeView);
5253
+ return nodeHelper().getCornerShapeBottomLeft(this.nativeView);
5242
5254
  }
5243
5255
  if (__APPLE__) {
5244
5256
  return this.nativeView.style.cornerShapeBottomLeft;
@@ -5247,7 +5259,7 @@ export class Style {
5247
5259
  }
5248
5260
  set cornerShapeBottomLeft(value) {
5249
5261
  value = this.coerceCssStringValue(value);
5250
- this.setPseudoCssStringValue('corner-shape-bottom-left', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeBottomLeft(this.nativeView, value), () => (this.nativeView.style.cornerShapeBottomLeft = value));
5262
+ this.setPseudoCssStringValue('corner-shape-bottom-left', value, () => nodeHelper().setCornerShapeBottomLeft(this.nativeView, value), () => (this.nativeView.style.cornerShapeBottomLeft = value));
5251
5263
  }
5252
5264
  get objectPosition() {
5253
5265
  if (!this.style_view)
@@ -5386,7 +5398,7 @@ export class Style {
5386
5398
  if (!this.nativeView)
5387
5399
  return '';
5388
5400
  if (__ANDROID__) {
5389
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBorderImage(this.nativeView);
5401
+ return nodeHelper().getBorderImage(this.nativeView);
5390
5402
  }
5391
5403
  if (__APPLE__) {
5392
5404
  return this.nativeView.style.borderImage;
@@ -5395,7 +5407,7 @@ export class Style {
5395
5407
  }
5396
5408
  set borderImage(value) {
5397
5409
  value = this.coerceCssStringValue(value);
5398
- this.setPseudoCssStringValue('border-image', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderImage(this.nativeView, value), () => (this.nativeView.style.borderImage = value));
5410
+ this.setPseudoCssStringValue('border-image', value, () => nodeHelper().setBorderImage(this.nativeView, value), () => (this.nativeView.style.borderImage = value));
5399
5411
  }
5400
5412
  set 'border-image'(value) {
5401
5413
  this.borderImage = value;
@@ -5433,7 +5445,7 @@ export class Style {
5433
5445
  if (!this.nativeView)
5434
5446
  return 'normal';
5435
5447
  if (__ANDROID__) {
5436
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getFontFeatureSettings(this.nativeView);
5448
+ return nodeHelper().getFontFeatureSettings(this.nativeView);
5437
5449
  }
5438
5450
  if (__APPLE__) {
5439
5451
  return this.nativeView.style.fontFeatureSettings;
@@ -5442,7 +5454,7 @@ export class Style {
5442
5454
  }
5443
5455
  set fontFeatureSettings(value) {
5444
5456
  value = this.coerceCssStringValue(value);
5445
- this.setPseudoCssStringValue('font-feature-settings', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setFontFeatureSettings(this.nativeView, value), () => (this.nativeView.style.fontFeatureSettings = value));
5457
+ this.setPseudoCssStringValue('font-feature-settings', value, () => nodeHelper().setFontFeatureSettings(this.nativeView, value), () => (this.nativeView.style.fontFeatureSettings = value));
5446
5458
  }
5447
5459
  set 'font-feature-settings'(value) {
5448
5460
  this.fontFeatureSettings = value;
@@ -5539,7 +5551,7 @@ export class Style {
5539
5551
  if (!this.nativeView)
5540
5552
  return '';
5541
5553
  if (__ANDROID__) {
5542
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackdropFilter(this.nativeView);
5554
+ return nodeHelper().getBackdropFilter(this.nativeView);
5543
5555
  }
5544
5556
  if (__APPLE__) {
5545
5557
  return this.nativeView.style.backdropFilter;
@@ -5548,7 +5560,7 @@ export class Style {
5548
5560
  }
5549
5561
  set backdropFilter(value) {
5550
5562
  value = this.coerceCssStringValue(value);
5551
- this.setPseudoCssStringValue('backdrop-filter', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackdropFilter(this.nativeView, value), () => (this.nativeView.style.backdropFilter = value));
5563
+ this.setPseudoCssStringValue('backdrop-filter', value, () => nodeHelper().setBackdropFilter(this.nativeView, value), () => (this.nativeView.style.backdropFilter = value));
5552
5564
  }
5553
5565
  set 'backdrop-filter'(value) {
5554
5566
  this.backdropFilter = value;