@triniwiz/nativescript-masonkit 1.0.0-beta.7 → 1.0.0-beta.71

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 (150) hide show
  1. package/DOCS.md +930 -0
  2. package/br/index.android.d.ts +10 -0
  3. package/br/index.android.js +31 -0
  4. package/br/index.android.js.map +1 -0
  5. package/br/index.ios.d.ts +11 -0
  6. package/br/index.ios.js +30 -0
  7. package/br/index.ios.js.map +1 -0
  8. package/button/index.android.d.ts +4 -2
  9. package/button/index.android.js +9 -5
  10. package/button/index.android.js.map +1 -1
  11. package/button/index.ios.d.ts +4 -5
  12. package/button/index.ios.js +17 -71
  13. package/button/index.ios.js.map +1 -1
  14. package/common.d.ts +207 -73
  15. package/common.js +1236 -1392
  16. package/common.js.map +1 -1
  17. package/img/index.android.d.ts +5 -4
  18. package/img/index.android.js +18 -6
  19. package/img/index.android.js.map +1 -1
  20. package/img/index.ios.d.ts +3 -2
  21. package/img/index.ios.js +27 -21
  22. package/img/index.ios.js.map +1 -1
  23. package/index.android.d.ts +7 -1
  24. package/index.android.js +7 -1
  25. package/index.android.js.map +1 -1
  26. package/index.d.ts +129 -2
  27. package/index.ios.d.ts +7 -1
  28. package/index.ios.js +7 -1
  29. package/index.ios.js.map +1 -1
  30. package/input/common.d.ts +20 -0
  31. package/input/common.js +65 -0
  32. package/input/common.js.map +1 -0
  33. package/input/index.android.d.ts +20 -0
  34. package/input/index.android.js +118 -0
  35. package/input/index.android.js.map +1 -0
  36. package/input/index.ios.d.ts +23 -0
  37. package/input/index.ios.js +171 -0
  38. package/input/index.ios.js.map +1 -0
  39. package/li/index.android.d.ts +12 -0
  40. package/li/index.android.js +57 -0
  41. package/li/index.android.js.map +1 -0
  42. package/li/index.ios.d.ts +14 -0
  43. package/li/index.ios.js +128 -0
  44. package/li/index.ios.js.map +1 -0
  45. package/list/common.d.ts +33 -0
  46. package/list/common.js +157 -0
  47. package/list/common.js.map +1 -0
  48. package/list/index.android.d.ts +28 -0
  49. package/list/index.android.js +155 -0
  50. package/list/index.android.js.map +1 -0
  51. package/list/index.ios.d.ts +42 -0
  52. package/list/index.ios.js +321 -0
  53. package/list/index.ios.js.map +1 -0
  54. package/package.json +8 -2
  55. package/platforms/android/include.gradle +1 -0
  56. package/platforms/android/masonkit-release.aar +0 -0
  57. package/platforms/ios/Mason.xcframework/Info.plist +5 -5
  58. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Headers/Mason-Swift.h +572 -176
  59. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Headers/mason_native.h +181 -50
  60. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Info.plist +0 -0
  61. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Mason +0 -0
  62. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo +0 -0
  63. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.abi.json +74785 -40729
  64. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.private.swiftinterface +1429 -346
  65. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  66. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios.swiftinterface +1429 -346
  67. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Modules/module.modulemap +0 -1
  68. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  69. package/platforms/ios/Mason.xcframework/ios-arm64/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8340 -4294
  70. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Headers/Mason-Swift.h +1144 -352
  71. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Headers/mason_native.h +181 -50
  72. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Info.plist +0 -0
  73. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Mason +0 -0
  74. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/arm64-apple-ios-simulator.swiftsourceinfo +0 -0
  75. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/Project/x86_64-apple-ios-simulator.swiftsourceinfo +0 -0
  76. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.abi.json +72517 -38461
  77. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface +1674 -591
  78. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  79. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/arm64-apple-ios-simulator.swiftinterface +1674 -591
  80. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.abi.json +72517 -38461
  81. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface +1674 -591
  82. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  83. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/Mason.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +1674 -591
  84. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Modules/module.modulemap +0 -1
  85. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/_CodeSignature/CodeResources +31 -31
  86. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/DWARF/Mason +0 -0
  87. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/aarch64/Mason.yml +8335 -4291
  88. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/dSYMs/Mason.framework.dSYM/Contents/Resources/Relocations/x86_64/Mason.yml +7982 -4167
  89. package/properties.d.ts +83 -0
  90. package/properties.js +1345 -0
  91. package/properties.js.map +1 -0
  92. package/pseudo.d.ts +9 -0
  93. package/pseudo.js +58 -0
  94. package/pseudo.js.map +1 -0
  95. package/scroll/index.android.d.ts +3 -2
  96. package/scroll/index.android.js +20 -5
  97. package/scroll/index.android.js.map +1 -1
  98. package/scroll/index.ios.d.ts +7 -4
  99. package/scroll/index.ios.js +88 -26
  100. package/scroll/index.ios.js.map +1 -1
  101. package/style.d.ts +231 -12
  102. package/style.js +1982 -811
  103. package/style.js.map +1 -1
  104. package/symbols.d.ts +12 -0
  105. package/symbols.js +13 -0
  106. package/symbols.js.map +1 -0
  107. package/text/index.android.d.ts +11 -5
  108. package/text/index.android.js +86 -104
  109. package/text/index.android.js.map +1 -1
  110. package/text/index.ios.d.ts +14 -11
  111. package/text/index.ios.js +111 -181
  112. package/text/index.ios.js.map +1 -1
  113. package/text-node/index.android.d.ts +13 -0
  114. package/text-node/index.android.js +35 -0
  115. package/text-node/index.android.js.map +1 -0
  116. package/text-node/index.ios.d.ts +13 -0
  117. package/text-node/index.ios.js +35 -0
  118. package/text-node/index.ios.js.map +1 -0
  119. package/textarea/common.d.ts +8 -0
  120. package/textarea/common.js +28 -0
  121. package/textarea/common.js.map +1 -0
  122. package/textarea/index.android.d.ts +15 -0
  123. package/textarea/index.android.js +71 -0
  124. package/textarea/index.android.js.map +1 -0
  125. package/textarea/index.ios.d.ts +18 -0
  126. package/textarea/index.ios.js +134 -0
  127. package/textarea/index.ios.js.map +1 -0
  128. package/tree/index.android.d.ts +15 -2
  129. package/tree/index.android.js +83 -8
  130. package/tree/index.android.js.map +1 -1
  131. package/tree/index.ios.d.ts +24 -1
  132. package/tree/index.ios.js +72 -8
  133. package/tree/index.ios.js.map +1 -1
  134. package/utils/index.android.d.ts +13 -1
  135. package/utils/index.android.js +1 -1
  136. package/utils/index.android.js.map +1 -1
  137. package/utils/index.ios.d.ts +13 -1
  138. package/utils/index.ios.js +1 -1
  139. package/utils/index.ios.js.map +1 -1
  140. package/view/index.android.d.ts +3 -2
  141. package/view/index.android.js +22 -5
  142. package/view/index.android.js.map +1 -1
  143. package/view/index.ios.d.ts +4 -2
  144. package/view/index.ios.js +86 -16
  145. package/view/index.ios.js.map +1 -1
  146. package/web.d.ts +6 -0
  147. package/web.js +22 -0
  148. package/web.js.map +1 -1
  149. package/platforms/ios/Mason.xcframework/ios-arm64/Mason.framework/Headers/NSObject+MasonElement_Defaults.h +0 -100
  150. package/platforms/ios/Mason.xcframework/ios-arm64_x86_64-simulator/Mason.framework/Headers/NSObject+MasonElement_Defaults.h +0 -100
package/style.js CHANGED
@@ -1,203 +1,217 @@
1
1
  import { layout } from '@nativescript/core/utils';
2
- import { Length as CoreLength, PercentLength as CorePercentLength } from '@nativescript/core';
2
+ import { Color, Length as CoreLength, PercentLength as CorePercentLength } from '@nativescript/core';
3
3
  var StyleKeys;
4
4
  (function (StyleKeys) {
5
5
  StyleKeys[StyleKeys["DISPLAY"] = 0] = "DISPLAY";
6
- StyleKeys[StyleKeys["POSITION"] = 4] = "POSITION";
7
- StyleKeys[StyleKeys["DIRECTION"] = 8] = "DIRECTION";
8
- StyleKeys[StyleKeys["FLEX_DIRECTION"] = 12] = "FLEX_DIRECTION";
9
- StyleKeys[StyleKeys["FLEX_WRAP"] = 16] = "FLEX_WRAP";
10
- StyleKeys[StyleKeys["OVERFLOW_X"] = 20] = "OVERFLOW_X";
11
- StyleKeys[StyleKeys["OVERFLOW_Y"] = 24] = "OVERFLOW_Y";
12
- StyleKeys[StyleKeys["ALIGN_ITEMS"] = 28] = "ALIGN_ITEMS";
13
- StyleKeys[StyleKeys["ALIGN_SELF"] = 32] = "ALIGN_SELF";
14
- StyleKeys[StyleKeys["ALIGN_CONTENT"] = 36] = "ALIGN_CONTENT";
15
- StyleKeys[StyleKeys["JUSTIFY_ITEMS"] = 40] = "JUSTIFY_ITEMS";
16
- StyleKeys[StyleKeys["JUSTIFY_SELF"] = 44] = "JUSTIFY_SELF";
17
- StyleKeys[StyleKeys["JUSTIFY_CONTENT"] = 48] = "JUSTIFY_CONTENT";
18
- StyleKeys[StyleKeys["INSET_LEFT_TYPE"] = 52] = "INSET_LEFT_TYPE";
19
- StyleKeys[StyleKeys["INSET_LEFT_VALUE"] = 56] = "INSET_LEFT_VALUE";
20
- StyleKeys[StyleKeys["INSET_RIGHT_TYPE"] = 60] = "INSET_RIGHT_TYPE";
21
- StyleKeys[StyleKeys["INSET_RIGHT_VALUE"] = 64] = "INSET_RIGHT_VALUE";
22
- StyleKeys[StyleKeys["INSET_TOP_TYPE"] = 68] = "INSET_TOP_TYPE";
23
- StyleKeys[StyleKeys["INSET_TOP_VALUE"] = 72] = "INSET_TOP_VALUE";
24
- StyleKeys[StyleKeys["INSET_BOTTOM_TYPE"] = 76] = "INSET_BOTTOM_TYPE";
25
- StyleKeys[StyleKeys["INSET_BOTTOM_VALUE"] = 80] = "INSET_BOTTOM_VALUE";
26
- StyleKeys[StyleKeys["MARGIN_LEFT_TYPE"] = 84] = "MARGIN_LEFT_TYPE";
27
- StyleKeys[StyleKeys["MARGIN_LEFT_VALUE"] = 88] = "MARGIN_LEFT_VALUE";
28
- StyleKeys[StyleKeys["MARGIN_RIGHT_TYPE"] = 92] = "MARGIN_RIGHT_TYPE";
29
- StyleKeys[StyleKeys["MARGIN_RIGHT_VALUE"] = 96] = "MARGIN_RIGHT_VALUE";
30
- StyleKeys[StyleKeys["MARGIN_TOP_TYPE"] = 100] = "MARGIN_TOP_TYPE";
31
- StyleKeys[StyleKeys["MARGIN_TOP_VALUE"] = 104] = "MARGIN_TOP_VALUE";
32
- StyleKeys[StyleKeys["MARGIN_BOTTOM_TYPE"] = 108] = "MARGIN_BOTTOM_TYPE";
33
- StyleKeys[StyleKeys["MARGIN_BOTTOM_VALUE"] = 112] = "MARGIN_BOTTOM_VALUE";
34
- StyleKeys[StyleKeys["PADDING_LEFT_TYPE"] = 116] = "PADDING_LEFT_TYPE";
35
- StyleKeys[StyleKeys["PADDING_LEFT_VALUE"] = 120] = "PADDING_LEFT_VALUE";
36
- StyleKeys[StyleKeys["PADDING_RIGHT_TYPE"] = 124] = "PADDING_RIGHT_TYPE";
37
- StyleKeys[StyleKeys["PADDING_RIGHT_VALUE"] = 128] = "PADDING_RIGHT_VALUE";
38
- StyleKeys[StyleKeys["PADDING_TOP_TYPE"] = 132] = "PADDING_TOP_TYPE";
39
- StyleKeys[StyleKeys["PADDING_TOP_VALUE"] = 136] = "PADDING_TOP_VALUE";
40
- StyleKeys[StyleKeys["PADDING_BOTTOM_TYPE"] = 140] = "PADDING_BOTTOM_TYPE";
41
- StyleKeys[StyleKeys["PADDING_BOTTOM_VALUE"] = 144] = "PADDING_BOTTOM_VALUE";
42
- StyleKeys[StyleKeys["BORDER_LEFT_TYPE"] = 148] = "BORDER_LEFT_TYPE";
43
- StyleKeys[StyleKeys["BORDER_LEFT_VALUE"] = 152] = "BORDER_LEFT_VALUE";
44
- StyleKeys[StyleKeys["BORDER_RIGHT_TYPE"] = 156] = "BORDER_RIGHT_TYPE";
45
- StyleKeys[StyleKeys["BORDER_RIGHT_VALUE"] = 160] = "BORDER_RIGHT_VALUE";
46
- StyleKeys[StyleKeys["BORDER_TOP_TYPE"] = 164] = "BORDER_TOP_TYPE";
47
- StyleKeys[StyleKeys["BORDER_TOP_VALUE"] = 168] = "BORDER_TOP_VALUE";
48
- StyleKeys[StyleKeys["BORDER_BOTTOM_TYPE"] = 172] = "BORDER_BOTTOM_TYPE";
49
- StyleKeys[StyleKeys["BORDER_BOTTOM_VALUE"] = 176] = "BORDER_BOTTOM_VALUE";
50
- StyleKeys[StyleKeys["FLEX_GROW"] = 180] = "FLEX_GROW";
51
- StyleKeys[StyleKeys["FLEX_SHRINK"] = 184] = "FLEX_SHRINK";
52
- StyleKeys[StyleKeys["FLEX_BASIS_TYPE"] = 188] = "FLEX_BASIS_TYPE";
53
- StyleKeys[StyleKeys["FLEX_BASIS_VALUE"] = 192] = "FLEX_BASIS_VALUE";
54
- StyleKeys[StyleKeys["WIDTH_TYPE"] = 196] = "WIDTH_TYPE";
55
- StyleKeys[StyleKeys["WIDTH_VALUE"] = 200] = "WIDTH_VALUE";
56
- StyleKeys[StyleKeys["HEIGHT_TYPE"] = 204] = "HEIGHT_TYPE";
57
- StyleKeys[StyleKeys["HEIGHT_VALUE"] = 208] = "HEIGHT_VALUE";
58
- StyleKeys[StyleKeys["MIN_WIDTH_TYPE"] = 212] = "MIN_WIDTH_TYPE";
59
- StyleKeys[StyleKeys["MIN_WIDTH_VALUE"] = 216] = "MIN_WIDTH_VALUE";
60
- StyleKeys[StyleKeys["MIN_HEIGHT_TYPE"] = 220] = "MIN_HEIGHT_TYPE";
61
- StyleKeys[StyleKeys["MIN_HEIGHT_VALUE"] = 224] = "MIN_HEIGHT_VALUE";
62
- StyleKeys[StyleKeys["MAX_WIDTH_TYPE"] = 228] = "MAX_WIDTH_TYPE";
63
- StyleKeys[StyleKeys["MAX_WIDTH_VALUE"] = 232] = "MAX_WIDTH_VALUE";
64
- StyleKeys[StyleKeys["MAX_HEIGHT_TYPE"] = 236] = "MAX_HEIGHT_TYPE";
65
- StyleKeys[StyleKeys["MAX_HEIGHT_VALUE"] = 240] = "MAX_HEIGHT_VALUE";
66
- StyleKeys[StyleKeys["GAP_ROW_TYPE"] = 244] = "GAP_ROW_TYPE";
67
- StyleKeys[StyleKeys["GAP_ROW_VALUE"] = 248] = "GAP_ROW_VALUE";
68
- StyleKeys[StyleKeys["GAP_COLUMN_TYPE"] = 252] = "GAP_COLUMN_TYPE";
69
- StyleKeys[StyleKeys["GAP_COLUMN_VALUE"] = 256] = "GAP_COLUMN_VALUE";
70
- StyleKeys[StyleKeys["ASPECT_RATIO"] = 260] = "ASPECT_RATIO";
71
- StyleKeys[StyleKeys["GRID_AUTO_FLOW"] = 264] = "GRID_AUTO_FLOW";
72
- StyleKeys[StyleKeys["GRID_COLUMN_START_TYPE"] = 268] = "GRID_COLUMN_START_TYPE";
73
- StyleKeys[StyleKeys["GRID_COLUMN_START_VALUE"] = 272] = "GRID_COLUMN_START_VALUE";
74
- StyleKeys[StyleKeys["GRID_COLUMN_END_TYPE"] = 276] = "GRID_COLUMN_END_TYPE";
75
- StyleKeys[StyleKeys["GRID_COLUMN_END_VALUE"] = 280] = "GRID_COLUMN_END_VALUE";
76
- StyleKeys[StyleKeys["GRID_ROW_START_TYPE"] = 284] = "GRID_ROW_START_TYPE";
77
- StyleKeys[StyleKeys["GRID_ROW_START_VALUE"] = 288] = "GRID_ROW_START_VALUE";
78
- StyleKeys[StyleKeys["GRID_ROW_END_TYPE"] = 292] = "GRID_ROW_END_TYPE";
79
- StyleKeys[StyleKeys["GRID_ROW_END_VALUE"] = 296] = "GRID_ROW_END_VALUE";
80
- StyleKeys[StyleKeys["SCROLLBAR_WIDTH"] = 300] = "SCROLLBAR_WIDTH";
81
- StyleKeys[StyleKeys["TEXT_ALIGN"] = 304] = "TEXT_ALIGN";
82
- StyleKeys[StyleKeys["BOX_SIZING"] = 308] = "BOX_SIZING";
83
- StyleKeys[StyleKeys["OVERFLOW"] = 312] = "OVERFLOW";
84
- StyleKeys[StyleKeys["ITEM_IS_TABLE"] = 316] = "ITEM_IS_TABLE";
85
- StyleKeys[StyleKeys["ITEM_IS_REPLACED"] = 320] = "ITEM_IS_REPLACED";
86
- StyleKeys[StyleKeys["DISPLAY_MODE"] = 324] = "DISPLAY_MODE";
87
- StyleKeys[StyleKeys["FORCE_INLINE"] = 328] = "FORCE_INLINE";
88
- StyleKeys[StyleKeys["MIN_CONTENT_WIDTH"] = 332] = "MIN_CONTENT_WIDTH";
89
- StyleKeys[StyleKeys["MIN_CONTENT_HEIGHT"] = 336] = "MIN_CONTENT_HEIGHT";
90
- StyleKeys[StyleKeys["MAX_CONTENT_WIDTH"] = 340] = "MAX_CONTENT_WIDTH";
91
- StyleKeys[StyleKeys["MAX_CONTENT_HEIGHT"] = 344] = "MAX_CONTENT_HEIGHT";
92
- // ----------------------------
6
+ StyleKeys[StyleKeys["POSITION"] = 1] = "POSITION";
7
+ StyleKeys[StyleKeys["DIRECTION"] = 2] = "DIRECTION";
8
+ StyleKeys[StyleKeys["FLEX_DIRECTION"] = 3] = "FLEX_DIRECTION";
9
+ StyleKeys[StyleKeys["FLEX_WRAP"] = 4] = "FLEX_WRAP";
10
+ StyleKeys[StyleKeys["OVERFLOW_X"] = 5] = "OVERFLOW_X";
11
+ StyleKeys[StyleKeys["OVERFLOW_Y"] = 6] = "OVERFLOW_Y";
12
+ StyleKeys[StyleKeys["ALIGN_ITEMS"] = 7] = "ALIGN_ITEMS";
13
+ StyleKeys[StyleKeys["ALIGN_SELF"] = 8] = "ALIGN_SELF";
14
+ StyleKeys[StyleKeys["ALIGN_CONTENT"] = 9] = "ALIGN_CONTENT";
15
+ StyleKeys[StyleKeys["JUSTIFY_ITEMS"] = 10] = "JUSTIFY_ITEMS";
16
+ StyleKeys[StyleKeys["JUSTIFY_SELF"] = 11] = "JUSTIFY_SELF";
17
+ StyleKeys[StyleKeys["JUSTIFY_CONTENT"] = 12] = "JUSTIFY_CONTENT";
18
+ // Contiguous types, then contiguous values per group
19
+ StyleKeys[StyleKeys["INSET_LEFT_TYPE"] = 13] = "INSET_LEFT_TYPE";
20
+ StyleKeys[StyleKeys["INSET_RIGHT_TYPE"] = 14] = "INSET_RIGHT_TYPE";
21
+ StyleKeys[StyleKeys["INSET_TOP_TYPE"] = 15] = "INSET_TOP_TYPE";
22
+ StyleKeys[StyleKeys["INSET_BOTTOM_TYPE"] = 16] = "INSET_BOTTOM_TYPE";
23
+ StyleKeys[StyleKeys["INSET_LEFT_VALUE"] = 17] = "INSET_LEFT_VALUE";
24
+ StyleKeys[StyleKeys["INSET_RIGHT_VALUE"] = 21] = "INSET_RIGHT_VALUE";
25
+ StyleKeys[StyleKeys["INSET_TOP_VALUE"] = 25] = "INSET_TOP_VALUE";
26
+ StyleKeys[StyleKeys["INSET_BOTTOM_VALUE"] = 29] = "INSET_BOTTOM_VALUE";
27
+ StyleKeys[StyleKeys["MARGIN_LEFT_TYPE"] = 33] = "MARGIN_LEFT_TYPE";
28
+ StyleKeys[StyleKeys["MARGIN_RIGHT_TYPE"] = 34] = "MARGIN_RIGHT_TYPE";
29
+ StyleKeys[StyleKeys["MARGIN_TOP_TYPE"] = 35] = "MARGIN_TOP_TYPE";
30
+ StyleKeys[StyleKeys["MARGIN_BOTTOM_TYPE"] = 36] = "MARGIN_BOTTOM_TYPE";
31
+ StyleKeys[StyleKeys["MARGIN_LEFT_VALUE"] = 37] = "MARGIN_LEFT_VALUE";
32
+ StyleKeys[StyleKeys["MARGIN_RIGHT_VALUE"] = 41] = "MARGIN_RIGHT_VALUE";
33
+ StyleKeys[StyleKeys["MARGIN_TOP_VALUE"] = 45] = "MARGIN_TOP_VALUE";
34
+ StyleKeys[StyleKeys["MARGIN_BOTTOM_VALUE"] = 49] = "MARGIN_BOTTOM_VALUE";
35
+ StyleKeys[StyleKeys["PADDING_LEFT_TYPE"] = 53] = "PADDING_LEFT_TYPE";
36
+ StyleKeys[StyleKeys["PADDING_RIGHT_TYPE"] = 54] = "PADDING_RIGHT_TYPE";
37
+ StyleKeys[StyleKeys["PADDING_TOP_TYPE"] = 55] = "PADDING_TOP_TYPE";
38
+ StyleKeys[StyleKeys["PADDING_BOTTOM_TYPE"] = 56] = "PADDING_BOTTOM_TYPE";
39
+ StyleKeys[StyleKeys["PADDING_LEFT_VALUE"] = 57] = "PADDING_LEFT_VALUE";
40
+ StyleKeys[StyleKeys["PADDING_RIGHT_VALUE"] = 61] = "PADDING_RIGHT_VALUE";
41
+ StyleKeys[StyleKeys["PADDING_TOP_VALUE"] = 65] = "PADDING_TOP_VALUE";
42
+ StyleKeys[StyleKeys["PADDING_BOTTOM_VALUE"] = 69] = "PADDING_BOTTOM_VALUE";
43
+ StyleKeys[StyleKeys["BORDER_LEFT_TYPE"] = 73] = "BORDER_LEFT_TYPE";
44
+ StyleKeys[StyleKeys["BORDER_RIGHT_TYPE"] = 74] = "BORDER_RIGHT_TYPE";
45
+ StyleKeys[StyleKeys["BORDER_TOP_TYPE"] = 75] = "BORDER_TOP_TYPE";
46
+ StyleKeys[StyleKeys["BORDER_BOTTOM_TYPE"] = 76] = "BORDER_BOTTOM_TYPE";
47
+ StyleKeys[StyleKeys["BORDER_LEFT_VALUE"] = 77] = "BORDER_LEFT_VALUE";
48
+ StyleKeys[StyleKeys["BORDER_RIGHT_VALUE"] = 81] = "BORDER_RIGHT_VALUE";
49
+ StyleKeys[StyleKeys["BORDER_TOP_VALUE"] = 85] = "BORDER_TOP_VALUE";
50
+ StyleKeys[StyleKeys["BORDER_BOTTOM_VALUE"] = 89] = "BORDER_BOTTOM_VALUE";
51
+ StyleKeys[StyleKeys["FLEX_GROW"] = 93] = "FLEX_GROW";
52
+ StyleKeys[StyleKeys["FLEX_SHRINK"] = 97] = "FLEX_SHRINK";
53
+ StyleKeys[StyleKeys["FLEX_BASIS_TYPE"] = 101] = "FLEX_BASIS_TYPE";
54
+ StyleKeys[StyleKeys["FLEX_BASIS_VALUE"] = 102] = "FLEX_BASIS_VALUE";
55
+ StyleKeys[StyleKeys["WIDTH_TYPE"] = 106] = "WIDTH_TYPE";
56
+ StyleKeys[StyleKeys["HEIGHT_TYPE"] = 107] = "HEIGHT_TYPE";
57
+ StyleKeys[StyleKeys["WIDTH_VALUE"] = 108] = "WIDTH_VALUE";
58
+ StyleKeys[StyleKeys["HEIGHT_VALUE"] = 112] = "HEIGHT_VALUE";
59
+ StyleKeys[StyleKeys["MIN_WIDTH_TYPE"] = 116] = "MIN_WIDTH_TYPE";
60
+ StyleKeys[StyleKeys["MIN_HEIGHT_TYPE"] = 117] = "MIN_HEIGHT_TYPE";
61
+ StyleKeys[StyleKeys["MIN_WIDTH_VALUE"] = 118] = "MIN_WIDTH_VALUE";
62
+ StyleKeys[StyleKeys["MIN_HEIGHT_VALUE"] = 122] = "MIN_HEIGHT_VALUE";
63
+ StyleKeys[StyleKeys["MAX_WIDTH_TYPE"] = 126] = "MAX_WIDTH_TYPE";
64
+ StyleKeys[StyleKeys["MAX_HEIGHT_TYPE"] = 127] = "MAX_HEIGHT_TYPE";
65
+ StyleKeys[StyleKeys["MAX_WIDTH_VALUE"] = 128] = "MAX_WIDTH_VALUE";
66
+ StyleKeys[StyleKeys["MAX_HEIGHT_VALUE"] = 132] = "MAX_HEIGHT_VALUE";
67
+ StyleKeys[StyleKeys["GAP_ROW_TYPE"] = 136] = "GAP_ROW_TYPE";
68
+ StyleKeys[StyleKeys["GAP_COLUMN_TYPE"] = 137] = "GAP_COLUMN_TYPE";
69
+ StyleKeys[StyleKeys["GAP_ROW_VALUE"] = 138] = "GAP_ROW_VALUE";
70
+ StyleKeys[StyleKeys["GAP_COLUMN_VALUE"] = 142] = "GAP_COLUMN_VALUE";
71
+ StyleKeys[StyleKeys["ASPECT_RATIO"] = 146] = "ASPECT_RATIO";
72
+ StyleKeys[StyleKeys["GRID_AUTO_FLOW"] = 150] = "GRID_AUTO_FLOW";
73
+ StyleKeys[StyleKeys["GRID_COLUMN_START_TYPE"] = 151] = "GRID_COLUMN_START_TYPE";
74
+ StyleKeys[StyleKeys["GRID_COLUMN_END_TYPE"] = 152] = "GRID_COLUMN_END_TYPE";
75
+ StyleKeys[StyleKeys["GRID_ROW_START_TYPE"] = 153] = "GRID_ROW_START_TYPE";
76
+ StyleKeys[StyleKeys["GRID_ROW_END_TYPE"] = 154] = "GRID_ROW_END_TYPE";
77
+ StyleKeys[StyleKeys["GRID_COLUMN_START_VALUE"] = 155] = "GRID_COLUMN_START_VALUE";
78
+ StyleKeys[StyleKeys["GRID_COLUMN_END_VALUE"] = 159] = "GRID_COLUMN_END_VALUE";
79
+ StyleKeys[StyleKeys["GRID_ROW_START_VALUE"] = 163] = "GRID_ROW_START_VALUE";
80
+ StyleKeys[StyleKeys["GRID_ROW_END_VALUE"] = 167] = "GRID_ROW_END_VALUE";
81
+ StyleKeys[StyleKeys["SCROLLBAR_WIDTH"] = 171] = "SCROLLBAR_WIDTH";
82
+ StyleKeys[StyleKeys["ALIGN"] = 175] = "ALIGN";
83
+ StyleKeys[StyleKeys["BOX_SIZING"] = 176] = "BOX_SIZING";
84
+ StyleKeys[StyleKeys["OVERFLOW"] = 177] = "OVERFLOW";
85
+ StyleKeys[StyleKeys["ITEM_IS_TABLE"] = 178] = "ITEM_IS_TABLE";
86
+ StyleKeys[StyleKeys["ITEM_IS_REPLACED"] = 179] = "ITEM_IS_REPLACED";
87
+ StyleKeys[StyleKeys["DISPLAY_MODE"] = 180] = "DISPLAY_MODE";
88
+ StyleKeys[StyleKeys["FORCE_INLINE"] = 181] = "FORCE_INLINE";
89
+ StyleKeys[StyleKeys["MIN_CONTENT_WIDTH"] = 182] = "MIN_CONTENT_WIDTH";
90
+ StyleKeys[StyleKeys["MIN_CONTENT_HEIGHT"] = 186] = "MIN_CONTENT_HEIGHT";
91
+ StyleKeys[StyleKeys["MAX_CONTENT_WIDTH"] = 190] = "MAX_CONTENT_WIDTH";
92
+ StyleKeys[StyleKeys["MAX_CONTENT_HEIGHT"] = 194] = "MAX_CONTENT_HEIGHT";
93
93
  // Border Style (per side)
94
- // ----------------------------
95
- StyleKeys[StyleKeys["BORDER_LEFT_STYLE"] = 348] = "BORDER_LEFT_STYLE";
96
- StyleKeys[StyleKeys["BORDER_RIGHT_STYLE"] = 352] = "BORDER_RIGHT_STYLE";
97
- StyleKeys[StyleKeys["BORDER_TOP_STYLE"] = 356] = "BORDER_TOP_STYLE";
98
- StyleKeys[StyleKeys["BORDER_BOTTOM_STYLE"] = 360] = "BORDER_BOTTOM_STYLE";
99
- // ----------------------------
94
+ StyleKeys[StyleKeys["BORDER_LEFT_STYLE"] = 198] = "BORDER_LEFT_STYLE";
95
+ StyleKeys[StyleKeys["BORDER_RIGHT_STYLE"] = 199] = "BORDER_RIGHT_STYLE";
96
+ StyleKeys[StyleKeys["BORDER_TOP_STYLE"] = 200] = "BORDER_TOP_STYLE";
97
+ StyleKeys[StyleKeys["BORDER_BOTTOM_STYLE"] = 201] = "BORDER_BOTTOM_STYLE";
100
98
  // Border Color (per side)
101
- // ----------------------------
102
- StyleKeys[StyleKeys["BORDER_LEFT_COLOR"] = 364] = "BORDER_LEFT_COLOR";
103
- StyleKeys[StyleKeys["BORDER_RIGHT_COLOR"] = 368] = "BORDER_RIGHT_COLOR";
104
- StyleKeys[StyleKeys["BORDER_TOP_COLOR"] = 372] = "BORDER_TOP_COLOR";
105
- StyleKeys[StyleKeys["BORDER_BOTTOM_COLOR"] = 376] = "BORDER_BOTTOM_COLOR";
106
- // ============================================================
107
- // Border Radius (elliptical + squircle exponent)
108
- // Each corner = 20 bytes:
109
- // x_type (4), x_value (4), y_type (4), y_value (4), exponent (4)
110
- // ============================================================
111
- // ----------------------------
112
- // Top-left corner (20 bytes)
113
- // ----------------------------
114
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_X_TYPE"] = 380] = "BORDER_RADIUS_TOP_LEFT_X_TYPE";
115
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_X_VALUE"] = 384] = "BORDER_RADIUS_TOP_LEFT_X_VALUE";
116
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_Y_TYPE"] = 388] = "BORDER_RADIUS_TOP_LEFT_Y_TYPE";
117
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_Y_VALUE"] = 392] = "BORDER_RADIUS_TOP_LEFT_Y_VALUE";
118
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_EXPONENT"] = 396] = "BORDER_RADIUS_TOP_LEFT_EXPONENT";
119
- // ----------------------------
120
- // Top-right corner
121
- // ----------------------------
122
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_X_TYPE"] = 400] = "BORDER_RADIUS_TOP_RIGHT_X_TYPE";
123
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_X_VALUE"] = 404] = "BORDER_RADIUS_TOP_RIGHT_X_VALUE";
124
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_Y_TYPE"] = 408] = "BORDER_RADIUS_TOP_RIGHT_Y_TYPE";
125
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_Y_VALUE"] = 412] = "BORDER_RADIUS_TOP_RIGHT_Y_VALUE";
126
- StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_EXPONENT"] = 416] = "BORDER_RADIUS_TOP_RIGHT_EXPONENT";
127
- // ----------------------------
128
- // Bottom-right corner
129
- // ----------------------------
130
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_X_TYPE"] = 420] = "BORDER_RADIUS_BOTTOM_RIGHT_X_TYPE";
131
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_X_VALUE"] = 424] = "BORDER_RADIUS_BOTTOM_RIGHT_X_VALUE";
132
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_Y_TYPE"] = 428] = "BORDER_RADIUS_BOTTOM_RIGHT_Y_TYPE";
133
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_Y_VALUE"] = 432] = "BORDER_RADIUS_BOTTOM_RIGHT_Y_VALUE";
134
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_EXPONENT"] = 436] = "BORDER_RADIUS_BOTTOM_RIGHT_EXPONENT";
135
- // ----------------------------
136
- // Bottom-left corner
137
- // ----------------------------
138
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_X_TYPE"] = 440] = "BORDER_RADIUS_BOTTOM_LEFT_X_TYPE";
139
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_X_VALUE"] = 444] = "BORDER_RADIUS_BOTTOM_LEFT_X_VALUE";
140
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_Y_TYPE"] = 448] = "BORDER_RADIUS_BOTTOM_LEFT_Y_TYPE";
141
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_Y_VALUE"] = 452] = "BORDER_RADIUS_BOTTOM_LEFT_Y_VALUE";
142
- StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_EXPONENT"] = 456] = "BORDER_RADIUS_BOTTOM_LEFT_EXPONENT";
143
- // ----------------------------
99
+ StyleKeys[StyleKeys["BORDER_LEFT_COLOR"] = 202] = "BORDER_LEFT_COLOR";
100
+ StyleKeys[StyleKeys["BORDER_RIGHT_COLOR"] = 206] = "BORDER_RIGHT_COLOR";
101
+ StyleKeys[StyleKeys["BORDER_TOP_COLOR"] = 210] = "BORDER_TOP_COLOR";
102
+ StyleKeys[StyleKeys["BORDER_BOTTOM_COLOR"] = 214] = "BORDER_BOTTOM_COLOR";
103
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_X_TYPE"] = 218] = "BORDER_RADIUS_TOP_LEFT_X_TYPE";
104
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_Y_TYPE"] = 219] = "BORDER_RADIUS_TOP_LEFT_Y_TYPE";
105
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_X_TYPE"] = 220] = "BORDER_RADIUS_TOP_RIGHT_X_TYPE";
106
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_Y_TYPE"] = 221] = "BORDER_RADIUS_TOP_RIGHT_Y_TYPE";
107
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_X_TYPE"] = 222] = "BORDER_RADIUS_BOTTOM_RIGHT_X_TYPE";
108
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_Y_TYPE"] = 223] = "BORDER_RADIUS_BOTTOM_RIGHT_Y_TYPE";
109
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_X_TYPE"] = 224] = "BORDER_RADIUS_BOTTOM_LEFT_X_TYPE";
110
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_Y_TYPE"] = 225] = "BORDER_RADIUS_BOTTOM_LEFT_Y_TYPE";
111
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_X_VALUE"] = 226] = "BORDER_RADIUS_TOP_LEFT_X_VALUE";
112
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_Y_VALUE"] = 230] = "BORDER_RADIUS_TOP_LEFT_Y_VALUE";
113
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_X_VALUE"] = 234] = "BORDER_RADIUS_TOP_RIGHT_X_VALUE";
114
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_Y_VALUE"] = 238] = "BORDER_RADIUS_TOP_RIGHT_Y_VALUE";
115
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_X_VALUE"] = 242] = "BORDER_RADIUS_BOTTOM_RIGHT_X_VALUE";
116
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_Y_VALUE"] = 246] = "BORDER_RADIUS_BOTTOM_RIGHT_Y_VALUE";
117
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_X_VALUE"] = 250] = "BORDER_RADIUS_BOTTOM_LEFT_X_VALUE";
118
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_Y_VALUE"] = 254] = "BORDER_RADIUS_BOTTOM_LEFT_Y_VALUE";
119
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_LEFT_EXPONENT"] = 258] = "BORDER_RADIUS_TOP_LEFT_EXPONENT";
120
+ StyleKeys[StyleKeys["BORDER_RADIUS_TOP_RIGHT_EXPONENT"] = 262] = "BORDER_RADIUS_TOP_RIGHT_EXPONENT";
121
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_RIGHT_EXPONENT"] = 266] = "BORDER_RADIUS_BOTTOM_RIGHT_EXPONENT";
122
+ StyleKeys[StyleKeys["BORDER_RADIUS_BOTTOM_LEFT_EXPONENT"] = 270] = "BORDER_RADIUS_BOTTOM_LEFT_EXPONENT";
144
123
  // Float
145
- // ----------------------------
146
- StyleKeys[StyleKeys["FLOAT"] = 460] = "FLOAT";
147
- StyleKeys[StyleKeys["CLEAR"] = 464] = "CLEAR";
148
- StyleKeys[StyleKeys["OBJECT_FIT"] = 468] = "OBJECT_FIT";
149
- StyleKeys[StyleKeys["FONT_METRICS_ASCENT_OFFSET"] = 472] = "FONT_METRICS_ASCENT_OFFSET";
150
- StyleKeys[StyleKeys["FONT_METRICS_DESCENT_OFFSET"] = 476] = "FONT_METRICS_DESCENT_OFFSET";
151
- StyleKeys[StyleKeys["FONT_METRICS_X_HEIGHT_OFFSET"] = 480] = "FONT_METRICS_X_HEIGHT_OFFSET";
152
- StyleKeys[StyleKeys["FONT_METRICS_LEADING_OFFSET"] = 484] = "FONT_METRICS_LEADING_OFFSET";
153
- StyleKeys[StyleKeys["FONT_METRICS_CAP_HEIGHT_OFFSET"] = 488] = "FONT_METRICS_CAP_HEIGHT_OFFSET";
154
- StyleKeys[StyleKeys["VERTICAL_ALIGN_OFFSET_OFFSET"] = 492] = "VERTICAL_ALIGN_OFFSET_OFFSET";
155
- StyleKeys[StyleKeys["VERTICAL_ALIGN_IS_PERCENT_OFFSET"] = 496] = "VERTICAL_ALIGN_IS_PERCENT_OFFSET";
156
- StyleKeys[StyleKeys["VERTICAL_ALIGN_ENUM_OFFSET"] = 500] = "VERTICAL_ALIGN_ENUM_OFFSET";
157
- StyleKeys[StyleKeys["FIRST_BASELINE_OFFSET"] = 504] = "FIRST_BASELINE_OFFSET";
124
+ StyleKeys[StyleKeys["FLOAT"] = 274] = "FLOAT";
125
+ StyleKeys[StyleKeys["CLEAR"] = 275] = "CLEAR";
126
+ StyleKeys[StyleKeys["OBJECT_FIT"] = 276] = "OBJECT_FIT";
127
+ StyleKeys[StyleKeys["FONT_METRICS_ASCENT_OFFSET"] = 277] = "FONT_METRICS_ASCENT_OFFSET";
128
+ StyleKeys[StyleKeys["FONT_METRICS_DESCENT_OFFSET"] = 281] = "FONT_METRICS_DESCENT_OFFSET";
129
+ StyleKeys[StyleKeys["FONT_METRICS_X_HEIGHT_OFFSET"] = 285] = "FONT_METRICS_X_HEIGHT_OFFSET";
130
+ StyleKeys[StyleKeys["FONT_METRICS_LEADING_OFFSET"] = 289] = "FONT_METRICS_LEADING_OFFSET";
131
+ StyleKeys[StyleKeys["FONT_METRICS_CAP_HEIGHT_OFFSET"] = 293] = "FONT_METRICS_CAP_HEIGHT_OFFSET";
132
+ StyleKeys[StyleKeys["VERTICAL_ALIGN_OFFSET_OFFSET"] = 297] = "VERTICAL_ALIGN_OFFSET_OFFSET";
133
+ StyleKeys[StyleKeys["VERTICAL_ALIGN_IS_PERCENT_OFFSET"] = 301] = "VERTICAL_ALIGN_IS_PERCENT_OFFSET";
134
+ StyleKeys[StyleKeys["VERTICAL_ALIGN_ENUM_OFFSET"] = 302] = "VERTICAL_ALIGN_ENUM_OFFSET";
135
+ StyleKeys[StyleKeys["FIRST_BASELINE_OFFSET"] = 306] = "FIRST_BASELINE_OFFSET";
136
+ StyleKeys[StyleKeys["Z_INDEX"] = 310] = "Z_INDEX";
137
+ StyleKeys[StyleKeys["ITEM_IS_LIST"] = 314] = "ITEM_IS_LIST";
138
+ StyleKeys[StyleKeys["ITEM_IS_LIST_ITEM"] = 315] = "ITEM_IS_LIST_ITEM";
139
+ StyleKeys[StyleKeys["LIST_STYLE_POSITION"] = 316] = "LIST_STYLE_POSITION";
140
+ StyleKeys[StyleKeys["LIST_STYLE_TYPE"] = 317] = "LIST_STYLE_TYPE";
141
+ StyleKeys[StyleKeys["LIST_STYLE_POSITION_STATE"] = 318] = "LIST_STYLE_POSITION_STATE";
142
+ StyleKeys[StyleKeys["LIST_STYLE_TYPE_STATE"] = 319] = "LIST_STYLE_TYPE_STATE";
143
+ StyleKeys[StyleKeys["REF_COUNT"] = 320] = "REF_COUNT";
144
+ StyleKeys[StyleKeys["FONT_COLOR"] = 324] = "FONT_COLOR";
145
+ StyleKeys[StyleKeys["FONT_COLOR_STATE"] = 328] = "FONT_COLOR_STATE";
146
+ StyleKeys[StyleKeys["FONT_SIZE"] = 329] = "FONT_SIZE";
147
+ StyleKeys[StyleKeys["FONT_SIZE_TYPE"] = 333] = "FONT_SIZE_TYPE";
148
+ StyleKeys[StyleKeys["FONT_SIZE_STATE"] = 334] = "FONT_SIZE_STATE";
149
+ StyleKeys[StyleKeys["FONT_WEIGHT"] = 335] = "FONT_WEIGHT";
150
+ StyleKeys[StyleKeys["FONT_WEIGHT_STATE"] = 339] = "FONT_WEIGHT_STATE";
151
+ StyleKeys[StyleKeys["FONT_STYLE_SLANT"] = 340] = "FONT_STYLE_SLANT";
152
+ StyleKeys[StyleKeys["FONT_STYLE_TYPE"] = 344] = "FONT_STYLE_TYPE";
153
+ StyleKeys[StyleKeys["FONT_STYLE_STATE"] = 345] = "FONT_STYLE_STATE";
154
+ StyleKeys[StyleKeys["FONT_FAMILY_STATE"] = 346] = "FONT_FAMILY_STATE";
155
+ StyleKeys[StyleKeys["FONT_RESOLVED_DIRTY"] = 347] = "FONT_RESOLVED_DIRTY";
156
+ StyleKeys[StyleKeys["BACKGROUND_COLOR"] = 348] = "BACKGROUND_COLOR";
157
+ StyleKeys[StyleKeys["BACKGROUND_COLOR_STATE"] = 352] = "BACKGROUND_COLOR_STATE";
158
+ StyleKeys[StyleKeys["BACKGROUND_COLOR_TYPE"] = 353] = "BACKGROUND_COLOR_TYPE";
159
+ StyleKeys[StyleKeys["DECORATION_LINE"] = 354] = "DECORATION_LINE";
160
+ StyleKeys[StyleKeys["DECORATION_LINE_STATE"] = 355] = "DECORATION_LINE_STATE";
161
+ StyleKeys[StyleKeys["DECORATION_COLOR"] = 356] = "DECORATION_COLOR";
162
+ StyleKeys[StyleKeys["DECORATION_COLOR_STATE"] = 360] = "DECORATION_COLOR_STATE";
163
+ StyleKeys[StyleKeys["DECORATION_STYLE"] = 361] = "DECORATION_STYLE";
164
+ StyleKeys[StyleKeys["DECORATION_STYLE_STATE"] = 362] = "DECORATION_STYLE_STATE";
165
+ StyleKeys[StyleKeys["LETTER_SPACING"] = 363] = "LETTER_SPACING";
166
+ StyleKeys[StyleKeys["LETTER_SPACING_STATE"] = 367] = "LETTER_SPACING_STATE";
167
+ StyleKeys[StyleKeys["TEXT_WRAP"] = 368] = "TEXT_WRAP";
168
+ StyleKeys[StyleKeys["TEXT_WRAP_STATE"] = 369] = "TEXT_WRAP_STATE";
169
+ StyleKeys[StyleKeys["WHITE_SPACE"] = 370] = "WHITE_SPACE";
170
+ StyleKeys[StyleKeys["WHITE_SPACE_STATE"] = 371] = "WHITE_SPACE_STATE";
171
+ StyleKeys[StyleKeys["TEXT_TRANSFORM"] = 372] = "TEXT_TRANSFORM";
172
+ StyleKeys[StyleKeys["TEXT_TRANSFORM_STATE"] = 373] = "TEXT_TRANSFORM_STATE";
173
+ StyleKeys[StyleKeys["TEXT_ALIGN"] = 374] = "TEXT_ALIGN";
174
+ StyleKeys[StyleKeys["TEXT_ALIGN_STATE"] = 375] = "TEXT_ALIGN_STATE";
175
+ StyleKeys[StyleKeys["TEXT_JUSTIFY"] = 376] = "TEXT_JUSTIFY";
176
+ StyleKeys[StyleKeys["TEXT_JUSTIFY_STATE"] = 377] = "TEXT_JUSTIFY_STATE";
177
+ StyleKeys[StyleKeys["TEXT_INDENT"] = 378] = "TEXT_INDENT";
178
+ StyleKeys[StyleKeys["TEXT_INDENT_TYPE"] = 382] = "TEXT_INDENT_TYPE";
179
+ StyleKeys[StyleKeys["TEXT_INDENT_STATE"] = 383] = "TEXT_INDENT_STATE";
180
+ StyleKeys[StyleKeys["LINE_HEIGHT"] = 384] = "LINE_HEIGHT";
181
+ StyleKeys[StyleKeys["LINE_HEIGHT_STATE"] = 388] = "LINE_HEIGHT_STATE";
182
+ StyleKeys[StyleKeys["LINE_HEIGHT_TYPE"] = 389] = "LINE_HEIGHT_TYPE";
183
+ StyleKeys[StyleKeys["DECORATION_THICKNESS"] = 390] = "DECORATION_THICKNESS";
184
+ StyleKeys[StyleKeys["DECORATION_THICKNESS_STATE"] = 394] = "DECORATION_THICKNESS_STATE";
185
+ StyleKeys[StyleKeys["TEXT_SHADOW_STATE"] = 395] = "TEXT_SHADOW_STATE";
186
+ StyleKeys[StyleKeys["TEXT_OVERFLOW"] = 396] = "TEXT_OVERFLOW";
187
+ StyleKeys[StyleKeys["TEXT_OVERFLOW_STATE"] = 397] = "TEXT_OVERFLOW_STATE";
188
+ // Pseudo set mask: 128-bit bitmask (two longs) tracking which properties
189
+ // were explicitly set on a pseudo style buffer. Uses the same bit layout
190
+ // as StateKeys. Zero-copy: lives in the style buffer itself.
191
+ StyleKeys[StyleKeys["PSEUDO_SET_MASK_LOW"] = 398] = "PSEUDO_SET_MASK_LOW";
192
+ StyleKeys[StyleKeys["PSEUDO_SET_MASK_HIGH"] = 406] = "PSEUDO_SET_MASK_HIGH";
193
+ // font-variant-numeric bitmask (byte) + state
194
+ StyleKeys[StyleKeys["FONT_VARIANT_NUMERIC"] = 419] = "FONT_VARIANT_NUMERIC";
195
+ StyleKeys[StyleKeys["FONT_VARIANT_NUMERIC_STATE"] = 420] = "FONT_VARIANT_NUMERIC_STATE";
196
+ StyleKeys[StyleKeys["OBJECT_POSITION_X_TYPE"] = 560] = "OBJECT_POSITION_X_TYPE";
197
+ StyleKeys[StyleKeys["OBJECT_POSITION_Y_TYPE"] = 561] = "OBJECT_POSITION_Y_TYPE";
198
+ StyleKeys[StyleKeys["OBJECT_POSITION_X_VALUE"] = 562] = "OBJECT_POSITION_X_VALUE";
199
+ StyleKeys[StyleKeys["OBJECT_POSITION_Y_VALUE"] = 566] = "OBJECT_POSITION_Y_VALUE";
200
+ StyleKeys[StyleKeys["OBJECT_POSITION_STATE"] = 570] = "OBJECT_POSITION_STATE";
201
+ StyleKeys[StyleKeys["WRITING_MODE"] = 571] = "WRITING_MODE";
202
+ StyleKeys[StyleKeys["WRITING_MODE_STATE"] = 572] = "WRITING_MODE_STATE";
203
+ StyleKeys[StyleKeys["UNICODE_BIDI"] = 573] = "UNICODE_BIDI";
204
+ StyleKeys[StyleKeys["UNICODE_BIDI_STATE"] = 574] = "UNICODE_BIDI_STATE";
205
+ StyleKeys[StyleKeys["HYPHENS"] = 575] = "HYPHENS";
206
+ StyleKeys[StyleKeys["HYPHENS_STATE"] = 576] = "HYPHENS_STATE";
207
+ StyleKeys[StyleKeys["CARET_COLOR"] = 577] = "CARET_COLOR";
208
+ StyleKeys[StyleKeys["CARET_COLOR_STATE"] = 581] = "CARET_COLOR_STATE";
209
+ StyleKeys[StyleKeys["WORD_SPACING"] = 582] = "WORD_SPACING";
210
+ StyleKeys[StyleKeys["WORD_SPACING_TYPE"] = 586] = "WORD_SPACING_TYPE";
211
+ StyleKeys[StyleKeys["WORD_SPACING_STATE"] = 587] = "WORD_SPACING_STATE";
212
+ StyleKeys[StyleKeys["FONT_STRETCH"] = 588] = "FONT_STRETCH";
213
+ StyleKeys[StyleKeys["FONT_STRETCH_STATE"] = 592] = "FONT_STRETCH_STATE";
158
214
  })(StyleKeys || (StyleKeys = {}));
159
- var TextStyleKeys;
160
- (function (TextStyleKeys) {
161
- TextStyleKeys[TextStyleKeys["COLOR"] = 0] = "COLOR";
162
- TextStyleKeys[TextStyleKeys["COLOR_STATE"] = 4] = "COLOR_STATE";
163
- TextStyleKeys[TextStyleKeys["SIZE"] = 8] = "SIZE";
164
- TextStyleKeys[TextStyleKeys["SIZE_TYPE"] = 12] = "SIZE_TYPE";
165
- TextStyleKeys[TextStyleKeys["SIZE_STATE"] = 13] = "SIZE_STATE";
166
- TextStyleKeys[TextStyleKeys["FONT_WEIGHT"] = 16] = "FONT_WEIGHT";
167
- TextStyleKeys[TextStyleKeys["FONT_WEIGHT_STATE"] = 20] = "FONT_WEIGHT_STATE";
168
- TextStyleKeys[TextStyleKeys["FONT_STYLE_SLANT"] = 24] = "FONT_STYLE_SLANT";
169
- TextStyleKeys[TextStyleKeys["FONT_STYLE_TYPE"] = 28] = "FONT_STYLE_TYPE";
170
- TextStyleKeys[TextStyleKeys["FONT_STYLE_STATE"] = 29] = "FONT_STYLE_STATE";
171
- TextStyleKeys[TextStyleKeys["FONT_FAMILY_STATE"] = 30] = "FONT_FAMILY_STATE";
172
- TextStyleKeys[TextStyleKeys["FONT_RESOLVED_DIRTY"] = 31] = "FONT_RESOLVED_DIRTY";
173
- TextStyleKeys[TextStyleKeys["BACKGROUND_COLOR"] = 32] = "BACKGROUND_COLOR";
174
- TextStyleKeys[TextStyleKeys["BACKGROUND_COLOR_STATE"] = 36] = "BACKGROUND_COLOR_STATE";
175
- TextStyleKeys[TextStyleKeys["DECORATION_LINE"] = 40] = "DECORATION_LINE";
176
- TextStyleKeys[TextStyleKeys["DECORATION_LINE_STATE"] = 44] = "DECORATION_LINE_STATE";
177
- TextStyleKeys[TextStyleKeys["DECORATION_COLOR"] = 48] = "DECORATION_COLOR";
178
- TextStyleKeys[TextStyleKeys["DECORATION_COLOR_STATE"] = 52] = "DECORATION_COLOR_STATE";
179
- TextStyleKeys[TextStyleKeys["DECORATION_STYLE"] = 56] = "DECORATION_STYLE";
180
- TextStyleKeys[TextStyleKeys["DECORATION_STYLE_STATE"] = 60] = "DECORATION_STYLE_STATE";
181
- TextStyleKeys[TextStyleKeys["LETTER_SPACING"] = 64] = "LETTER_SPACING";
182
- TextStyleKeys[TextStyleKeys["LETTER_SPACING_STATE"] = 68] = "LETTER_SPACING_STATE";
183
- TextStyleKeys[TextStyleKeys["TEXT_WRAP"] = 72] = "TEXT_WRAP";
184
- TextStyleKeys[TextStyleKeys["TEXT_WRAP_STATE"] = 76] = "TEXT_WRAP_STATE";
185
- TextStyleKeys[TextStyleKeys["WHITE_SPACE"] = 80] = "WHITE_SPACE";
186
- TextStyleKeys[TextStyleKeys["WHITE_SPACE_STATE"] = 84] = "WHITE_SPACE_STATE";
187
- TextStyleKeys[TextStyleKeys["TRANSFORM"] = 88] = "TRANSFORM";
188
- TextStyleKeys[TextStyleKeys["TRANSFORM_STATE"] = 92] = "TRANSFORM_STATE";
189
- TextStyleKeys[TextStyleKeys["TEXT_ALIGN"] = 96] = "TEXT_ALIGN";
190
- TextStyleKeys[TextStyleKeys["TEXT_ALIGN_STATE"] = 100] = "TEXT_ALIGN_STATE";
191
- TextStyleKeys[TextStyleKeys["TEXT_JUSTIFY"] = 104] = "TEXT_JUSTIFY";
192
- TextStyleKeys[TextStyleKeys["TEXT_JUSTIFY_STATE"] = 108] = "TEXT_JUSTIFY_STATE";
193
- TextStyleKeys[TextStyleKeys["TEXT_INDENT"] = 112] = "TEXT_INDENT";
194
- TextStyleKeys[TextStyleKeys["TEXT_INDENT_STATE"] = 116] = "TEXT_INDENT_STATE";
195
- TextStyleKeys[TextStyleKeys["TEXT_OVERFLOW"] = 120] = "TEXT_OVERFLOW";
196
- TextStyleKeys[TextStyleKeys["TEXT_OVERFLOW_STATE"] = 124] = "TEXT_OVERFLOW_STATE";
197
- TextStyleKeys[TextStyleKeys["LINE_HEIGHT"] = 128] = "LINE_HEIGHT";
198
- TextStyleKeys[TextStyleKeys["LINE_HEIGHT_TYPE"] = 132] = "LINE_HEIGHT_TYPE";
199
- TextStyleKeys[TextStyleKeys["LINE_HEIGHT_STATE"] = 133] = "LINE_HEIGHT_STATE";
200
- })(TextStyleKeys || (TextStyleKeys = {}));
201
215
  function parseLengthPercentageAuto(type, value) {
202
216
  switch (type) {
203
217
  case 0:
@@ -220,96 +234,103 @@ class StateKeys {
220
234
  constructor(bits) {
221
235
  this.bits = bits;
222
236
  }
223
- or(other) {
224
- return new StateKeys(this.bits | other.bits);
225
- }
226
- and(other) {
227
- return new StateKeys(this.bits & other.bits);
228
- }
229
- hasFlag(flag) {
230
- return (this.bits & flag.bits) !== 0n;
237
+ static flag(n) {
238
+ return new StateKeys(1n << BigInt(n));
231
239
  }
232
- }
233
- StateKeys.DISPLAY = new StateKeys(1n << 0n);
234
- StateKeys.POSITION = new StateKeys(1n << 1n);
235
- StateKeys.DIRECTION = new StateKeys(1n << 2n);
236
- StateKeys.FLEX_DIRECTION = new StateKeys(1n << 3n);
237
- StateKeys.FLEX_WRAP = new StateKeys(1n << 4n);
238
- StateKeys.OVERFLOW_X = new StateKeys(1n << 5n);
239
- StateKeys.OVERFLOW_Y = new StateKeys(1n << 6n);
240
- StateKeys.ALIGN_ITEMS = new StateKeys(1n << 7n);
241
- StateKeys.ALIGN_SELF = new StateKeys(1n << 8n);
242
- StateKeys.ALIGN_CONTENT = new StateKeys(1n << 9n);
243
- StateKeys.JUSTIFY_ITEMS = new StateKeys(1n << 10n);
244
- StateKeys.JUSTIFY_SELF = new StateKeys(1n << 11n);
245
- StateKeys.JUSTIFY_CONTENT = new StateKeys(1n << 12n);
246
- StateKeys.INSET = new StateKeys(1n << 13n);
247
- StateKeys.MARGIN = new StateKeys(1n << 14n);
248
- StateKeys.PADDING = new StateKeys(1n << 15n);
249
- StateKeys.BORDER = new StateKeys(1n << 16n);
250
- StateKeys.FLEX_GROW = new StateKeys(1n << 17n);
251
- StateKeys.FLEX_SHRINK = new StateKeys(1n << 18n);
252
- StateKeys.FLEX_BASIS = new StateKeys(1n << 19n);
253
- StateKeys.SIZE = new StateKeys(1n << 20n);
254
- StateKeys.MIN_SIZE = new StateKeys(1n << 21n);
255
- StateKeys.MAX_SIZE = new StateKeys(1n << 22n);
256
- StateKeys.GAP = new StateKeys(1n << 23n);
257
- StateKeys.ASPECT_RATIO = new StateKeys(1n << 24n);
258
- StateKeys.GRID_AUTO_FLOW = new StateKeys(1n << 25n);
259
- StateKeys.GRID_COLUMN = new StateKeys(1n << 26n);
260
- StateKeys.GRID_ROW = new StateKeys(1n << 27n);
261
- StateKeys.SCROLLBAR_WIDTH = new StateKeys(1n << 28n);
262
- StateKeys.TEXT_ALIGN = new StateKeys(1n << 29n);
263
- StateKeys.BOX_SIZING = new StateKeys(1n << 30n);
264
- StateKeys.OVERFLOW = new StateKeys(1n << 31n);
265
- StateKeys.ITEM_IS_TABLE = new StateKeys(1n << 32n);
266
- StateKeys.ITEM_IS_REPLACED = new StateKeys(1n << 33n);
267
- StateKeys.DISPLAY_MODE = new StateKeys(1n << 34n);
268
- StateKeys.FORCE_INLINE = new StateKeys(1n << 35n);
269
- StateKeys.MIN_CONTENT_WIDTH = new StateKeys(1n << 36n);
270
- StateKeys.MIN_CONTENT_HEIGHT = new StateKeys(1n << 37n);
271
- StateKeys.MAX_CONTENT_WIDTH = new StateKeys(1n << 38n);
272
- StateKeys.MAX_CONTENT_HEIGHT = new StateKeys(1n << 39n);
273
- StateKeys.BORDER_STYLE = new StateKeys(1n << 40n);
274
- StateKeys.BORDER_RADIUS = new StateKeys(1n << 41n);
275
- StateKeys.BORDER_COLOR = new StateKeys(1n << 42n);
276
- class TextStateKeys {
277
- constructor(bits) {
278
- this.bits = bits;
240
+ // compatibility: return low bits when code expects single 64-bit value
241
+ get bitsLow() {
242
+ return this.bits;
279
243
  }
280
244
  or(other) {
281
- return new TextStateKeys(this.bits | other.bits);
245
+ return new StateKeys(this.bits | other.bits);
282
246
  }
283
247
  and(other) {
284
- return new TextStateKeys(this.bits & other.bits);
248
+ return new StateKeys(this.bits & other.bits);
285
249
  }
286
250
  hasFlag(flag) {
287
251
  return (this.bits & flag.bits) !== 0n;
288
252
  }
289
253
  }
290
- TextStateKeys.ALL = new TextStateKeys(-1n);
291
- TextStateKeys.NONE = new TextStateKeys(0n);
292
- TextStateKeys.COLOR = new TextStateKeys(1n << 0n);
293
- TextStateKeys.DECORATION_LINE = new TextStateKeys(1n << 1n);
294
- TextStateKeys.DECORATION_COLOR = new TextStateKeys(1n << 2n);
295
- TextStateKeys.TEXT_ALIGN = new TextStateKeys(1n << 3n);
296
- TextStateKeys.TEXT_JUSTIFY = new TextStateKeys(1n << 4n);
297
- TextStateKeys.BACKGROUND_COLOR = new TextStateKeys(1n << 5n);
298
- TextStateKeys.SIZE = new TextStateKeys(1n << 6n);
299
- TextStateKeys.TRANSFORM = new TextStateKeys(1n << 7n);
300
- TextStateKeys.FONT_STYLE = new TextStateKeys(1n << 8n);
301
- TextStateKeys.FONT_STYLE_SLANT = new TextStateKeys(1n << 9n);
302
- TextStateKeys.TEXT_WRAP = new TextStateKeys(1n << 10n);
303
- TextStateKeys.TEXT_OVERFLOW = new TextStateKeys(1n << 11n);
304
- TextStateKeys.DECORATION_STYLE = new TextStateKeys(1n << 12n);
305
- TextStateKeys.WHITE_SPACE = new TextStateKeys(1n << 13n);
306
- TextStateKeys.FONT_WEIGHT = new TextStateKeys(1n << 14n);
307
- TextStateKeys.LINE_HEIGHT = new TextStateKeys(1n << 15n);
308
- TextStateKeys.VERTICAL_ALIGN = new TextStateKeys(1n << 16n);
309
- TextStateKeys.DECORATION_THICKNESS = new TextStateKeys(1n << 17n);
310
- TextStateKeys.TEXT_SHADOW = new TextStateKeys(1n << 18n);
311
- TextStateKeys.FONT_FAMILY = new TextStateKeys(1n << 19n);
312
- TextStateKeys.LETTER_SPACING = new TextStateKeys(1n << 20n);
254
+ StateKeys.NONE = new StateKeys(0n);
255
+ StateKeys.DISPLAY = StateKeys.flag(0);
256
+ StateKeys.POSITION = StateKeys.flag(1);
257
+ StateKeys.DIRECTION = StateKeys.flag(2);
258
+ StateKeys.FLEX_DIRECTION = StateKeys.flag(3);
259
+ StateKeys.FLEX_WRAP = StateKeys.flag(4);
260
+ StateKeys.OVERFLOW_X = StateKeys.flag(5);
261
+ StateKeys.OVERFLOW_Y = StateKeys.flag(6);
262
+ StateKeys.ALIGN_ITEMS = StateKeys.flag(7);
263
+ StateKeys.ALIGN_SELF = StateKeys.flag(8);
264
+ StateKeys.ALIGN_CONTENT = StateKeys.flag(9);
265
+ StateKeys.JUSTIFY_ITEMS = StateKeys.flag(10);
266
+ StateKeys.JUSTIFY_SELF = StateKeys.flag(11);
267
+ StateKeys.JUSTIFY_CONTENT = StateKeys.flag(12);
268
+ StateKeys.INSET = StateKeys.flag(13);
269
+ StateKeys.MARGIN = StateKeys.flag(14);
270
+ StateKeys.PADDING = StateKeys.flag(15);
271
+ StateKeys.BORDER = StateKeys.flag(16);
272
+ StateKeys.FLEX_GROW = StateKeys.flag(17);
273
+ StateKeys.FLEX_SHRINK = StateKeys.flag(18);
274
+ StateKeys.FLEX_BASIS = StateKeys.flag(19);
275
+ StateKeys.SIZE = StateKeys.flag(20);
276
+ StateKeys.MIN_SIZE = StateKeys.flag(21);
277
+ StateKeys.MAX_SIZE = StateKeys.flag(22);
278
+ StateKeys.GAP = StateKeys.flag(23);
279
+ StateKeys.ASPECT_RATIO = StateKeys.flag(24);
280
+ StateKeys.GRID_AUTO_FLOW = StateKeys.flag(25);
281
+ StateKeys.GRID_COLUMN = StateKeys.flag(26);
282
+ StateKeys.GRID_ROW = StateKeys.flag(27);
283
+ StateKeys.SCROLLBAR_WIDTH = StateKeys.flag(28);
284
+ StateKeys.ALIGN = StateKeys.flag(29);
285
+ StateKeys.BOX_SIZING = StateKeys.flag(30);
286
+ StateKeys.OVERFLOW = StateKeys.flag(31);
287
+ StateKeys.ITEM_IS_TABLE = StateKeys.flag(32);
288
+ StateKeys.ITEM_IS_REPLACED = StateKeys.flag(33);
289
+ StateKeys.DISPLAY_MODE = StateKeys.flag(34);
290
+ StateKeys.FORCE_INLINE = StateKeys.flag(35);
291
+ StateKeys.MIN_CONTENT_WIDTH = StateKeys.flag(36);
292
+ StateKeys.MIN_CONTENT_HEIGHT = StateKeys.flag(37);
293
+ StateKeys.MAX_CONTENT_WIDTH = StateKeys.flag(38);
294
+ StateKeys.MAX_CONTENT_HEIGHT = StateKeys.flag(39);
295
+ StateKeys.BORDER_STYLE = StateKeys.flag(40);
296
+ StateKeys.BORDER_RADIUS = StateKeys.flag(41);
297
+ StateKeys.BORDER_COLOR = StateKeys.flag(42);
298
+ StateKeys.FLOAT = StateKeys.flag(43);
299
+ StateKeys.CLEAR = StateKeys.flag(44);
300
+ StateKeys.OBJECT_FIT = StateKeys.flag(45);
301
+ StateKeys.Z_INDEX = StateKeys.flag(46);
302
+ StateKeys.LIST_STYLE_POSITION = StateKeys.flag(47);
303
+ StateKeys.LIST_STYLE_TYPE = StateKeys.flag(48);
304
+ StateKeys.INVALIDATE_TEXT = StateKeys.flag(49);
305
+ StateKeys.FONT_COLOR = StateKeys.flag(50);
306
+ StateKeys.DECORATION_LINE = StateKeys.flag(51);
307
+ StateKeys.DECORATION_COLOR = StateKeys.flag(52);
308
+ StateKeys.TEXT_ALIGN = StateKeys.flag(53);
309
+ StateKeys.TEXT_JUSTIFY = StateKeys.flag(54);
310
+ StateKeys.BACKGROUND_COLOR = StateKeys.flag(55);
311
+ StateKeys.FONT_SIZE = StateKeys.flag(56);
312
+ StateKeys.TEXT_TRANSFORM = StateKeys.flag(57);
313
+ StateKeys.FONT_STYLE = StateKeys.flag(58);
314
+ StateKeys.FONT_STYLE_SLANT = StateKeys.flag(59);
315
+ StateKeys.TEXT_WRAP = StateKeys.flag(60);
316
+ StateKeys.TEXT_OVERFLOW = StateKeys.flag(61);
317
+ StateKeys.DECORATION_STYLE = StateKeys.flag(62);
318
+ StateKeys.WHITE_SPACE = StateKeys.flag(63);
319
+ StateKeys.FONT_WEIGHT = StateKeys.flag(64);
320
+ StateKeys.LINE_HEIGHT = StateKeys.flag(65);
321
+ StateKeys.VERTICAL_ALIGN = StateKeys.flag(66);
322
+ StateKeys.DECORATION_THICKNESS = StateKeys.flag(67);
323
+ StateKeys.TEXT_SHADOWS = StateKeys.flag(68);
324
+ StateKeys.FONT_FAMILY = StateKeys.flag(69);
325
+ StateKeys.LETTER_SPACING = StateKeys.flag(70);
326
+ StateKeys.FONT_VARIANT_NUMERIC = StateKeys.flag(71);
327
+ StateKeys.OBJECT_POSITION = StateKeys.flag(72);
328
+ StateKeys.WRITING_MODE = StateKeys.flag(73);
329
+ StateKeys.UNICODE_BIDI = StateKeys.flag(74);
330
+ StateKeys.HYPHENS = StateKeys.flag(75);
331
+ StateKeys.CARET_COLOR = StateKeys.flag(76);
332
+ StateKeys.WORD_SPACING = StateKeys.flag(77);
333
+ StateKeys.FONT_STRETCH = StateKeys.flag(78);
313
334
  const getInt8 = (view, offset) => {
314
335
  return view.getInt8(offset);
315
336
  };
@@ -322,6 +343,22 @@ const getUint8 = (view, offset) => {
322
343
  const setUint8 = (view, offset, value) => {
323
344
  view.setUint8(offset, value);
324
345
  };
346
+ const splitBigIntToInt64Parts = (value) => {
347
+ const MASK64 = (1n << 64n) - 1n;
348
+ const LOW = value & MASK64;
349
+ let HIGH = value >> 64n;
350
+ // Ensure HIGH fits into signed 64-bit range
351
+ const SIGN_BIT = 1n << 63n;
352
+ if ((HIGH & SIGN_BIT) !== 0n) {
353
+ // convert to signed representation
354
+ HIGH = HIGH - (1n << 64n);
355
+ }
356
+ let lowSigned = LOW;
357
+ if ((LOW & SIGN_BIT) !== 0n) {
358
+ lowSigned = LOW - (1n << 64n);
359
+ }
360
+ return [lowSigned.toString(), HIGH.toString()];
361
+ };
325
362
  const getInt16 = (view, offset) => {
326
363
  return view.getInt16(offset, true);
327
364
  };
@@ -346,11 +383,109 @@ const getFloat32 = (view, offset) => {
346
383
  const setFloat32 = (view, offset, value) => {
347
384
  view.setFloat32(offset, value, true);
348
385
  };
386
+ const i8Buffer = new Int8Array(4);
387
+ const f32Buffer = new Uint8Array(Float32Array.BYTES_PER_ELEMENT * 4);
388
+ const f32View = new Float32Array(f32Buffer.buffer);
389
+ const i32Buffer = new Uint8Array(Int32Array.BYTES_PER_ELEMENT * 4);
390
+ const i32View = new Int32Array(i32Buffer.buffer);
391
+ function normalizeColorValue(value) {
392
+ switch (typeof value) {
393
+ case 'number':
394
+ return value;
395
+ case 'string':
396
+ try {
397
+ return new Color(value).argb;
398
+ }
399
+ catch (_) {
400
+ return null;
401
+ }
402
+ case 'object':
403
+ if (value instanceof Color) {
404
+ return value.argb;
405
+ }
406
+ if (value && typeof value.argb === 'number') {
407
+ return value.argb;
408
+ }
409
+ return null;
410
+ default:
411
+ return null;
412
+ }
413
+ }
414
+ const BORDER_STYLE_VALUES = ['none', 'hidden', 'dotted', 'dashed', 'solid', 'double', 'groove', 'ridge', 'inset', 'outset'];
415
+ function borderStyleToEnum(value) {
416
+ const idx = BORDER_STYLE_VALUES.indexOf(value);
417
+ return idx === -1 ? -1 : idx;
418
+ }
419
+ function borderStyleFromEnum(value) {
420
+ return BORDER_STYLE_VALUES[value] ?? 'none';
421
+ }
422
+ function parseObjectPosition(value) {
423
+ const keywords = {
424
+ left: { type: 1, val: 0 },
425
+ center: { type: 1, val: 50 },
426
+ right: { type: 1, val: 100 },
427
+ top: { type: 1, val: 0 },
428
+ bottom: { type: 1, val: 100 },
429
+ };
430
+ const parts = value.trim().split(/\s+/);
431
+ if (parts.length === 0)
432
+ return null;
433
+ function parseComponent(s) {
434
+ const kw = keywords[s];
435
+ if (kw)
436
+ return kw;
437
+ if (s.endsWith('%'))
438
+ return { type: 1, val: parseFloat(s) };
439
+ return { type: 0, val: parseFloat(s) };
440
+ }
441
+ if (parts.length === 1) {
442
+ const c = parseComponent(parts[0]);
443
+ if (!c)
444
+ return null;
445
+ return { xType: c.type, xVal: c.val, yType: 1, yVal: 50 };
446
+ }
447
+ const x = parseComponent(parts[0]);
448
+ const y = parseComponent(parts[1]);
449
+ if (!x || !y)
450
+ return null;
451
+ return { xType: x.type, xVal: x.val, yType: y.type, yVal: y.val };
452
+ }
453
+ const FONT_STRETCH_KEYWORDS = {
454
+ 'ultra-condensed': 5000,
455
+ 'extra-condensed': 6250,
456
+ condensed: 7500,
457
+ 'semi-condensed': 8750,
458
+ normal: 10000,
459
+ 'semi-expanded': 11250,
460
+ expanded: 12500,
461
+ 'extra-expanded': 15000,
462
+ 'ultra-expanded': 20000,
463
+ };
464
+ function fontStretchToValue(value) {
465
+ const trimmed = value.trim();
466
+ const kw = FONT_STRETCH_KEYWORDS[trimmed];
467
+ if (kw !== undefined)
468
+ return kw;
469
+ if (trimmed.endsWith('%')) {
470
+ const pct = parseFloat(trimmed);
471
+ if (isNaN(pct) || pct < 0)
472
+ return -1;
473
+ return Math.round(pct * 100);
474
+ }
475
+ return -1;
476
+ }
477
+ function fontStretchFromValue(v) {
478
+ for (const [kw, val] of Object.entries(FONT_STRETCH_KEYWORDS)) {
479
+ if (val === v)
480
+ return kw;
481
+ }
482
+ return `${v / 100}%`;
483
+ }
349
484
  export class Style {
350
485
  constructor() {
351
486
  this.isDirty = -1n;
352
- this.isTextDirty = -1n;
353
487
  this.inBatch = false;
488
+ this._syncScheduled = false;
354
489
  }
355
490
  static fromView(view, nativeView) {
356
491
  //console.time('fromView');
@@ -366,9 +501,8 @@ export class Style {
366
501
  const styleBuffer = style.getValues();
367
502
  const buffer = ArrayBuffer.from(styleBuffer);
368
503
  ret.style_view = new DataView(buffer);
369
- const textStyleBuffer = style.getTextValues();
370
- const textBuffer = ArrayBuffer.from(textStyleBuffer);
371
- ret.text_style_view = new DataView(textBuffer);
504
+ ret.i8View = new Int8Array(buffer);
505
+ ret.u8View = new Uint8Array(buffer);
372
506
  }
373
507
  else if (__APPLE__) {
374
508
  let style = nativeView?.style;
@@ -378,27 +512,136 @@ export class Style {
378
512
  const styleBuffer = style.values;
379
513
  const buffer = interop.bufferFromData(styleBuffer);
380
514
  ret.style_view = new DataView(buffer);
381
- //@ts-ignore
382
- const textStyleBuffer = style.textValues;
383
- const textBuffer = interop.bufferFromData(textStyleBuffer);
384
- ret.text_style_view = new DataView(textBuffer);
515
+ ret.i8View = new Int8Array(buffer);
516
+ ret.u8View = new Uint8Array(buffer);
385
517
  }
386
518
  //console.timeEnd('fromView');
387
519
  return ret;
388
520
  }
521
+ static fromPseudo(pseudo, view, nativeView) {
522
+ var mask = -1;
523
+ switch (pseudo) {
524
+ case 'normal':
525
+ return Style.fromView(view, nativeView);
526
+ case 'hover':
527
+ mask = 1;
528
+ break;
529
+ case 'focus':
530
+ mask = 4;
531
+ break;
532
+ case 'highlighted':
533
+ case 'pressed':
534
+ case 'active':
535
+ mask = 2;
536
+ break;
537
+ case 'disabled':
538
+ mask = 64;
539
+ break;
540
+ default:
541
+ break;
542
+ }
543
+ if (mask === -1) {
544
+ return null;
545
+ }
546
+ const ret = new Style();
547
+ ret._pseudo = mask;
548
+ ret.view_ = view;
549
+ if (__ANDROID__) {
550
+ let node = nativeView?.getNode?.();
551
+ if (!node) {
552
+ // if a non mason view is passed
553
+ node = org.nativescript.mason.masonkit.Mason.getShared().nodeForView(nativeView);
554
+ }
555
+ ret.nativeNode = node;
556
+ const pseudoBuffer = node.preparePseudoBuffer(mask);
557
+ const buffer = ArrayBuffer.from(pseudoBuffer);
558
+ ret.style_view = new DataView(buffer);
559
+ ret.i8View = new Int8Array(buffer);
560
+ ret.u8View = new Uint8Array(buffer);
561
+ ret.clearPseudoSetMask();
562
+ }
563
+ else if (__APPLE__) {
564
+ let node = nativeView?.node;
565
+ if (!node) {
566
+ node = NSCMason.shared.nodeForView(nativeView, false);
567
+ }
568
+ ret.nativeNode = node;
569
+ //@ts-ignore
570
+ const pseudoBuffer = node.preparePseudoBuffer(mask);
571
+ const buffer = interop.bufferFromData(pseudoBuffer);
572
+ ret.style_view = new DataView(buffer);
573
+ ret.i8View = new Int8Array(buffer);
574
+ ret.u8View = new Uint8Array(buffer);
575
+ ret.clearPseudoSetMask();
576
+ }
577
+ return ret;
578
+ }
579
+ clearPseudoSetMask() {
580
+ const LOW_OFFSET = StyleKeys.PSEUDO_SET_MASK_LOW;
581
+ const HIGH_OFFSET = StyleKeys.PSEUDO_SET_MASK_HIGH;
582
+ if (this.style_view.byteLength < HIGH_OFFSET + 8) {
583
+ return;
584
+ }
585
+ this.style_view.setBigUint64(LOW_OFFSET, 0n, true);
586
+ this.style_view.setBigUint64(HIGH_OFFSET, 0n, true);
587
+ }
588
+ markPseudoSet(key) {
589
+ const LOW_OFFSET = StyleKeys.PSEUDO_SET_MASK_LOW;
590
+ const HIGH_OFFSET = StyleKeys.PSEUDO_SET_MASK_HIGH;
591
+ if (this.style_view.byteLength < HIGH_OFFSET + 8)
592
+ return;
593
+ const low = this.style_view.getBigUint64(LOW_OFFSET, true);
594
+ const high = this.style_view.getBigUint64(HIGH_OFFSET, true);
595
+ const MASK64 = (1n << 64n) - 1n;
596
+ const keyLow = key.bits & MASK64;
597
+ const keyHigh = (key.bits >> 64n) & MASK64;
598
+ this.style_view.setBigUint64(LOW_OFFSET, low | keyLow, true);
599
+ this.style_view.setBigUint64(HIGH_OFFSET, high | keyHigh, true);
600
+ }
601
+ commitState(value) {
602
+ if (this._pseudo) {
603
+ this.markPseudoSet(value);
604
+ }
605
+ else {
606
+ this.setOrAppendState(value);
607
+ }
608
+ }
609
+ setPseudoCssStringValue(name, value, applyAndroid, applyApple) {
610
+ if (!this.nativeView) {
611
+ return;
612
+ }
613
+ if (__ANDROID__) {
614
+ if (this._pseudo) {
615
+ this.nativeNode.setPseudoString(this._pseudo, name, value);
616
+ }
617
+ else {
618
+ applyAndroid();
619
+ }
620
+ }
621
+ if (__APPLE__) {
622
+ if (this._pseudo) {
623
+ this.nativeNode.setPseudoString(this._pseudo, name, value);
624
+ }
625
+ else {
626
+ applyApple();
627
+ }
628
+ }
629
+ }
389
630
  resetState() {
390
631
  this.isDirty = -1n;
391
- this.isTextDirty = -1n;
392
632
  }
393
633
  syncStyle() {
634
+ const [low, high] = splitBigIntToInt64Parts(this.isDirty);
394
635
  if (__ANDROID__) {
395
- const view = this.view.android;
396
- view.syncStyle(this.isDirty.toString(), this.isTextDirty.toString());
636
+ //@ts-ignore
637
+ const view = this.view?.android ?? this.view._view;
638
+ view.syncStyle(low, high);
397
639
  }
398
640
  else if (__APPLE__) {
399
- const view = this.view.ios;
641
+ //@ts-ignore
642
+ const view = this.view?.ios ?? this.view._view;
400
643
  // @ts-ignore
401
- view.mason_syncStyle(this.isDirty.toString(), this.isTextDirty.toString());
644
+ view.mason_syncStyle(low, high);
402
645
  }
403
646
  this.resetState();
404
647
  }
@@ -410,18 +653,19 @@ export class Style {
410
653
  this.isDirty = this.isDirty | value.bits;
411
654
  }
412
655
  if (!this.inBatch) {
413
- this.syncStyle();
414
- }
415
- }
416
- setOrAppendTextState(value) {
417
- if (this.isTextDirty == -1n) {
418
- this.isTextDirty = value.bits;
419
- }
420
- else {
421
- this.isTextDirty = this.isTextDirty | value.bits;
422
- }
423
- if (!this.inBatch) {
424
- this.syncStyle();
656
+ // Coalesce rapid-fire property changes (e.g. CSS batch apply) into a
657
+ // single syncStyle() call on the next microtask. This avoids N
658
+ // separate JNI/FFI round-trips when N properties change in the same
659
+ // JS turn.
660
+ if (!this._syncScheduled) {
661
+ this._syncScheduled = true;
662
+ queueMicrotask(() => {
663
+ this._syncScheduled = false;
664
+ if (this.isDirty !== -1n) {
665
+ this.syncStyle();
666
+ }
667
+ });
668
+ }
425
669
  }
426
670
  }
427
671
  batch(fn) {
@@ -433,8 +677,42 @@ export class Style {
433
677
  get view() {
434
678
  return this.view_;
435
679
  }
680
+ prepareMut() {
681
+ // always mut
682
+ if (this._pseudo) {
683
+ return;
684
+ }
685
+ const ref = getUint32(this.style_view, StyleKeys.REF_COUNT);
686
+ if (ref !== 1) {
687
+ if (__APPLE__) {
688
+ let style = this.nativeView?.style;
689
+ if (!style) {
690
+ style = NSCMason.shared.styleForViewOrNode(this.nativeView);
691
+ }
692
+ style.prepareMut();
693
+ const styleBuffer = style.values;
694
+ const buffer = interop.bufferFromData(styleBuffer);
695
+ this.style_view = new DataView(buffer);
696
+ this.i8View = new Int8Array(buffer);
697
+ this.u8View = new Uint8Array(buffer);
698
+ }
699
+ if (__ANDROID__) {
700
+ let style = this.nativeView?.getStyle?.();
701
+ if (!style) {
702
+ // if a non mason view is passed
703
+ style = org.nativescript.mason.masonkit.Mason.getShared().styleForViewOrNode(this.nativeView);
704
+ }
705
+ style.prepareMut();
706
+ const styleBuffer = style.getValues();
707
+ const buffer = ArrayBuffer.from(styleBuffer);
708
+ this.style_view = new DataView(buffer);
709
+ this.i8View = new Int8Array(buffer);
710
+ this.u8View = new Uint8Array(buffer);
711
+ }
712
+ }
713
+ }
436
714
  get boxSizing() {
437
- switch (getUint32(this.style_view, StyleKeys.BOX_SIZING)) {
715
+ switch (getUint8(this.style_view, StyleKeys.BOX_SIZING)) {
438
716
  case 0:
439
717
  return 'border-box';
440
718
  case 1:
@@ -452,67 +730,68 @@ export class Style {
452
730
  break;
453
731
  }
454
732
  if (boxSizing !== -1) {
455
- setUint32(this.style_view, StyleKeys.BOX_SIZING, boxSizing);
456
- this.setOrAppendState(StateKeys.BOX_SIZING);
733
+ this.prepareMut();
734
+ setUint8(this.style_view, StyleKeys.BOX_SIZING, boxSizing);
735
+ this.commitState(StateKeys.BOX_SIZING);
457
736
  }
458
737
  }
459
738
  get fontSize() {
460
- if (!this.text_style_view) {
739
+ if (!this.style_view) {
461
740
  // BLACK ?
462
741
  return 16;
463
742
  }
464
- const type = getUint8(this.text_style_view, TextStyleKeys.SIZE_TYPE);
465
- const value = getInt32(this.text_style_view, TextStyleKeys.SIZE);
743
+ const type = getUint8(this.style_view, StyleKeys.FONT_SIZE_TYPE);
744
+ const value = getInt32(this.style_view, StyleKeys.FONT_SIZE);
466
745
  if (type === 1) {
467
746
  return `${value / 100}%`;
468
747
  }
469
748
  return value;
470
749
  }
471
750
  set fontSize(value) {
472
- if (!this.text_style_view) {
751
+ if (!this.style_view) {
473
752
  return;
474
753
  }
475
754
  switch (typeof value) {
476
755
  case 'number':
477
- setInt32(this.text_style_view, TextStyleKeys.SIZE, value);
478
- setInt8(this.text_style_view, TextStyleKeys.SIZE_STATE, 1);
479
- setInt8(this.text_style_view, TextStyleKeys.SIZE_TYPE, 0);
480
- this.setOrAppendTextState(TextStateKeys.SIZE);
756
+ this.prepareMut();
757
+ setInt32(this.style_view, StyleKeys.FONT_SIZE, value);
758
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_STATE, 1);
759
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_TYPE, 0);
760
+ this.commitState(StateKeys.FONT_SIZE);
481
761
  break;
482
762
  case 'object':
483
763
  switch (value.unit) {
484
764
  case 'dip':
485
- setInt32(this.text_style_view, TextStyleKeys.SIZE, value.value);
486
- setInt8(this.text_style_view, TextStyleKeys.SIZE_STATE, 1);
487
- setInt8(this.text_style_view, TextStyleKeys.SIZE_TYPE, 0);
488
- this.setOrAppendTextState(TextStateKeys.SIZE);
765
+ this.prepareMut();
766
+ setInt32(this.style_view, StyleKeys.FONT_SIZE, layout.toDeviceIndependentPixels(value.value));
767
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_STATE, 1);
768
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_TYPE, 0);
769
+ this.commitState(StateKeys.FONT_SIZE);
489
770
  break;
490
771
  case 'px':
491
- setInt32(this.text_style_view, TextStyleKeys.SIZE, layout.toDeviceIndependentPixels(value.value));
492
- setInt8(this.text_style_view, TextStyleKeys.SIZE_STATE, 1);
493
- setInt8(this.text_style_view, TextStyleKeys.SIZE_TYPE, 0);
494
- this.setOrAppendTextState(TextStateKeys.SIZE);
772
+ this.prepareMut();
773
+ setInt32(this.style_view, StyleKeys.FONT_SIZE, value.value);
774
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_STATE, 1);
775
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_TYPE, 0);
776
+ this.commitState(StateKeys.FONT_SIZE);
495
777
  break;
496
778
  case '%':
497
- setInt32(this.text_style_view, TextStyleKeys.SIZE, value.value * 100);
498
- setInt8(this.text_style_view, TextStyleKeys.SIZE_STATE, 1);
499
- setInt8(this.text_style_view, TextStyleKeys.SIZE_TYPE, 1);
500
- this.setOrAppendTextState(TextStateKeys.SIZE);
779
+ this.prepareMut();
780
+ setInt32(this.style_view, StyleKeys.FONT_SIZE, value.value * 100);
781
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_STATE, 1);
782
+ setInt8(this.style_view, StyleKeys.FONT_SIZE_TYPE, 1);
783
+ this.commitState(StateKeys.FONT_SIZE);
501
784
  break;
502
785
  }
503
786
  break;
504
787
  }
505
- if (value && typeof value === 'object') {
506
- }
507
- else {
508
- }
509
788
  }
510
789
  get fontStyle() {
511
- if (!this.text_style_view) {
790
+ if (!this.style_view) {
512
791
  // normal ?
513
792
  return 'normal';
514
793
  }
515
- switch (getInt32(this.text_style_view, TextStyleKeys.FONT_STYLE_TYPE)) {
794
+ switch (getInt32(this.style_view, StyleKeys.FONT_STYLE_TYPE)) {
516
795
  case 0:
517
796
  return 'normal';
518
797
  case 1:
@@ -524,7 +803,7 @@ export class Style {
524
803
  }
525
804
  }
526
805
  set fontStyle(value) {
527
- if (!this.text_style_view) {
806
+ if (!this.style_view) {
528
807
  return;
529
808
  }
530
809
  let style = -1;
@@ -540,20 +819,21 @@ export class Style {
540
819
  break;
541
820
  }
542
821
  if (style !== -1) {
543
- setInt32(this.text_style_view, TextStyleKeys.FONT_STYLE_TYPE, style);
544
- setInt8(this.text_style_view, TextStyleKeys.FONT_STYLE_STATE, 1);
545
- this.setOrAppendTextState(TextStateKeys.FONT_STYLE);
822
+ this.prepareMut();
823
+ setInt32(this.style_view, StyleKeys.FONT_STYLE_TYPE, style);
824
+ setInt8(this.style_view, StyleKeys.FONT_STYLE_STATE, 1);
825
+ this.commitState(StateKeys.FONT_STYLE);
546
826
  }
547
827
  }
548
828
  get fontWeight() {
549
- if (!this.text_style_view) {
829
+ if (!this.style_view) {
550
830
  // BLACK ?
551
831
  return 400;
552
832
  }
553
- return getInt32(this.text_style_view, TextStyleKeys.FONT_WEIGHT);
833
+ return getInt32(this.style_view, StyleKeys.FONT_WEIGHT);
554
834
  }
555
835
  set fontWeight(value) {
556
- if (!this.text_style_view) {
836
+ if (!this.style_view) {
557
837
  return;
558
838
  }
559
839
  let weight = -1;
@@ -594,50 +874,68 @@ export class Style {
594
874
  break;
595
875
  }
596
876
  if (weight !== -1) {
597
- setInt32(this.text_style_view, TextStyleKeys.FONT_WEIGHT, weight);
598
- setInt8(this.text_style_view, TextStyleKeys.FONT_WEIGHT_STATE, 1);
599
- this.setOrAppendTextState(TextStateKeys.FONT_WEIGHT);
877
+ this.prepareMut();
878
+ setInt32(this.style_view, StyleKeys.FONT_WEIGHT, weight);
879
+ setInt8(this.style_view, StyleKeys.FONT_WEIGHT_STATE, 1);
880
+ this.commitState(StateKeys.FONT_WEIGHT);
600
881
  }
601
882
  }
602
883
  get color() {
603
- if (!this.text_style_view) {
884
+ if (!this.style_view) {
604
885
  // BLACK ?
605
886
  return 0;
606
887
  }
607
- return getUint32(this.text_style_view, TextStyleKeys.COLOR);
888
+ return getUint32(this.style_view, StyleKeys.FONT_COLOR);
608
889
  }
609
890
  set color(value) {
610
- if (!this.text_style_view) {
891
+ if (!this.style_view) {
611
892
  return;
612
893
  }
613
- setUint32(this.text_style_view, TextStyleKeys.COLOR, value);
614
- setInt8(this.text_style_view, TextStyleKeys.COLOR_STATE, 1);
615
- this.setOrAppendTextState(TextStateKeys.COLOR);
894
+ const normalized = normalizeColorValue(value);
895
+ if (normalized == null) {
896
+ return;
897
+ }
898
+ this.prepareMut();
899
+ setUint32(this.style_view, StyleKeys.FONT_COLOR, normalized);
900
+ setInt8(this.style_view, StyleKeys.FONT_COLOR_STATE, 1);
901
+ this.commitState(StateKeys.FONT_COLOR);
902
+ }
903
+ set 'background-color'(value) {
904
+ this.backgroundColor = value;
905
+ }
906
+ get 'background-color'() {
907
+ return this.backgroundColor;
616
908
  }
617
909
  get backgroundColor() {
618
- if (!this.text_style_view) {
910
+ if (!this.style_view) {
619
911
  // BLACK ?
620
912
  return 0;
621
913
  }
622
- return getUint32(this.text_style_view, TextStyleKeys.BACKGROUND_COLOR);
914
+ return getUint32(this.style_view, StyleKeys.BACKGROUND_COLOR);
623
915
  }
624
916
  set backgroundColor(value) {
625
- if (!this.text_style_view) {
917
+ if (!this.style_view) {
626
918
  return;
627
919
  }
628
- setUint32(this.text_style_view, TextStyleKeys.BACKGROUND_COLOR, value);
629
- setInt8(this.text_style_view, TextStyleKeys.BACKGROUND_COLOR_STATE, 1);
630
- this.setOrAppendTextState(TextStateKeys.BACKGROUND_COLOR);
920
+ const normalized = normalizeColorValue(value);
921
+ if (normalized == null) {
922
+ return;
923
+ }
924
+ this.prepareMut();
925
+ setUint32(this.style_view, StyleKeys.BACKGROUND_COLOR, normalized);
926
+ setInt8(this.style_view, StyleKeys.BACKGROUND_COLOR_STATE, 1);
927
+ setInt8(this.style_view, StyleKeys.BACKGROUND_COLOR_TYPE, 0);
928
+ this.commitState(StateKeys.BACKGROUND_COLOR);
631
929
  }
632
930
  get textWrap() {
633
- if (!this.text_style_view) {
931
+ if (!this.style_view) {
634
932
  // BLACK ?
635
933
  return 0;
636
934
  }
637
- return getInt32(this.text_style_view, TextStyleKeys.TEXT_WRAP);
935
+ return getInt32(this.style_view, StyleKeys.TEXT_WRAP);
638
936
  }
639
937
  set textWrap(value) {
640
- if (!this.text_style_view) {
938
+ if (!this.style_view) {
641
939
  return;
642
940
  }
643
941
  let wrap = -1;
@@ -656,20 +954,21 @@ export class Style {
656
954
  wrap = value;
657
955
  }
658
956
  if (wrap !== -1) {
659
- setInt32(this.text_style_view, TextStyleKeys.TEXT_WRAP, wrap);
660
- setInt8(this.text_style_view, TextStyleKeys.TEXT_WRAP_STATE, 1);
661
- this.setOrAppendTextState(TextStateKeys.TEXT_WRAP);
957
+ this.prepareMut();
958
+ setInt32(this.style_view, StyleKeys.TEXT_WRAP, wrap);
959
+ setInt8(this.style_view, StyleKeys.TEXT_WRAP_STATE, 1);
960
+ this.commitState(StateKeys.TEXT_WRAP);
662
961
  }
663
962
  }
664
963
  get styleView() {
665
964
  return this.style_view;
666
965
  }
667
966
  get display() {
668
- const mode = getInt32(this.style_view, StyleKeys.DISPLAY_MODE);
967
+ const mode = getInt8(this.style_view, StyleKeys.DISPLAY_MODE);
669
968
  if (mode === 1 /* DisplayMode.Inline */) {
670
969
  return 'inline';
671
970
  }
672
- switch (getInt32(this.style_view, StyleKeys.DISPLAY)) {
971
+ switch (getInt8(this.style_view, StyleKeys.DISPLAY)) {
673
972
  case 0:
674
973
  return 'none';
675
974
  case 1:
@@ -727,13 +1026,20 @@ export class Style {
727
1026
  break;
728
1027
  }
729
1028
  if (display != -1) {
730
- setInt32(this.style_view, StyleKeys.DISPLAY, display);
731
- setInt32(this.style_view, StyleKeys.DISPLAY_MODE, displayMode);
732
- this.setOrAppendState(StateKeys.DISPLAY);
1029
+ this.prepareMut();
1030
+ setInt8(this.style_view, StyleKeys.DISPLAY, display);
1031
+ setInt8(this.style_view, StyleKeys.DISPLAY_MODE, displayMode);
1032
+ if (this.isDirty == -1n) {
1033
+ this.isDirty = StateKeys.DISPLAY_MODE.bits;
1034
+ }
1035
+ else {
1036
+ this.isDirty = this.isDirty | StateKeys.DISPLAY_MODE.bits;
1037
+ }
1038
+ this.commitState(StateKeys.DISPLAY.and(StateKeys.DISPLAY_MODE));
733
1039
  }
734
1040
  }
735
1041
  get position() {
736
- switch (getInt32(this.style_view, StyleKeys.POSITION)) {
1042
+ switch (getInt8(this.style_view, StyleKeys.POSITION)) {
737
1043
  case 0:
738
1044
  return 'relative';
739
1045
  case 1:
@@ -751,16 +1057,17 @@ export class Style {
751
1057
  break;
752
1058
  }
753
1059
  if (position != -1) {
754
- setInt32(this.style_view, StyleKeys.POSITION, position);
755
- this.setOrAppendState(StateKeys.POSITION);
1060
+ this.prepareMut();
1061
+ setInt8(this.style_view, StyleKeys.POSITION, position);
1062
+ this.commitState(StateKeys.POSITION);
756
1063
  }
757
1064
  }
758
1065
  get flexDirection() {
759
- switch (getInt32(this.style_view, StyleKeys.FLEX_DIRECTION)) {
1066
+ switch (getInt8(this.style_view, StyleKeys.FLEX_DIRECTION)) {
760
1067
  case 0:
761
- return 'column';
762
- case 1:
763
1068
  return 'row';
1069
+ case 1:
1070
+ return 'column';
764
1071
  case 2:
765
1072
  return 'row-reverse';
766
1073
  case 3:
@@ -770,10 +1077,10 @@ export class Style {
770
1077
  set flexDirection(value) {
771
1078
  let flex = -1;
772
1079
  switch (value) {
773
- case 'column':
1080
+ case 'row':
774
1081
  flex = 0;
775
1082
  break;
776
- case 'row':
1083
+ case 'column':
777
1084
  flex = 1;
778
1085
  break;
779
1086
  case 'row-reverse':
@@ -784,12 +1091,13 @@ export class Style {
784
1091
  break;
785
1092
  }
786
1093
  if (flex != -1) {
787
- setInt32(this.style_view, StyleKeys.FLEX_DIRECTION, flex);
788
- this.setOrAppendState(StateKeys.FLEX_DIRECTION);
1094
+ this.prepareMut();
1095
+ setInt8(this.style_view, StyleKeys.FLEX_DIRECTION, flex);
1096
+ this.commitState(StateKeys.FLEX_DIRECTION);
789
1097
  }
790
1098
  }
791
1099
  get flexWrap() {
792
- switch (getInt32(this.style_view, StyleKeys.FLEX_WRAP)) {
1100
+ switch (getInt8(this.style_view, StyleKeys.FLEX_WRAP)) {
793
1101
  case 0:
794
1102
  return 'no-wrap';
795
1103
  case 1:
@@ -812,8 +1120,9 @@ export class Style {
812
1120
  break;
813
1121
  }
814
1122
  if (wrap != -1) {
815
- setInt32(this.style_view, StyleKeys.FLEX_WRAP, wrap);
816
- this.setOrAppendState(StateKeys.FLEX_WRAP);
1123
+ this.prepareMut();
1124
+ setInt8(this.style_view, StyleKeys.FLEX_WRAP, wrap);
1125
+ this.commitState(StateKeys.FLEX_WRAP);
817
1126
  }
818
1127
  }
819
1128
  // get flex(): string | 'auto' | 'none' | number | 'initial' {
@@ -821,727 +1130,899 @@ export class Style {
821
1130
  // }
822
1131
  // get flexFlow(): string
823
1132
  get minWidth() {
824
- const type = getInt32(this.style_view, StyleKeys.MIN_WIDTH_TYPE);
1133
+ const type = getInt8(this.style_view, StyleKeys.MIN_WIDTH_TYPE);
825
1134
  const value = getFloat32(this.style_view, StyleKeys.MIN_WIDTH_VALUE);
826
1135
  return parseLengthPercentageAuto(type, value);
827
1136
  }
828
1137
  set minWidth(value) {
829
1138
  switch (typeof value) {
830
1139
  case 'string':
831
- setInt32(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 0);
1140
+ this.prepareMut();
1141
+ setInt8(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 0);
832
1142
  break;
833
1143
  case 'number':
834
- setInt32(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 1);
1144
+ this.prepareMut();
1145
+ setInt8(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 1);
835
1146
  setFloat32(this.style_view, StyleKeys.MIN_WIDTH_VALUE, layout.toDevicePixels(value));
836
1147
  break;
837
1148
  case 'object':
838
1149
  switch (value.unit) {
839
1150
  case 'dip':
840
- setInt32(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 1);
1151
+ this.prepareMut();
1152
+ setInt8(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 1);
841
1153
  setFloat32(this.style_view, StyleKeys.MIN_WIDTH_VALUE, layout.toDevicePixels(value.value));
842
1154
  break;
843
1155
  case 'px':
844
- setInt32(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 1);
1156
+ this.prepareMut();
1157
+ setInt8(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 1);
845
1158
  setFloat32(this.style_view, StyleKeys.MIN_WIDTH_VALUE, value.value);
846
1159
  break;
847
1160
  case '%':
848
- setInt32(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 2);
1161
+ this.prepareMut();
1162
+ setInt8(this.style_view, StyleKeys.MIN_WIDTH_TYPE, 2);
849
1163
  setFloat32(this.style_view, StyleKeys.MIN_WIDTH_VALUE, value.value);
850
1164
  break;
851
1165
  }
852
1166
  break;
853
1167
  }
854
- this.setOrAppendState(StateKeys.MIN_SIZE);
1168
+ this.commitState(StateKeys.MIN_SIZE);
855
1169
  }
856
1170
  get minHeight() {
857
- const type = getInt32(this.style_view, StyleKeys.MIN_HEIGHT_TYPE);
1171
+ const type = getInt8(this.style_view, StyleKeys.MIN_HEIGHT_TYPE);
858
1172
  const value = getFloat32(this.style_view, StyleKeys.MIN_HEIGHT_VALUE);
859
1173
  return parseLengthPercentageAuto(type, value);
860
1174
  }
861
1175
  set minHeight(value) {
862
1176
  switch (typeof value) {
863
1177
  case 'string':
864
- setInt32(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 0);
1178
+ this.prepareMut();
1179
+ setInt8(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 0);
865
1180
  break;
866
1181
  case 'number':
867
- setInt32(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 1);
1182
+ this.prepareMut();
1183
+ setInt8(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 1);
868
1184
  setFloat32(this.style_view, StyleKeys.MIN_HEIGHT_VALUE, layout.toDevicePixels(value));
869
1185
  break;
870
1186
  case 'object':
871
1187
  switch (value.unit) {
872
1188
  case 'dip':
873
- setInt32(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 1);
1189
+ this.prepareMut();
1190
+ setInt8(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 1);
874
1191
  setFloat32(this.style_view, StyleKeys.MIN_HEIGHT_VALUE, layout.toDevicePixels(value.value));
875
1192
  break;
876
1193
  case 'px':
877
- setInt32(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 1);
1194
+ this.prepareMut();
1195
+ setInt8(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 1);
878
1196
  setFloat32(this.style_view, StyleKeys.MIN_HEIGHT_VALUE, value.value);
879
1197
  break;
880
1198
  case '%':
881
- setInt32(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 2);
1199
+ this.prepareMut();
1200
+ setInt8(this.style_view, StyleKeys.MIN_HEIGHT_TYPE, 2);
882
1201
  setFloat32(this.style_view, StyleKeys.MIN_HEIGHT_VALUE, value.value);
883
1202
  break;
884
1203
  }
885
1204
  break;
886
1205
  }
887
- this.setOrAppendState(StateKeys.MIN_SIZE);
1206
+ this.commitState(StateKeys.MIN_SIZE);
888
1207
  }
889
1208
  get width() {
890
- const type = getInt32(this.style_view, StyleKeys.WIDTH_TYPE);
1209
+ const type = getInt8(this.style_view, StyleKeys.WIDTH_TYPE);
891
1210
  const value = getFloat32(this.style_view, StyleKeys.WIDTH_VALUE);
892
1211
  return parseLengthPercentageAuto(type, value);
893
1212
  }
894
1213
  set width(value) {
895
1214
  switch (typeof value) {
896
1215
  case 'string':
897
- setInt32(this.style_view, StyleKeys.WIDTH_TYPE, 0);
1216
+ this.prepareMut();
1217
+ setInt8(this.style_view, StyleKeys.WIDTH_TYPE, 0);
898
1218
  break;
899
1219
  case 'number':
900
- setInt32(this.style_view, StyleKeys.WIDTH_TYPE, 1);
1220
+ this.prepareMut();
1221
+ setInt8(this.style_view, StyleKeys.WIDTH_TYPE, 1);
901
1222
  setFloat32(this.style_view, StyleKeys.WIDTH_VALUE, layout.toDevicePixels(value));
902
1223
  break;
903
1224
  case 'object':
904
1225
  switch (value.unit) {
905
1226
  case 'dip':
906
- setInt32(this.style_view, StyleKeys.WIDTH_TYPE, 1);
1227
+ this.prepareMut();
1228
+ setInt8(this.style_view, StyleKeys.WIDTH_TYPE, 1);
907
1229
  setFloat32(this.style_view, StyleKeys.WIDTH_VALUE, layout.toDevicePixels(value.value));
908
1230
  break;
909
1231
  case 'px':
910
- setInt32(this.style_view, StyleKeys.WIDTH_TYPE, 1);
1232
+ this.prepareMut();
1233
+ setInt8(this.style_view, StyleKeys.WIDTH_TYPE, 1);
911
1234
  setFloat32(this.style_view, StyleKeys.WIDTH_VALUE, value.value);
912
1235
  break;
913
1236
  case '%':
914
- setInt32(this.style_view, StyleKeys.WIDTH_TYPE, 2);
1237
+ this.prepareMut();
1238
+ setInt8(this.style_view, StyleKeys.WIDTH_TYPE, 2);
915
1239
  setFloat32(this.style_view, StyleKeys.WIDTH_VALUE, value.value);
916
1240
  break;
917
1241
  }
918
1242
  break;
919
1243
  }
920
- this.setOrAppendState(StateKeys.SIZE);
1244
+ this.commitState(StateKeys.SIZE);
921
1245
  }
922
1246
  get height() {
923
- const type = getInt32(this.style_view, StyleKeys.HEIGHT_TYPE);
1247
+ const type = getInt8(this.style_view, StyleKeys.HEIGHT_TYPE);
924
1248
  const value = getFloat32(this.style_view, StyleKeys.HEIGHT_VALUE);
925
1249
  return parseLengthPercentageAuto(type, value);
926
1250
  }
927
1251
  set height(value) {
928
1252
  switch (typeof value) {
929
1253
  case 'string':
930
- setInt32(this.style_view, StyleKeys.HEIGHT_TYPE, 0);
1254
+ this.prepareMut();
1255
+ setInt8(this.style_view, StyleKeys.HEIGHT_TYPE, 0);
931
1256
  setFloat32(this.style_view, StyleKeys.HEIGHT_VALUE, 0);
932
1257
  break;
933
1258
  case 'number':
934
- setInt32(this.style_view, StyleKeys.HEIGHT_TYPE, 1);
1259
+ this.prepareMut();
1260
+ setInt8(this.style_view, StyleKeys.HEIGHT_TYPE, 1);
935
1261
  setFloat32(this.style_view, StyleKeys.HEIGHT_VALUE, layout.toDevicePixels(value));
936
1262
  break;
937
1263
  case 'object':
938
1264
  switch (value.unit) {
939
1265
  case 'dip':
940
- setInt32(this.style_view, StyleKeys.HEIGHT_TYPE, 1);
1266
+ this.prepareMut();
1267
+ setInt8(this.style_view, StyleKeys.HEIGHT_TYPE, 1);
941
1268
  setFloat32(this.style_view, StyleKeys.HEIGHT_VALUE, layout.toDevicePixels(value.value));
942
1269
  break;
943
1270
  case 'px':
944
- setInt32(this.style_view, StyleKeys.HEIGHT_TYPE, 1);
1271
+ this.prepareMut();
1272
+ setInt8(this.style_view, StyleKeys.HEIGHT_TYPE, 1);
945
1273
  setFloat32(this.style_view, StyleKeys.HEIGHT_VALUE, value.value);
946
1274
  break;
947
1275
  case '%':
948
- setInt32(this.style_view, StyleKeys.HEIGHT_TYPE, 2);
1276
+ this.prepareMut();
1277
+ setInt8(this.style_view, StyleKeys.HEIGHT_TYPE, 2);
949
1278
  setFloat32(this.style_view, StyleKeys.HEIGHT_VALUE, value.value);
950
1279
  break;
951
1280
  }
952
1281
  break;
953
1282
  }
954
- this.setOrAppendState(StateKeys.SIZE);
1283
+ this.commitState(StateKeys.SIZE);
955
1284
  }
956
1285
  get maxWidth() {
957
- const type = getInt32(this.style_view, StyleKeys.MAX_WIDTH_TYPE);
1286
+ const type = getInt8(this.style_view, StyleKeys.MAX_WIDTH_TYPE);
958
1287
  const value = getFloat32(this.style_view, StyleKeys.MAX_WIDTH_VALUE);
959
1288
  return parseLengthPercentageAuto(type, value);
960
1289
  }
961
1290
  set maxWidth(value) {
962
1291
  switch (typeof value) {
963
1292
  case 'string':
964
- setInt32(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 0);
1293
+ this.prepareMut();
1294
+ setInt8(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 0);
965
1295
  break;
966
1296
  case 'number':
967
- setInt32(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 1);
1297
+ this.prepareMut();
1298
+ setInt8(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 1);
968
1299
  setFloat32(this.style_view, StyleKeys.MAX_WIDTH_VALUE, layout.toDevicePixels(value));
969
1300
  break;
970
1301
  case 'object':
971
1302
  switch (value.unit) {
972
1303
  case 'dip':
973
- setInt32(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 1);
1304
+ this.prepareMut();
1305
+ setInt8(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 1);
974
1306
  setFloat32(this.style_view, StyleKeys.MAX_WIDTH_VALUE, layout.toDevicePixels(value.value));
975
1307
  break;
976
1308
  case 'px':
977
- setInt32(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 1);
1309
+ this.prepareMut();
1310
+ setInt8(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 1);
978
1311
  setFloat32(this.style_view, StyleKeys.MAX_WIDTH_VALUE, value.value);
979
1312
  break;
980
1313
  case '%':
981
- setInt32(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 2);
1314
+ this.prepareMut();
1315
+ setInt8(this.style_view, StyleKeys.MAX_WIDTH_TYPE, 2);
982
1316
  setFloat32(this.style_view, StyleKeys.MAX_WIDTH_VALUE, value.value);
983
1317
  break;
984
1318
  }
985
1319
  break;
986
1320
  }
987
- this.setOrAppendState(StateKeys.MAX_SIZE);
1321
+ this.commitState(StateKeys.MAX_SIZE);
988
1322
  }
989
1323
  get maxHeight() {
990
- const type = getInt32(this.style_view, StyleKeys.MAX_HEIGHT_TYPE);
1324
+ const type = getInt8(this.style_view, StyleKeys.MAX_HEIGHT_TYPE);
991
1325
  const value = getFloat32(this.style_view, StyleKeys.MAX_HEIGHT_VALUE);
992
1326
  return parseLengthPercentageAuto(type, value);
993
1327
  }
994
1328
  set maxHeight(value) {
995
1329
  switch (typeof value) {
996
1330
  case 'string':
997
- setInt32(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 0);
1331
+ this.prepareMut();
1332
+ setInt8(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 0);
998
1333
  break;
999
1334
  case 'number':
1000
- setInt32(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 1);
1335
+ this.prepareMut();
1336
+ setInt8(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 1);
1001
1337
  setFloat32(this.style_view, StyleKeys.MAX_HEIGHT_VALUE, layout.toDevicePixels(value));
1002
1338
  break;
1003
1339
  case 'object':
1004
1340
  switch (value.unit) {
1005
1341
  case 'dip':
1006
- setInt32(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 1);
1342
+ this.prepareMut();
1343
+ setInt8(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 1);
1007
1344
  setFloat32(this.style_view, StyleKeys.MAX_HEIGHT_VALUE, layout.toDevicePixels(value.value));
1008
1345
  break;
1009
1346
  case 'px':
1010
- setInt32(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 1);
1347
+ this.prepareMut();
1348
+ setInt8(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 1);
1011
1349
  setFloat32(this.style_view, StyleKeys.MAX_HEIGHT_VALUE, value.value);
1012
1350
  break;
1013
1351
  case '%':
1014
- setInt32(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 2);
1352
+ this.prepareMut();
1353
+ setInt8(this.style_view, StyleKeys.MAX_HEIGHT_TYPE, 2);
1015
1354
  setFloat32(this.style_view, StyleKeys.MAX_HEIGHT_VALUE, value.value);
1016
1355
  break;
1017
1356
  }
1018
1357
  break;
1019
1358
  }
1020
- this.setOrAppendState(StateKeys.MAX_SIZE);
1359
+ this.commitState(StateKeys.MAX_SIZE);
1021
1360
  }
1022
1361
  get borderLeftWidth() {
1023
- const type = getInt32(this.style_view, StyleKeys.BORDER_LEFT_TYPE);
1362
+ const type = getInt8(this.style_view, StyleKeys.BORDER_LEFT_TYPE);
1024
1363
  const value = getFloat32(this.style_view, StyleKeys.BORDER_LEFT_VALUE);
1025
1364
  return parseLengthPercentage(type, value);
1026
1365
  }
1027
1366
  set borderLeftWidth(value) {
1028
1367
  switch (typeof value) {
1029
1368
  case 'number':
1030
- setInt32(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 0);
1369
+ this.prepareMut();
1370
+ setInt8(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 0);
1031
1371
  setFloat32(this.style_view, StyleKeys.BORDER_LEFT_VALUE, layout.toDevicePixels(value));
1032
1372
  break;
1033
1373
  case 'object':
1034
1374
  switch (value.unit) {
1035
1375
  case 'dip':
1036
- setInt32(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 0);
1376
+ this.prepareMut();
1377
+ setInt8(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 0);
1037
1378
  setFloat32(this.style_view, StyleKeys.BORDER_LEFT_VALUE, layout.toDevicePixels(value.value));
1038
1379
  break;
1039
1380
  case 'px':
1040
- setInt32(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 0);
1381
+ this.prepareMut();
1382
+ setInt8(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 0);
1041
1383
  setFloat32(this.style_view, StyleKeys.BORDER_LEFT_VALUE, value.value);
1042
1384
  break;
1043
1385
  case '%':
1044
- setInt32(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 1);
1386
+ this.prepareMut();
1387
+ setInt8(this.style_view, StyleKeys.BORDER_LEFT_TYPE, 1);
1045
1388
  setFloat32(this.style_view, StyleKeys.BORDER_LEFT_VALUE, value.value);
1046
1389
  break;
1047
1390
  }
1048
1391
  break;
1049
1392
  }
1050
- this.setOrAppendState(StateKeys.BORDER);
1393
+ this.commitState(StateKeys.BORDER);
1051
1394
  }
1052
1395
  get borderRightWidth() {
1053
- const type = getInt32(this.style_view, StyleKeys.BORDER_RIGHT_TYPE);
1396
+ const type = getInt8(this.style_view, StyleKeys.BORDER_RIGHT_TYPE);
1054
1397
  const value = getFloat32(this.style_view, StyleKeys.BORDER_RIGHT_VALUE);
1055
1398
  return parseLengthPercentage(type, value);
1056
1399
  }
1057
1400
  set borderRightWidth(value) {
1058
1401
  switch (typeof value) {
1059
1402
  case 'number':
1060
- setInt32(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 0);
1403
+ this.prepareMut();
1404
+ setInt8(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 0);
1061
1405
  setFloat32(this.style_view, StyleKeys.BORDER_RIGHT_VALUE, layout.toDevicePixels(value));
1062
1406
  break;
1063
1407
  case 'object':
1064
1408
  switch (value.unit) {
1065
1409
  case 'dip':
1066
- setInt32(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 0);
1410
+ this.prepareMut();
1411
+ setInt8(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 0);
1067
1412
  setFloat32(this.style_view, StyleKeys.BORDER_RIGHT_VALUE, layout.toDevicePixels(value.value));
1068
1413
  break;
1069
1414
  case 'px':
1070
- setInt32(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 0);
1415
+ this.prepareMut();
1416
+ setInt8(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 0);
1071
1417
  setFloat32(this.style_view, StyleKeys.BORDER_RIGHT_VALUE, value.value);
1072
1418
  break;
1073
1419
  case '%':
1074
- setInt32(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 1);
1420
+ this.prepareMut();
1421
+ setInt8(this.style_view, StyleKeys.BORDER_RIGHT_TYPE, 1);
1075
1422
  setFloat32(this.style_view, StyleKeys.BORDER_RIGHT_VALUE, value.value);
1076
1423
  break;
1077
1424
  }
1078
1425
  break;
1079
1426
  }
1080
- this.setOrAppendState(StateKeys.BORDER);
1427
+ this.commitState(StateKeys.BORDER);
1081
1428
  }
1082
1429
  get borderTopWidth() {
1083
- const type = getInt32(this.style_view, StyleKeys.BORDER_TOP_TYPE);
1430
+ const type = getInt8(this.style_view, StyleKeys.BORDER_TOP_TYPE);
1084
1431
  const value = getFloat32(this.style_view, StyleKeys.BORDER_TOP_VALUE);
1085
1432
  return parseLengthPercentage(type, value);
1086
1433
  }
1087
1434
  set borderTopWidth(value) {
1088
1435
  switch (typeof value) {
1089
1436
  case 'number':
1090
- setInt32(this.style_view, StyleKeys.BORDER_TOP_TYPE, 0);
1437
+ this.prepareMut();
1438
+ setInt8(this.style_view, StyleKeys.BORDER_TOP_TYPE, 0);
1091
1439
  setFloat32(this.style_view, StyleKeys.BORDER_TOP_VALUE, layout.toDevicePixels(value));
1092
1440
  break;
1093
1441
  case 'object':
1094
1442
  switch (value.unit) {
1095
1443
  case 'dip':
1096
- setInt32(this.style_view, StyleKeys.BORDER_TOP_TYPE, 0);
1444
+ this.prepareMut();
1445
+ setInt8(this.style_view, StyleKeys.BORDER_TOP_TYPE, 0);
1097
1446
  setFloat32(this.style_view, StyleKeys.BORDER_TOP_VALUE, layout.toDevicePixels(value.value));
1098
1447
  break;
1099
1448
  case 'px':
1100
- setInt32(this.style_view, StyleKeys.BORDER_TOP_TYPE, 0);
1449
+ this.prepareMut();
1450
+ setInt8(this.style_view, StyleKeys.BORDER_TOP_TYPE, 0);
1101
1451
  setFloat32(this.style_view, StyleKeys.BORDER_TOP_VALUE, value.value);
1102
1452
  break;
1103
1453
  case '%':
1104
- setInt32(this.style_view, StyleKeys.BORDER_TOP_TYPE, 1);
1454
+ this.prepareMut();
1455
+ setInt8(this.style_view, StyleKeys.BORDER_TOP_TYPE, 1);
1105
1456
  setFloat32(this.style_view, StyleKeys.BORDER_TOP_VALUE, value.value);
1106
1457
  break;
1107
1458
  }
1108
1459
  break;
1109
1460
  }
1110
- this.setOrAppendState(StateKeys.BORDER);
1461
+ this.commitState(StateKeys.BORDER);
1111
1462
  }
1112
1463
  get borderBottomWidth() {
1113
- const type = getInt32(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE);
1464
+ const type = getInt8(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE);
1114
1465
  const value = getFloat32(this.style_view, StyleKeys.BORDER_BOTTOM_VALUE);
1115
1466
  return parseLengthPercentage(type, value);
1116
1467
  }
1117
1468
  set borderBottomWidth(value) {
1118
1469
  switch (typeof value) {
1119
1470
  case 'number':
1120
- setInt32(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 0);
1471
+ this.prepareMut();
1472
+ setInt8(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 0);
1121
1473
  setFloat32(this.style_view, StyleKeys.BORDER_BOTTOM_VALUE, layout.toDevicePixels(value));
1122
1474
  break;
1123
1475
  case 'object':
1124
1476
  switch (value.unit) {
1125
1477
  case 'dip':
1126
- setInt32(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 0);
1478
+ this.prepareMut();
1479
+ setInt8(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 0);
1127
1480
  setFloat32(this.style_view, StyleKeys.BORDER_BOTTOM_VALUE, layout.toDevicePixels(value.value));
1128
1481
  break;
1129
1482
  case 'px':
1130
- setInt32(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 0);
1483
+ this.prepareMut();
1484
+ setInt8(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 0);
1131
1485
  setFloat32(this.style_view, StyleKeys.BORDER_BOTTOM_VALUE, value.value);
1132
1486
  break;
1133
1487
  case '%':
1134
- setInt32(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 1);
1488
+ this.prepareMut();
1489
+ setInt8(this.style_view, StyleKeys.BORDER_BOTTOM_TYPE, 1);
1135
1490
  setFloat32(this.style_view, StyleKeys.BORDER_BOTTOM_VALUE, value.value);
1136
1491
  break;
1137
1492
  }
1138
1493
  break;
1139
1494
  }
1140
- this.setOrAppendState(StateKeys.BORDER);
1495
+ this.commitState(StateKeys.BORDER);
1496
+ }
1497
+ set inset(value) {
1498
+ var type;
1499
+ var insetValue;
1500
+ switch (typeof value) {
1501
+ case 'string':
1502
+ type = 0;
1503
+ insetValue = 0;
1504
+ break;
1505
+ case 'number':
1506
+ type = 1;
1507
+ insetValue = layout.toDevicePixels(value);
1508
+ break;
1509
+ case 'object':
1510
+ switch (value.unit) {
1511
+ case 'dip':
1512
+ type = 1;
1513
+ insetValue = layout.toDevicePixels(value.value);
1514
+ break;
1515
+ case 'px':
1516
+ type = 1;
1517
+ insetValue = value.value;
1518
+ break;
1519
+ case '%':
1520
+ type = 2;
1521
+ insetValue = value.value;
1522
+ break;
1523
+ }
1524
+ break;
1525
+ }
1526
+ if (type !== undefined && insetValue !== undefined) {
1527
+ this.prepareMut();
1528
+ i8Buffer.fill(type);
1529
+ this.u8View.set(i8Buffer, StyleKeys.INSET_LEFT_TYPE);
1530
+ f32View.fill(insetValue);
1531
+ this.u8View.set(f32Buffer, StyleKeys.INSET_LEFT_VALUE);
1532
+ this.commitState(StateKeys.INSET);
1533
+ }
1141
1534
  }
1142
1535
  get left() {
1143
- const type = getInt32(this.style_view, StyleKeys.INSET_LEFT_TYPE);
1536
+ const type = getInt8(this.style_view, StyleKeys.INSET_LEFT_TYPE);
1144
1537
  const value = getFloat32(this.style_view, StyleKeys.INSET_LEFT_VALUE);
1145
1538
  return parseLengthPercentageAuto(type, value);
1146
1539
  }
1147
1540
  set left(value) {
1148
1541
  if (value === 'auto') {
1149
- setInt32(this.style_view, StyleKeys.INSET_LEFT_TYPE, 0);
1542
+ this.prepareMut();
1543
+ setInt8(this.style_view, StyleKeys.INSET_LEFT_TYPE, 0);
1150
1544
  setFloat32(this.style_view, StyleKeys.INSET_LEFT_VALUE, 0);
1151
1545
  return;
1152
1546
  }
1153
1547
  switch (typeof value) {
1154
1548
  case 'number':
1155
- setInt32(this.style_view, StyleKeys.INSET_LEFT_TYPE, 1);
1549
+ this.prepareMut();
1550
+ setInt8(this.style_view, StyleKeys.INSET_LEFT_TYPE, 1);
1156
1551
  setFloat32(this.style_view, StyleKeys.INSET_LEFT_VALUE, layout.toDevicePixels(value));
1157
1552
  break;
1158
1553
  case 'object':
1159
1554
  switch (value.unit) {
1160
1555
  case 'dip':
1161
- setInt32(this.style_view, StyleKeys.INSET_LEFT_TYPE, 1);
1556
+ this.prepareMut();
1557
+ setInt8(this.style_view, StyleKeys.INSET_LEFT_TYPE, 1);
1162
1558
  setFloat32(this.style_view, StyleKeys.INSET_LEFT_VALUE, layout.toDevicePixels(value.value));
1163
1559
  break;
1164
1560
  case 'px':
1165
- setInt32(this.style_view, StyleKeys.INSET_LEFT_TYPE, 1);
1561
+ this.prepareMut();
1562
+ setInt8(this.style_view, StyleKeys.INSET_LEFT_TYPE, 1);
1166
1563
  setFloat32(this.style_view, StyleKeys.INSET_LEFT_VALUE, value.value);
1167
1564
  break;
1168
1565
  case '%':
1169
- setInt32(this.style_view, StyleKeys.INSET_LEFT_TYPE, 2);
1566
+ this.prepareMut();
1567
+ setInt8(this.style_view, StyleKeys.INSET_LEFT_TYPE, 2);
1170
1568
  setFloat32(this.style_view, StyleKeys.INSET_LEFT_VALUE, value.value);
1171
1569
  break;
1172
1570
  }
1173
1571
  break;
1174
1572
  }
1175
- this.setOrAppendState(StateKeys.INSET);
1573
+ this.commitState(StateKeys.INSET);
1176
1574
  }
1177
1575
  get right() {
1178
- const type = getInt32(this.style_view, StyleKeys.INSET_RIGHT_TYPE);
1576
+ const type = getInt8(this.style_view, StyleKeys.INSET_RIGHT_TYPE);
1179
1577
  const value = getFloat32(this.style_view, StyleKeys.INSET_RIGHT_VALUE);
1180
1578
  return parseLengthPercentageAuto(type, value);
1181
1579
  }
1182
1580
  set right(value) {
1183
1581
  if (value === 'auto') {
1184
- setInt32(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 0);
1582
+ this.prepareMut();
1583
+ setInt8(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 0);
1185
1584
  setFloat32(this.style_view, StyleKeys.INSET_RIGHT_VALUE, 0);
1186
1585
  return;
1187
1586
  }
1188
1587
  switch (typeof value) {
1189
1588
  case 'number':
1190
- setInt32(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 1);
1589
+ this.prepareMut();
1590
+ setInt8(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 1);
1191
1591
  setFloat32(this.style_view, StyleKeys.INSET_RIGHT_VALUE, layout.toDevicePixels(value));
1192
1592
  break;
1193
1593
  case 'object':
1194
1594
  switch (value.unit) {
1195
1595
  case 'dip':
1196
- setInt32(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 1);
1596
+ this.prepareMut();
1597
+ setInt8(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 1);
1197
1598
  setFloat32(this.style_view, StyleKeys.INSET_RIGHT_VALUE, layout.toDevicePixels(value.value));
1198
1599
  break;
1199
1600
  case 'px':
1200
- setInt32(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 1);
1601
+ this.prepareMut();
1602
+ setInt8(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 1);
1201
1603
  setFloat32(this.style_view, StyleKeys.INSET_RIGHT_VALUE, value.value);
1202
1604
  break;
1203
1605
  case '%':
1204
- setInt32(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 2);
1606
+ this.prepareMut();
1607
+ setInt8(this.style_view, StyleKeys.INSET_RIGHT_TYPE, 2);
1205
1608
  setFloat32(this.style_view, StyleKeys.INSET_RIGHT_VALUE, value.value);
1206
1609
  break;
1207
1610
  }
1208
1611
  break;
1209
1612
  }
1210
- this.setOrAppendState(StateKeys.INSET);
1613
+ this.commitState(StateKeys.INSET);
1211
1614
  }
1212
1615
  get top() {
1213
- const type = getInt32(this.style_view, StyleKeys.INSET_TOP_TYPE);
1616
+ const type = getInt8(this.style_view, StyleKeys.INSET_TOP_TYPE);
1214
1617
  const value = getFloat32(this.style_view, StyleKeys.INSET_TOP_VALUE);
1215
1618
  return parseLengthPercentageAuto(type, value);
1216
1619
  }
1217
1620
  set top(value) {
1218
1621
  if (value === 'auto') {
1219
- setInt32(this.style_view, StyleKeys.INSET_TOP_TYPE, 0);
1622
+ this.prepareMut();
1623
+ setInt8(this.style_view, StyleKeys.INSET_TOP_TYPE, 0);
1220
1624
  setFloat32(this.style_view, StyleKeys.INSET_TOP_VALUE, 0);
1221
1625
  return;
1222
1626
  }
1223
1627
  switch (typeof value) {
1224
1628
  case 'number':
1225
- setInt32(this.style_view, StyleKeys.INSET_TOP_TYPE, 1);
1629
+ this.prepareMut();
1630
+ setInt8(this.style_view, StyleKeys.INSET_TOP_TYPE, 1);
1226
1631
  setFloat32(this.style_view, StyleKeys.INSET_TOP_VALUE, layout.toDevicePixels(value));
1227
1632
  break;
1228
1633
  case 'object':
1229
1634
  switch (value.unit) {
1230
1635
  case 'dip':
1231
- setInt32(this.style_view, StyleKeys.INSET_TOP_TYPE, 1);
1636
+ this.prepareMut();
1637
+ setInt8(this.style_view, StyleKeys.INSET_TOP_TYPE, 1);
1232
1638
  setFloat32(this.style_view, StyleKeys.INSET_TOP_VALUE, layout.toDevicePixels(value.value));
1233
1639
  break;
1234
1640
  case 'px':
1235
- setInt32(this.style_view, StyleKeys.INSET_TOP_TYPE, 1);
1641
+ this.prepareMut();
1642
+ setInt8(this.style_view, StyleKeys.INSET_TOP_TYPE, 1);
1236
1643
  setFloat32(this.style_view, StyleKeys.INSET_TOP_VALUE, value.value);
1237
1644
  break;
1238
1645
  case '%':
1239
- setInt32(this.style_view, StyleKeys.INSET_TOP_TYPE, 2);
1646
+ this.prepareMut();
1647
+ setInt8(this.style_view, StyleKeys.INSET_TOP_TYPE, 2);
1240
1648
  setFloat32(this.style_view, StyleKeys.INSET_TOP_VALUE, value.value);
1241
1649
  break;
1242
1650
  }
1243
1651
  break;
1244
1652
  }
1245
- this.setOrAppendState(StateKeys.INSET);
1653
+ this.commitState(StateKeys.INSET);
1246
1654
  }
1247
1655
  get bottom() {
1248
- const type = getInt32(this.style_view, StyleKeys.INSET_BOTTOM_TYPE);
1656
+ const type = getInt8(this.style_view, StyleKeys.INSET_BOTTOM_TYPE);
1249
1657
  const value = getFloat32(this.style_view, StyleKeys.INSET_BOTTOM_VALUE);
1250
1658
  return parseLengthPercentageAuto(type, value);
1251
1659
  }
1252
1660
  set bottom(value) {
1253
1661
  if (value === 'auto') {
1254
- setInt32(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 0);
1662
+ this.prepareMut();
1663
+ setInt8(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 0);
1255
1664
  setFloat32(this.style_view, StyleKeys.INSET_BOTTOM_VALUE, 0);
1256
1665
  return;
1257
1666
  }
1258
1667
  switch (typeof value) {
1259
1668
  case 'number':
1260
- setInt32(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 1);
1669
+ this.prepareMut();
1670
+ setInt8(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 1);
1261
1671
  setFloat32(this.style_view, StyleKeys.INSET_BOTTOM_VALUE, layout.toDevicePixels(value));
1262
1672
  break;
1263
1673
  case 'object':
1264
1674
  switch (value.unit) {
1265
1675
  case 'dip':
1266
- setInt32(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 1);
1676
+ this.prepareMut();
1677
+ setInt8(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 1);
1267
1678
  setFloat32(this.style_view, StyleKeys.INSET_BOTTOM_VALUE, layout.toDevicePixels(value.value));
1268
1679
  break;
1269
1680
  case 'px':
1270
- setInt32(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 1);
1681
+ this.prepareMut();
1682
+ setInt8(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 1);
1271
1683
  setFloat32(this.style_view, StyleKeys.INSET_BOTTOM_VALUE, value.value);
1272
1684
  break;
1273
1685
  case '%':
1274
- setInt32(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 2);
1686
+ this.prepareMut();
1687
+ setInt8(this.style_view, StyleKeys.INSET_BOTTOM_TYPE, 2);
1275
1688
  setFloat32(this.style_view, StyleKeys.INSET_BOTTOM_VALUE, value.value);
1276
1689
  break;
1277
1690
  }
1278
1691
  break;
1279
1692
  }
1280
- this.setOrAppendState(StateKeys.INSET);
1693
+ this.commitState(StateKeys.INSET);
1281
1694
  }
1282
1695
  set margin(value) {
1283
- this.inBatch = true;
1284
- this.marginBottom = this.marginLeft = this.marginRight = this.marginTop = value;
1285
- this.inBatch = false;
1286
- this.setOrAppendState(StateKeys.MARGIN);
1696
+ var type;
1697
+ var marginValue;
1698
+ switch (typeof value) {
1699
+ case 'string':
1700
+ type = 0;
1701
+ marginValue = 0;
1702
+ break;
1703
+ case 'number':
1704
+ type = 1;
1705
+ marginValue = layout.toDevicePixels(value);
1706
+ break;
1707
+ case 'object':
1708
+ switch (value.unit) {
1709
+ case 'dip':
1710
+ type = 1;
1711
+ marginValue = layout.toDevicePixels(value.value);
1712
+ break;
1713
+ case 'px':
1714
+ type = 1;
1715
+ marginValue = value.value;
1716
+ break;
1717
+ case '%':
1718
+ type = 2;
1719
+ marginValue = value.value;
1720
+ break;
1721
+ }
1722
+ break;
1723
+ }
1724
+ if (type !== undefined && marginValue !== undefined) {
1725
+ this.prepareMut();
1726
+ i8Buffer.fill(type);
1727
+ this.u8View.set(i8Buffer, StyleKeys.MARGIN_LEFT_TYPE);
1728
+ f32View.fill(marginValue);
1729
+ this.u8View.set(f32Buffer, StyleKeys.MARGIN_LEFT_VALUE);
1730
+ this.commitState(StateKeys.MARGIN);
1731
+ }
1287
1732
  }
1288
1733
  get marginLeft() {
1289
- const type = getInt32(this.style_view, StyleKeys.MARGIN_LEFT_TYPE);
1734
+ const type = getInt8(this.style_view, StyleKeys.MARGIN_LEFT_TYPE);
1290
1735
  const value = getFloat32(this.style_view, StyleKeys.MARGIN_LEFT_VALUE);
1291
1736
  return parseLengthPercentageAuto(type, value);
1292
1737
  }
1293
1738
  set marginLeft(value) {
1294
1739
  switch (typeof value) {
1295
1740
  case 'string':
1296
- setInt32(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 0);
1741
+ this.prepareMut();
1742
+ setInt8(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 0);
1297
1743
  break;
1298
1744
  case 'number':
1299
- setInt32(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 1);
1745
+ this.prepareMut();
1746
+ setInt8(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 1);
1300
1747
  setFloat32(this.style_view, StyleKeys.MARGIN_LEFT_VALUE, layout.toDevicePixels(value));
1301
1748
  break;
1302
1749
  case 'object':
1303
1750
  switch (value.unit) {
1304
1751
  case 'dip':
1305
- setInt32(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 1);
1752
+ this.prepareMut();
1753
+ setInt8(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 1);
1306
1754
  setFloat32(this.style_view, StyleKeys.MARGIN_LEFT_VALUE, layout.toDevicePixels(value.value));
1307
1755
  break;
1308
1756
  case 'px':
1309
- setInt32(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 1);
1757
+ this.prepareMut();
1758
+ setInt8(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 1);
1310
1759
  setFloat32(this.style_view, StyleKeys.MARGIN_LEFT_VALUE, value.value);
1311
1760
  break;
1312
1761
  case '%':
1313
- setInt32(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 2);
1762
+ this.prepareMut();
1763
+ setInt8(this.style_view, StyleKeys.MARGIN_LEFT_TYPE, 2);
1314
1764
  setFloat32(this.style_view, StyleKeys.MARGIN_LEFT_VALUE, value.value);
1315
1765
  break;
1316
1766
  }
1317
1767
  break;
1318
1768
  }
1319
- this.setOrAppendState(StateKeys.MARGIN);
1769
+ this.commitState(StateKeys.MARGIN);
1320
1770
  }
1321
1771
  get marginRight() {
1322
- const type = getInt32(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE);
1772
+ const type = getInt8(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE);
1323
1773
  const value = getFloat32(this.style_view, StyleKeys.MARGIN_RIGHT_VALUE);
1324
1774
  return parseLengthPercentageAuto(type, value);
1325
1775
  }
1326
1776
  set marginRight(value) {
1327
1777
  switch (typeof value) {
1328
1778
  case 'string':
1329
- setInt32(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 0);
1779
+ this.prepareMut();
1780
+ setInt8(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 0);
1330
1781
  break;
1331
1782
  case 'number':
1332
- setInt32(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 1);
1783
+ this.prepareMut();
1784
+ setInt8(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 1);
1333
1785
  setFloat32(this.style_view, StyleKeys.MARGIN_RIGHT_VALUE, layout.toDevicePixels(value));
1334
1786
  break;
1335
1787
  case 'object':
1336
1788
  switch (value.unit) {
1337
1789
  case 'dip':
1338
- setInt32(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 1);
1790
+ this.prepareMut();
1791
+ setInt8(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 1);
1339
1792
  setFloat32(this.style_view, StyleKeys.MARGIN_RIGHT_VALUE, layout.toDevicePixels(value.value));
1340
1793
  break;
1341
1794
  case 'px':
1342
- setInt32(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 1);
1795
+ this.prepareMut();
1796
+ setInt8(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 1);
1343
1797
  setFloat32(this.style_view, StyleKeys.MARGIN_RIGHT_VALUE, value.value);
1344
1798
  break;
1345
1799
  case '%':
1346
- setInt32(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 2);
1800
+ this.prepareMut();
1801
+ setInt8(this.style_view, StyleKeys.MARGIN_RIGHT_TYPE, 2);
1347
1802
  setFloat32(this.style_view, StyleKeys.MARGIN_RIGHT_VALUE, value.value);
1348
1803
  break;
1349
1804
  }
1350
1805
  break;
1351
1806
  }
1352
- this.setOrAppendState(StateKeys.MARGIN);
1807
+ this.commitState(StateKeys.MARGIN);
1353
1808
  }
1354
1809
  get marginTop() {
1355
- const type = getInt32(this.style_view, StyleKeys.MARGIN_TOP_TYPE);
1810
+ const type = getInt8(this.style_view, StyleKeys.MARGIN_TOP_TYPE);
1356
1811
  const value = getFloat32(this.style_view, StyleKeys.MARGIN_TOP_VALUE);
1357
1812
  return parseLengthPercentageAuto(type, value);
1358
1813
  }
1359
1814
  set marginTop(value) {
1360
1815
  switch (typeof value) {
1361
1816
  case 'string':
1362
- setInt32(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 0);
1817
+ this.prepareMut();
1818
+ setInt8(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 0);
1363
1819
  break;
1364
1820
  case 'number':
1365
- setInt32(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 1);
1821
+ this.prepareMut();
1822
+ setInt8(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 1);
1366
1823
  setFloat32(this.style_view, StyleKeys.MARGIN_TOP_VALUE, layout.toDevicePixels(value));
1367
1824
  break;
1368
1825
  case 'object':
1369
1826
  switch (value.unit) {
1370
1827
  case 'dip':
1371
- setInt32(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 1);
1828
+ this.prepareMut();
1829
+ setInt8(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 1);
1372
1830
  setFloat32(this.style_view, StyleKeys.MARGIN_TOP_VALUE, layout.toDevicePixels(value.value));
1373
1831
  break;
1374
1832
  case 'px':
1375
- setInt32(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 1);
1833
+ this.prepareMut();
1834
+ setInt8(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 1);
1376
1835
  setFloat32(this.style_view, StyleKeys.MARGIN_TOP_VALUE, value.value);
1377
1836
  break;
1378
1837
  case '%':
1379
- setInt32(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 2);
1838
+ this.prepareMut();
1839
+ setInt8(this.style_view, StyleKeys.MARGIN_TOP_TYPE, 2);
1380
1840
  setFloat32(this.style_view, StyleKeys.MARGIN_TOP_VALUE, value.value);
1381
1841
  break;
1382
1842
  }
1383
1843
  break;
1384
1844
  }
1385
- this.setOrAppendState(StateKeys.MARGIN);
1845
+ this.commitState(StateKeys.MARGIN);
1386
1846
  }
1387
1847
  get marginBottom() {
1388
- const type = getInt32(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE);
1848
+ const type = getInt8(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE);
1389
1849
  const value = getFloat32(this.style_view, StyleKeys.MARGIN_BOTTOM_VALUE);
1390
1850
  return parseLengthPercentageAuto(type, value);
1391
1851
  }
1392
1852
  set marginBottom(value) {
1393
1853
  switch (typeof value) {
1394
1854
  case 'string':
1395
- setInt32(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 0);
1855
+ this.prepareMut();
1856
+ setInt8(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 0);
1396
1857
  break;
1397
1858
  case 'number':
1398
- setInt32(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 1);
1859
+ this.prepareMut();
1860
+ setInt8(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 1);
1399
1861
  setFloat32(this.style_view, StyleKeys.MARGIN_BOTTOM_VALUE, layout.toDevicePixels(value));
1400
1862
  break;
1401
1863
  case 'object':
1402
1864
  switch (value.unit) {
1403
1865
  case 'dip':
1404
- setInt32(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 1);
1866
+ this.prepareMut();
1867
+ setInt8(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 1);
1405
1868
  setFloat32(this.style_view, StyleKeys.MARGIN_BOTTOM_VALUE, layout.toDevicePixels(value.value));
1406
1869
  break;
1407
1870
  case 'px':
1408
- setInt32(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 1);
1871
+ this.prepareMut();
1872
+ setInt8(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 1);
1409
1873
  setFloat32(this.style_view, StyleKeys.MARGIN_BOTTOM_VALUE, value.value);
1410
1874
  break;
1411
1875
  case '%':
1412
- setInt32(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 2);
1876
+ this.prepareMut();
1877
+ setInt8(this.style_view, StyleKeys.MARGIN_BOTTOM_TYPE, 2);
1413
1878
  setFloat32(this.style_view, StyleKeys.MARGIN_BOTTOM_VALUE, value.value);
1414
1879
  break;
1415
1880
  }
1416
1881
  break;
1417
1882
  }
1418
- this.setOrAppendState(StateKeys.MARGIN);
1883
+ this.commitState(StateKeys.MARGIN);
1419
1884
  }
1420
1885
  set padding(value) {
1421
1886
  this.inBatch = true;
1422
1887
  this.paddingBottom = this.paddingLeft = this.paddingRight = this.paddingTop = value;
1423
1888
  this.inBatch = false;
1424
- this.setOrAppendState(StateKeys.PADDING);
1889
+ this.commitState(StateKeys.PADDING);
1425
1890
  }
1426
1891
  get paddingLeft() {
1427
- const type = getInt32(this.style_view, StyleKeys.PADDING_LEFT_TYPE);
1892
+ const type = getInt8(this.style_view, StyleKeys.PADDING_LEFT_TYPE);
1428
1893
  const value = getFloat32(this.style_view, StyleKeys.PADDING_LEFT_VALUE);
1429
1894
  return parseLengthPercentage(type, value);
1430
1895
  }
1431
1896
  set paddingLeft(value) {
1432
1897
  switch (typeof value) {
1433
1898
  case 'number':
1434
- setInt32(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 0);
1899
+ this.prepareMut();
1900
+ setInt8(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 0);
1435
1901
  setFloat32(this.style_view, StyleKeys.PADDING_LEFT_VALUE, layout.toDevicePixels(value));
1436
1902
  break;
1437
1903
  case 'object':
1438
1904
  switch (value.unit) {
1439
1905
  case 'dip':
1440
- setInt32(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 0);
1906
+ this.prepareMut();
1907
+ setInt8(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 0);
1441
1908
  setFloat32(this.style_view, StyleKeys.PADDING_LEFT_VALUE, layout.toDevicePixels(value.value));
1442
1909
  break;
1443
1910
  case 'px':
1444
- setInt32(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 0);
1911
+ this.prepareMut();
1912
+ setInt8(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 0);
1445
1913
  setFloat32(this.style_view, StyleKeys.PADDING_LEFT_VALUE, value.value);
1446
1914
  break;
1447
1915
  case '%':
1448
- setInt32(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 1);
1916
+ this.prepareMut();
1917
+ setInt8(this.style_view, StyleKeys.PADDING_LEFT_TYPE, 1);
1449
1918
  setFloat32(this.style_view, StyleKeys.PADDING_LEFT_VALUE, value.value);
1450
1919
  break;
1451
1920
  }
1452
1921
  break;
1453
1922
  }
1454
- this.setOrAppendState(StateKeys.PADDING);
1923
+ this.commitState(StateKeys.PADDING);
1455
1924
  }
1456
1925
  get paddingRight() {
1457
- const type = getInt32(this.style_view, StyleKeys.PADDING_RIGHT_TYPE);
1926
+ const type = getInt8(this.style_view, StyleKeys.PADDING_RIGHT_TYPE);
1458
1927
  const value = getFloat32(this.style_view, StyleKeys.PADDING_RIGHT_VALUE);
1459
1928
  return parseLengthPercentage(type, value);
1460
1929
  }
1461
1930
  set paddingRight(value) {
1462
1931
  switch (typeof value) {
1463
1932
  case 'number':
1464
- setInt32(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 0);
1933
+ this.prepareMut();
1934
+ setInt8(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 0);
1465
1935
  setFloat32(this.style_view, StyleKeys.PADDING_RIGHT_VALUE, layout.toDevicePixels(value));
1466
1936
  break;
1467
1937
  case 'object':
1468
1938
  switch (value.unit) {
1469
1939
  case 'dip':
1470
- setInt32(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 0);
1940
+ this.prepareMut();
1941
+ setInt8(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 0);
1471
1942
  setFloat32(this.style_view, StyleKeys.PADDING_RIGHT_VALUE, layout.toDevicePixels(value.value));
1472
1943
  break;
1473
1944
  case 'px':
1474
- setInt32(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 0);
1945
+ this.prepareMut();
1946
+ setInt8(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 0);
1475
1947
  setFloat32(this.style_view, StyleKeys.PADDING_RIGHT_VALUE, value.value);
1476
1948
  break;
1477
1949
  case '%':
1478
- setInt32(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 1);
1950
+ this.prepareMut();
1951
+ setInt8(this.style_view, StyleKeys.PADDING_RIGHT_TYPE, 1);
1479
1952
  setFloat32(this.style_view, StyleKeys.PADDING_RIGHT_VALUE, value.value);
1480
1953
  break;
1481
1954
  }
1482
1955
  break;
1483
1956
  }
1484
- this.setOrAppendState(StateKeys.PADDING);
1957
+ this.commitState(StateKeys.PADDING);
1485
1958
  }
1486
1959
  get paddingTop() {
1487
- const type = getInt32(this.style_view, StyleKeys.PADDING_TOP_TYPE);
1960
+ const type = getInt8(this.style_view, StyleKeys.PADDING_TOP_TYPE);
1488
1961
  const value = getFloat32(this.style_view, StyleKeys.PADDING_TOP_VALUE);
1489
1962
  return parseLengthPercentage(type, value);
1490
1963
  }
1491
1964
  set paddingTop(value) {
1492
1965
  switch (typeof value) {
1493
1966
  case 'number':
1494
- setInt32(this.style_view, StyleKeys.PADDING_TOP_TYPE, 0);
1967
+ this.prepareMut();
1968
+ setInt8(this.style_view, StyleKeys.PADDING_TOP_TYPE, 0);
1495
1969
  setFloat32(this.style_view, StyleKeys.PADDING_TOP_VALUE, layout.toDevicePixels(value));
1496
1970
  break;
1497
1971
  case 'object':
1498
1972
  switch (value.unit) {
1499
1973
  case 'dip':
1500
- setInt32(this.style_view, StyleKeys.PADDING_TOP_TYPE, 0);
1974
+ this.prepareMut();
1975
+ setInt8(this.style_view, StyleKeys.PADDING_TOP_TYPE, 0);
1501
1976
  setFloat32(this.style_view, StyleKeys.PADDING_TOP_VALUE, layout.toDevicePixels(value.value));
1502
1977
  break;
1503
1978
  case 'px':
1504
- setInt32(this.style_view, StyleKeys.PADDING_TOP_TYPE, 0);
1979
+ this.prepareMut();
1980
+ setInt8(this.style_view, StyleKeys.PADDING_TOP_TYPE, 0);
1505
1981
  setFloat32(this.style_view, StyleKeys.PADDING_TOP_VALUE, value.value);
1506
1982
  break;
1507
1983
  case '%':
1508
- setInt32(this.style_view, StyleKeys.PADDING_TOP_TYPE, 1);
1984
+ this.prepareMut();
1985
+ setInt8(this.style_view, StyleKeys.PADDING_TOP_TYPE, 1);
1509
1986
  setFloat32(this.style_view, StyleKeys.PADDING_TOP_VALUE, value.value);
1510
1987
  break;
1511
1988
  }
1512
1989
  break;
1513
1990
  }
1514
- this.setOrAppendState(StateKeys.PADDING);
1991
+ this.commitState(StateKeys.PADDING);
1515
1992
  }
1516
1993
  get paddingBottom() {
1517
- const type = getInt32(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE);
1994
+ const type = getInt8(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE);
1518
1995
  const value = getFloat32(this.style_view, StyleKeys.PADDING_BOTTOM_VALUE);
1519
1996
  return parseLengthPercentage(type, value);
1520
1997
  }
1521
1998
  set paddingBottom(value) {
1522
1999
  switch (typeof value) {
1523
2000
  case 'number':
1524
- setInt32(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 0);
2001
+ this.prepareMut();
2002
+ setInt8(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 0);
1525
2003
  setFloat32(this.style_view, StyleKeys.PADDING_BOTTOM_VALUE, layout.toDevicePixels(value));
1526
2004
  break;
1527
2005
  case 'object':
1528
2006
  switch (value.unit) {
1529
2007
  case 'dip':
1530
- setInt32(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 0);
2008
+ this.prepareMut();
2009
+ setInt8(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 0);
1531
2010
  setFloat32(this.style_view, StyleKeys.PADDING_BOTTOM_VALUE, layout.toDevicePixels(value.value));
1532
2011
  break;
1533
2012
  case 'px':
1534
- setInt32(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 0);
2013
+ this.prepareMut();
2014
+ setInt8(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 0);
1535
2015
  setFloat32(this.style_view, StyleKeys.PADDING_BOTTOM_VALUE, value.value);
1536
2016
  break;
1537
2017
  case '%':
1538
- setInt32(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 1);
2018
+ this.prepareMut();
2019
+ setInt8(this.style_view, StyleKeys.PADDING_BOTTOM_TYPE, 1);
1539
2020
  setFloat32(this.style_view, StyleKeys.PADDING_BOTTOM_VALUE, value.value);
1540
2021
  break;
1541
2022
  }
1542
2023
  break;
1543
2024
  }
1544
- this.setOrAppendState(StateKeys.PADDING);
2025
+ this.commitState(StateKeys.PADDING);
1545
2026
  }
1546
2027
  get gridGap() {
1547
2028
  return this.gap;
@@ -1576,107 +2057,121 @@ export class Style {
1576
2057
  }
1577
2058
  }
1578
2059
  get rowGap() {
1579
- const type = getInt32(this.style_view, StyleKeys.GAP_ROW_TYPE);
2060
+ const type = getInt8(this.style_view, StyleKeys.GAP_ROW_TYPE);
1580
2061
  const value = getFloat32(this.style_view, StyleKeys.GAP_ROW_VALUE);
1581
2062
  return parseLengthPercentage(type, value);
1582
2063
  }
1583
2064
  set rowGap(value) {
1584
2065
  switch (typeof value) {
1585
2066
  case 'number':
1586
- setInt32(this.style_view, StyleKeys.GAP_ROW_TYPE, 0);
2067
+ this.prepareMut();
2068
+ setInt8(this.style_view, StyleKeys.GAP_ROW_TYPE, 0);
1587
2069
  setFloat32(this.style_view, StyleKeys.GAP_ROW_VALUE, layout.toDevicePixels(value));
1588
2070
  break;
1589
2071
  case 'object':
1590
2072
  switch (value.unit) {
1591
2073
  case 'dip':
1592
- setInt32(this.style_view, StyleKeys.GAP_ROW_TYPE, 0);
2074
+ this.prepareMut();
2075
+ setInt8(this.style_view, StyleKeys.GAP_ROW_TYPE, 0);
1593
2076
  setFloat32(this.style_view, StyleKeys.GAP_ROW_VALUE, layout.toDevicePixels(value.value));
1594
2077
  break;
1595
2078
  case 'px':
1596
- setInt32(this.style_view, StyleKeys.GAP_ROW_TYPE, 0);
2079
+ this.prepareMut();
2080
+ setInt8(this.style_view, StyleKeys.GAP_ROW_TYPE, 0);
1597
2081
  setFloat32(this.style_view, StyleKeys.GAP_ROW_VALUE, value.value);
1598
2082
  break;
1599
2083
  case '%':
1600
- setInt32(this.style_view, StyleKeys.GAP_ROW_TYPE, 1);
2084
+ this.prepareMut();
2085
+ setInt8(this.style_view, StyleKeys.GAP_ROW_TYPE, 1);
1601
2086
  setFloat32(this.style_view, StyleKeys.GAP_ROW_VALUE, value.value);
1602
2087
  break;
1603
2088
  }
1604
2089
  break;
1605
2090
  }
1606
- this.setOrAppendState(StateKeys.GAP);
2091
+ this.commitState(StateKeys.GAP);
1607
2092
  }
1608
2093
  get columnGap() {
1609
- const type = getInt32(this.style_view, StyleKeys.GAP_COLUMN_TYPE);
2094
+ const type = getInt8(this.style_view, StyleKeys.GAP_COLUMN_TYPE);
1610
2095
  const value = getFloat32(this.style_view, StyleKeys.GAP_COLUMN_VALUE);
1611
2096
  return parseLengthPercentage(type, value);
1612
2097
  }
1613
2098
  set columnGap(value) {
1614
2099
  switch (typeof value) {
1615
2100
  case 'number':
1616
- setInt32(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 0);
2101
+ this.prepareMut();
2102
+ setInt8(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 0);
1617
2103
  setFloat32(this.style_view, StyleKeys.GAP_COLUMN_VALUE, layout.toDevicePixels(value));
1618
2104
  break;
1619
2105
  case 'object':
1620
2106
  switch (value.unit) {
1621
2107
  case 'dip':
1622
- setInt32(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 0);
2108
+ this.prepareMut();
2109
+ setInt8(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 0);
1623
2110
  setFloat32(this.style_view, StyleKeys.GAP_COLUMN_VALUE, layout.toDevicePixels(value.value));
1624
2111
  break;
1625
2112
  case 'px':
1626
- setInt32(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 0);
2113
+ this.prepareMut();
2114
+ setInt8(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 0);
1627
2115
  setFloat32(this.style_view, StyleKeys.GAP_COLUMN_VALUE, value.value);
1628
2116
  break;
1629
2117
  case '%':
1630
- setInt32(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 1);
2118
+ this.prepareMut();
2119
+ setInt8(this.style_view, StyleKeys.GAP_COLUMN_TYPE, 1);
1631
2120
  setFloat32(this.style_view, StyleKeys.GAP_COLUMN_VALUE, value.value);
1632
2121
  break;
1633
2122
  }
1634
2123
  break;
1635
2124
  }
1636
- this.setOrAppendState(StateKeys.GAP);
2125
+ this.commitState(StateKeys.GAP);
1637
2126
  }
1638
2127
  get aspectRatio() {
1639
2128
  return getFloat32(this.style_view, StyleKeys.ASPECT_RATIO);
1640
2129
  }
1641
2130
  set aspectRatio(value) {
2131
+ this.prepareMut();
1642
2132
  setFloat32(this.style_view, StyleKeys.ASPECT_RATIO, value);
1643
- this.setOrAppendState(StateKeys.ASPECT_RATIO);
2133
+ this.commitState(StateKeys.ASPECT_RATIO);
1644
2134
  }
1645
2135
  get flexBasis() {
1646
- const type = getInt32(this.style_view, StyleKeys.FLEX_BASIS_TYPE);
2136
+ const type = getInt8(this.style_view, StyleKeys.FLEX_BASIS_TYPE);
1647
2137
  const value = getFloat32(this.style_view, StyleKeys.FLEX_BASIS_VALUE);
1648
2138
  return parseLengthPercentageAuto(type, value);
1649
2139
  }
1650
2140
  set flexBasis(value) {
1651
2141
  switch (typeof value) {
1652
2142
  case 'string':
1653
- setInt32(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 0);
2143
+ this.prepareMut();
2144
+ setInt8(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 0);
1654
2145
  break;
1655
2146
  case 'number':
1656
- setInt32(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 1);
2147
+ this.prepareMut();
2148
+ setInt8(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 1);
1657
2149
  setFloat32(this.style_view, StyleKeys.FLEX_BASIS_VALUE, layout.toDevicePixels(value));
1658
2150
  break;
1659
2151
  case 'object':
1660
2152
  switch (value.unit) {
1661
2153
  case 'dip':
1662
- setInt32(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 1);
2154
+ this.prepareMut();
2155
+ setInt8(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 1);
1663
2156
  setFloat32(this.style_view, StyleKeys.FLEX_BASIS_VALUE, layout.toDevicePixels(value.value));
1664
2157
  break;
1665
2158
  case 'px':
1666
- setInt32(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 1);
2159
+ this.prepareMut();
2160
+ setInt8(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 1);
1667
2161
  setFloat32(this.style_view, StyleKeys.FLEX_BASIS_VALUE, value.value);
1668
2162
  break;
1669
2163
  case '%':
1670
- setInt32(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 2);
2164
+ this.prepareMut();
2165
+ setInt8(this.style_view, StyleKeys.FLEX_BASIS_TYPE, 2);
1671
2166
  setFloat32(this.style_view, StyleKeys.FLEX_BASIS_VALUE, value.value);
1672
2167
  break;
1673
2168
  }
1674
2169
  break;
1675
2170
  }
1676
- this.setOrAppendState(StateKeys.FLEX_BASIS);
2171
+ this.commitState(StateKeys.FLEX_BASIS);
1677
2172
  }
1678
2173
  get alignItems() {
1679
- switch (getInt32(this.style_view, StyleKeys.ALIGN_ITEMS)) {
2174
+ switch (getInt8(this.style_view, StyleKeys.ALIGN_ITEMS)) {
1680
2175
  case -1 /* AlignItems.Normal */:
1681
2176
  return 'normal';
1682
2177
  case 0 /* AlignItems.Start */:
@@ -1696,36 +2191,41 @@ export class Style {
1696
2191
  }
1697
2192
  }
1698
2193
  set alignItems(value) {
2194
+ let align = -1;
1699
2195
  switch (value) {
1700
2196
  case 'normal':
1701
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, -1 /* AlignItems.Normal */);
2197
+ align = -1 /* AlignItems.Normal */;
1702
2198
  break;
1703
2199
  case 'start':
1704
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, 0 /* AlignItems.Start */);
2200
+ align = 0 /* AlignItems.Start */;
1705
2201
  break;
1706
2202
  case 'end':
1707
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, 1 /* AlignItems.End */);
2203
+ align = 1 /* AlignItems.End */;
1708
2204
  break;
1709
2205
  case 'flex-start':
1710
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, 5 /* AlignItems.FlexStart */);
2206
+ align = 5 /* AlignItems.FlexStart */;
1711
2207
  break;
1712
2208
  case 'flex-end':
1713
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, 6 /* AlignItems.FlexEnd */);
2209
+ align = 6 /* AlignItems.FlexEnd */;
1714
2210
  break;
1715
2211
  case 'center':
1716
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, 2 /* AlignItems.Center */);
2212
+ align = 2 /* AlignItems.Center */;
1717
2213
  break;
1718
2214
  case 'baseline':
1719
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, 3 /* AlignItems.Baseline */);
2215
+ align = 3 /* AlignItems.Baseline */;
1720
2216
  break;
1721
2217
  case 'stretch':
1722
- setInt32(this.style_view, StyleKeys.ALIGN_ITEMS, 4 /* AlignItems.Stretch */);
2218
+ align = 4 /* AlignItems.Stretch */;
1723
2219
  break;
1724
2220
  }
1725
- this.setOrAppendState(StateKeys.ALIGN_ITEMS);
2221
+ if (align !== -1) {
2222
+ this.prepareMut();
2223
+ setInt8(this.style_view, StyleKeys.ALIGN_ITEMS, align);
2224
+ this.commitState(StateKeys.ALIGN_ITEMS);
2225
+ }
1726
2226
  }
1727
2227
  get alignSelf() {
1728
- switch (getInt32(this.style_view, StyleKeys.ALIGN_SELF)) {
2228
+ switch (getInt8(this.style_view, StyleKeys.ALIGN_SELF)) {
1729
2229
  case -1 /* AlignSelf.Normal */:
1730
2230
  return 'normal';
1731
2231
  case 0 /* AlignSelf.Start */:
@@ -1772,13 +2272,14 @@ export class Style {
1772
2272
  align = 6 /* AlignSelf.FlexEnd */;
1773
2273
  break;
1774
2274
  }
1775
- if (align === -2) {
1776
- setInt32(this.style_view, StyleKeys.ALIGN_SELF, align);
1777
- this.setOrAppendState(StateKeys.ALIGN_SELF);
2275
+ if (align !== -2) {
2276
+ this.prepareMut();
2277
+ setInt8(this.style_view, StyleKeys.ALIGN_SELF, align);
2278
+ this.commitState(StateKeys.ALIGN_SELF);
1778
2279
  }
1779
2280
  }
1780
2281
  get alignContent() {
1781
- switch (getInt32(this.style_view, StyleKeys.ALIGN_CONTENT)) {
2282
+ switch (getInt8(this.style_view, StyleKeys.ALIGN_CONTENT)) {
1782
2283
  case -1 /* AlignContent.Normal */:
1783
2284
  return 'normal';
1784
2285
  case 5 /* AlignContent.SpaceAround */:
@@ -1798,36 +2299,41 @@ export class Style {
1798
2299
  }
1799
2300
  }
1800
2301
  set alignContent(value) {
2302
+ let align = -1;
1801
2303
  switch (value) {
1802
2304
  case 'normal':
1803
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, -1 /* AlignContent.Normal */);
2305
+ align = -1 /* AlignContent.Normal */;
1804
2306
  break;
1805
2307
  case 'space-around':
1806
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, 5 /* AlignContent.SpaceAround */);
2308
+ align = 5 /* AlignContent.SpaceAround */;
1807
2309
  break;
1808
2310
  case 'space-between':
1809
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, 4 /* AlignContent.SpaceBetween */);
2311
+ align = 4 /* AlignContent.SpaceBetween */;
1810
2312
  break;
1811
2313
  case 'space-evenly':
1812
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, 6 /* AlignContent.SpaceEvenly */);
2314
+ align = 6 /* AlignContent.SpaceEvenly */;
1813
2315
  break;
1814
2316
  case 'center':
1815
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, 2 /* AlignContent.Center */);
2317
+ align = 2 /* AlignContent.Center */;
1816
2318
  break;
1817
2319
  case 'end':
1818
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, 1 /* AlignContent.End */);
2320
+ align = 1 /* AlignContent.End */;
1819
2321
  break;
1820
2322
  case 'start':
1821
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, 0 /* AlignContent.Start */);
2323
+ align = 0 /* AlignContent.Start */;
1822
2324
  break;
1823
2325
  case 'stretch':
1824
- setInt32(this.style_view, StyleKeys.ALIGN_CONTENT, 3 /* AlignContent.Stretch */);
2326
+ align = 3 /* AlignContent.Stretch */;
1825
2327
  break;
1826
2328
  }
1827
- this.setOrAppendState(StateKeys.ALIGN_CONTENT);
2329
+ if (align !== -1) {
2330
+ this.prepareMut();
2331
+ setInt8(this.style_view, StyleKeys.ALIGN_CONTENT, align);
2332
+ this.commitState(StateKeys.ALIGN_CONTENT);
2333
+ }
1828
2334
  }
1829
2335
  get justifyItems() {
1830
- switch (getInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS)) {
2336
+ switch (getInt8(this.style_view, StyleKeys.JUSTIFY_ITEMS)) {
1831
2337
  case -1 /* JustifyItems.Normal */:
1832
2338
  return 'normal';
1833
2339
  case 0 /* JustifyItems.Start */:
@@ -1847,36 +2353,41 @@ export class Style {
1847
2353
  }
1848
2354
  }
1849
2355
  set justifyItems(value) {
2356
+ let v = -1;
1850
2357
  switch (value) {
1851
2358
  case 'normal':
1852
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, -1 /* JustifyItems.Normal */);
2359
+ v = -1 /* JustifyItems.Normal */;
1853
2360
  break;
1854
2361
  case 'start':
1855
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, 0 /* JustifyItems.Start */);
2362
+ v = 0 /* JustifyItems.Start */;
1856
2363
  break;
1857
2364
  case 'end':
1858
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, 1 /* JustifyItems.End */);
2365
+ v = 1 /* JustifyItems.End */;
1859
2366
  break;
1860
2367
  case 'center':
1861
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, 2 /* JustifyItems.Center */);
2368
+ v = 2 /* JustifyItems.Center */;
1862
2369
  break;
1863
2370
  case 'baseline':
1864
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, 3 /* JustifyItems.Baseline */);
2371
+ v = 3 /* JustifyItems.Baseline */;
1865
2372
  break;
1866
2373
  case 'stretch':
1867
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, 4 /* JustifyItems.Stretch */);
2374
+ v = 4 /* JustifyItems.Stretch */;
1868
2375
  break;
1869
2376
  case 'flex-start':
1870
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, 5 /* JustifyItems.FlexStart */);
2377
+ v = 5 /* JustifyItems.FlexStart */;
1871
2378
  break;
1872
2379
  case 'flex-end':
1873
- setInt32(this.style_view, StyleKeys.JUSTIFY_ITEMS, 6 /* JustifyItems.FlexEnd */);
2380
+ v = 6 /* JustifyItems.FlexEnd */;
1874
2381
  break;
1875
2382
  }
1876
- this.setOrAppendState(StateKeys.JUSTIFY_ITEMS);
2383
+ if (v !== -1) {
2384
+ this.prepareMut();
2385
+ setInt8(this.style_view, StyleKeys.JUSTIFY_ITEMS, v);
2386
+ this.commitState(StateKeys.JUSTIFY_ITEMS);
2387
+ }
1877
2388
  }
1878
2389
  get justifySelf() {
1879
- switch (getInt32(this.style_view, StyleKeys.JUSTIFY_SELF)) {
2390
+ switch (getInt8(this.style_view, StyleKeys.JUSTIFY_SELF)) {
1880
2391
  case -1 /* JustifySelf.Normal */:
1881
2392
  return 'normal';
1882
2393
  case 0 /* JustifySelf.Start */:
@@ -1896,36 +2407,41 @@ export class Style {
1896
2407
  }
1897
2408
  }
1898
2409
  set justifySelf(value) {
2410
+ let v = -1;
1899
2411
  switch (value) {
1900
2412
  case 'normal':
1901
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, -1 /* JustifySelf.Normal */);
2413
+ v = -1 /* JustifySelf.Normal */;
1902
2414
  break;
1903
2415
  case 'start':
1904
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, 0 /* JustifySelf.Start */);
2416
+ v = 0 /* JustifySelf.Start */;
1905
2417
  break;
1906
2418
  case 'end':
1907
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, 1 /* JustifySelf.End */);
2419
+ v = 1 /* JustifySelf.End */;
1908
2420
  break;
1909
2421
  case 'center':
1910
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, 2 /* JustifySelf.Center */);
2422
+ v = 2 /* JustifySelf.Center */;
1911
2423
  break;
1912
2424
  case 'baseline':
1913
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, 3 /* JustifySelf.Baseline */);
2425
+ v = 3 /* JustifySelf.Baseline */;
1914
2426
  break;
1915
2427
  case 'stretch':
1916
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, 4 /* JustifySelf.Stretch */);
2428
+ v = 4 /* JustifySelf.Stretch */;
1917
2429
  break;
1918
2430
  case 'flex-start':
1919
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, 5 /* JustifySelf.FlexStart */);
2431
+ v = 5 /* JustifySelf.FlexStart */;
1920
2432
  break;
1921
2433
  case 'flex-end':
1922
- setInt32(this.style_view, StyleKeys.JUSTIFY_SELF, 6 /* JustifySelf.FlexEnd */);
2434
+ v = 6 /* JustifySelf.FlexEnd */;
1923
2435
  break;
1924
2436
  }
1925
- this.setOrAppendState(StateKeys.JUSTIFY_SELF);
2437
+ if (v !== -1) {
2438
+ this.prepareMut();
2439
+ setInt8(this.style_view, StyleKeys.JUSTIFY_SELF, v);
2440
+ this.commitState(StateKeys.JUSTIFY_SELF);
2441
+ }
1926
2442
  }
1927
2443
  get justifyContent() {
1928
- switch (getInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT)) {
2444
+ switch (getInt8(this.style_view, StyleKeys.JUSTIFY_CONTENT)) {
1929
2445
  case -1 /* JustifyContent.Normal */:
1930
2446
  return 'normal';
1931
2447
  case 0 /* JustifyContent.Start */:
@@ -1949,33 +2465,38 @@ export class Style {
1949
2465
  }
1950
2466
  }
1951
2467
  set justifyContent(value) {
2468
+ let v = -1;
1952
2469
  switch (value) {
1953
2470
  case 'normal':
1954
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, -1 /* JustifyContent.Normal */);
2471
+ v = -1 /* JustifyContent.Normal */;
1955
2472
  break;
1956
2473
  case 'space-around':
1957
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, 5 /* JustifyContent.SpaceAround */);
2474
+ v = 5 /* JustifyContent.SpaceAround */;
1958
2475
  break;
1959
2476
  case 'space-between':
1960
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, 4 /* JustifyContent.SpaceBetween */);
2477
+ v = 4 /* JustifyContent.SpaceBetween */;
1961
2478
  break;
1962
2479
  case 'space-evenly':
1963
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, 6 /* JustifyContent.SpaceEvenly */);
2480
+ v = 6 /* JustifyContent.SpaceEvenly */;
1964
2481
  break;
1965
2482
  case 'center':
1966
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, 2 /* JustifyContent.Center */);
2483
+ v = 2 /* JustifyContent.Center */;
1967
2484
  break;
1968
2485
  case 'end':
1969
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, 1 /* JustifyContent.End */);
2486
+ v = 1 /* JustifyContent.End */;
1970
2487
  break;
1971
2488
  case 'start':
1972
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, 0 /* JustifyContent.Start */);
2489
+ v = 0 /* JustifyContent.Start */;
1973
2490
  break;
1974
2491
  case 'stretch':
1975
- setInt32(this.style_view, StyleKeys.JUSTIFY_CONTENT, 3 /* JustifyContent.Stretch */);
2492
+ v = 3 /* JustifyContent.Stretch */;
1976
2493
  break;
1977
2494
  }
1978
- this.setOrAppendState(StateKeys.JUSTIFY_CONTENT);
2495
+ if (v !== -1) {
2496
+ this.prepareMut();
2497
+ setInt8(this.style_view, StyleKeys.JUSTIFY_CONTENT, v);
2498
+ this.commitState(StateKeys.JUSTIFY_CONTENT);
2499
+ }
1979
2500
  }
1980
2501
  get gridAutoRows() {
1981
2502
  if (!this.nativeView) {
@@ -2024,7 +2545,7 @@ export class Style {
2024
2545
  }
2025
2546
  }
2026
2547
  get gridAutoFlow() {
2027
- switch (getInt32(this.style_view, StyleKeys.GRID_AUTO_FLOW)) {
2548
+ switch (getInt8(this.style_view, StyleKeys.GRID_AUTO_FLOW)) {
2028
2549
  case 0:
2029
2550
  return 'row';
2030
2551
  case 1:
@@ -2036,21 +2557,12 @@ export class Style {
2036
2557
  }
2037
2558
  }
2038
2559
  set gridAutoFlow(value) {
2039
- switch (value) {
2040
- case 'row':
2041
- setInt32(this.style_view, StyleKeys.GRID_AUTO_FLOW, 0);
2042
- break;
2043
- case 'column':
2044
- setInt32(this.style_view, StyleKeys.GRID_AUTO_FLOW, 1);
2045
- break;
2046
- case 'row dense':
2047
- setInt32(this.style_view, StyleKeys.GRID_AUTO_FLOW, 2);
2048
- break;
2049
- case 'column dense':
2050
- setInt32(this.style_view, StyleKeys.GRID_AUTO_FLOW, 3);
2051
- break;
2560
+ const v = { row: 0, column: 1, 'row dense': 2, 'column dense': 3 }[value];
2561
+ if (v !== undefined) {
2562
+ this.prepareMut();
2563
+ setInt8(this.style_view, StyleKeys.GRID_AUTO_FLOW, v);
2564
+ this.commitState(StateKeys.GRID_AUTO_FLOW);
2052
2565
  }
2053
- this.setOrAppendState(StateKeys.GRID_AUTO_FLOW);
2054
2566
  }
2055
2567
  get gridRowGap() {
2056
2568
  return this.rowGap;
@@ -2303,63 +2815,34 @@ export class Style {
2303
2815
  return `${x} ${y}`;
2304
2816
  }
2305
2817
  set overflow(value) {
2818
+ const overflowMap = { visible: 0, hidden: 1, scroll: 2, clip: 3, auto: 4 };
2819
+ this.prepareMut();
2306
2820
  switch (value) {
2307
2821
  case 'visible':
2308
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 0);
2309
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 0);
2310
- break;
2311
2822
  case 'hidden':
2312
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 1);
2313
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 1);
2314
- break;
2315
2823
  case 'scroll':
2316
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 2);
2317
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 2);
2824
+ case 'clip':
2825
+ case 'auto': {
2826
+ const v = overflowMap[value];
2827
+ setInt8(this.style_view, StyleKeys.OVERFLOW_X, v);
2828
+ setInt8(this.style_view, StyleKeys.OVERFLOW_Y, v);
2318
2829
  break;
2319
- default:
2320
- {
2321
- const values = value.split(' ');
2322
- switch (values[0]) {
2323
- case 'visible':
2324
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 0);
2325
- break;
2326
- case 'hidden':
2327
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 1);
2328
- break;
2329
- case 'scroll':
2330
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 2);
2331
- break;
2332
- case 'clip':
2333
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 3);
2334
- break;
2335
- case 'auto':
2336
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 4);
2337
- break;
2338
- }
2339
- switch (values[1]) {
2340
- case 'visible':
2341
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 0);
2342
- break;
2343
- case 'hidden':
2344
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 1);
2345
- break;
2346
- case 'scroll':
2347
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 2);
2348
- break;
2349
- case 'clip':
2350
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 3);
2351
- break;
2352
- case 'auto':
2353
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 4);
2354
- break;
2355
- }
2356
- }
2830
+ }
2831
+ default: {
2832
+ const values = value.split(' ');
2833
+ const x = overflowMap[values[0]];
2834
+ const y = overflowMap[values[1]];
2835
+ if (x !== undefined)
2836
+ setInt8(this.style_view, StyleKeys.OVERFLOW_X, x);
2837
+ if (y !== undefined)
2838
+ setInt8(this.style_view, StyleKeys.OVERFLOW_Y, y);
2357
2839
  break;
2840
+ }
2358
2841
  }
2359
- this.setOrAppendState(StateKeys.OVERFLOW);
2842
+ this.commitState(StateKeys.OVERFLOW);
2360
2843
  }
2361
2844
  get overflowX() {
2362
- switch (getInt32(this.style_view, StyleKeys.OVERFLOW_X)) {
2845
+ switch (getInt8(this.style_view, StyleKeys.OVERFLOW_X)) {
2363
2846
  case 0:
2364
2847
  return 'visible';
2365
2848
  case 1:
@@ -2369,35 +2852,15 @@ export class Style {
2369
2852
  }
2370
2853
  }
2371
2854
  set overflowX(value) {
2372
- let dirty = false;
2373
- switch (value) {
2374
- case 'visible':
2375
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 0);
2376
- dirty = true;
2377
- break;
2378
- case 'hidden':
2379
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 1);
2380
- dirty = true;
2381
- break;
2382
- case 'scroll':
2383
- dirty = true;
2384
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 2);
2385
- break;
2386
- case 'clip':
2387
- dirty = true;
2388
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 3);
2389
- break;
2390
- case 'auto':
2391
- dirty = true;
2392
- setInt32(this.style_view, StyleKeys.OVERFLOW_X, 4);
2393
- break;
2394
- }
2395
- if (dirty) {
2396
- this.setOrAppendState(StateKeys.OVERFLOW_X);
2855
+ const v = { visible: 0, hidden: 1, scroll: 2, clip: 3, auto: 4 }[value];
2856
+ if (v !== undefined) {
2857
+ this.prepareMut();
2858
+ setInt8(this.style_view, StyleKeys.OVERFLOW_X, v);
2859
+ this.commitState(StateKeys.OVERFLOW_X);
2397
2860
  }
2398
2861
  }
2399
2862
  get overflowY() {
2400
- switch (getInt32(this.style_view, StyleKeys.OVERFLOW_Y)) {
2863
+ switch (getInt8(this.style_view, StyleKeys.OVERFLOW_Y)) {
2401
2864
  case 0:
2402
2865
  return 'visible';
2403
2866
  case 1:
@@ -2411,125 +2874,116 @@ export class Style {
2411
2874
  }
2412
2875
  }
2413
2876
  set overflowY(value) {
2414
- let dirty = false;
2415
- switch (value) {
2416
- case 'visible':
2417
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 0);
2418
- dirty = true;
2419
- break;
2420
- case 'hidden':
2421
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 1);
2422
- dirty = true;
2423
- break;
2424
- case 'scroll':
2425
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 2);
2426
- dirty = true;
2427
- break;
2428
- case 'clip':
2429
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 3);
2430
- dirty = true;
2431
- break;
2432
- case 'auto':
2433
- setInt32(this.style_view, StyleKeys.OVERFLOW_Y, 4);
2434
- dirty = true;
2435
- break;
2436
- }
2437
- if (dirty) {
2438
- this.setOrAppendState(StateKeys.OVERFLOW_Y);
2877
+ const v = { visible: 0, hidden: 1, scroll: 2, clip: 3, auto: 4 }[value];
2878
+ if (v !== undefined) {
2879
+ this.prepareMut();
2880
+ setInt8(this.style_view, StyleKeys.OVERFLOW_Y, v);
2881
+ this.commitState(StateKeys.OVERFLOW_Y);
2439
2882
  }
2440
2883
  }
2441
2884
  get flexGrow() {
2442
2885
  return getFloat32(this.style_view, StyleKeys.FLEX_GROW);
2443
2886
  }
2444
2887
  set flexGrow(value) {
2888
+ this.prepareMut();
2445
2889
  setFloat32(this.style_view, StyleKeys.FLEX_GROW, value);
2446
- this.setOrAppendState(StateKeys.FLEX_GROW);
2890
+ this.commitState(StateKeys.FLEX_GROW);
2447
2891
  }
2448
2892
  get flexShrink() {
2449
2893
  return getFloat32(this.style_view, StyleKeys.FLEX_SHRINK);
2450
2894
  }
2451
2895
  set flexShrink(value) {
2896
+ this.prepareMut();
2452
2897
  setFloat32(this.style_view, StyleKeys.FLEX_SHRINK, value);
2453
- this.setOrAppendState(StateKeys.FLEX_SHRINK);
2898
+ this.commitState(StateKeys.FLEX_SHRINK);
2454
2899
  }
2455
2900
  get scrollBarWidth() {
2456
2901
  return getFloat32(this.style_view, StyleKeys.SCROLLBAR_WIDTH);
2457
2902
  }
2458
2903
  set scrollBarWidth(value) {
2459
2904
  if (typeof value === 'number') {
2905
+ this.prepareMut();
2460
2906
  setFloat32(this.style_view, StyleKeys.SCROLLBAR_WIDTH, value);
2461
- this.setOrAppendState(StateKeys.SCROLLBAR_WIDTH);
2907
+ this.commitState(StateKeys.SCROLLBAR_WIDTH);
2462
2908
  }
2463
2909
  else if (typeof value === 'object') {
2464
2910
  switch (value.unit) {
2465
2911
  case 'dip':
2912
+ this.prepareMut();
2466
2913
  setFloat32(this.style_view, StyleKeys.SCROLLBAR_WIDTH, layout.toDevicePixels(value.value));
2467
- this.setOrAppendState(StateKeys.SCROLLBAR_WIDTH);
2914
+ this.commitState(StateKeys.SCROLLBAR_WIDTH);
2468
2915
  break;
2469
2916
  case 'px':
2917
+ this.prepareMut();
2470
2918
  setFloat32(this.style_view, StyleKeys.SCROLLBAR_WIDTH, value.value);
2471
- this.setOrAppendState(StateKeys.SCROLLBAR_WIDTH);
2919
+ this.commitState(StateKeys.SCROLLBAR_WIDTH);
2472
2920
  break;
2473
2921
  }
2474
2922
  }
2475
2923
  }
2476
2924
  get letterSpacing() {
2477
- return getFloat32(this.text_style_view, TextStyleKeys.LETTER_SPACING);
2925
+ return getFloat32(this.style_view, StyleKeys.LETTER_SPACING);
2478
2926
  }
2479
2927
  set letterSpacing(value) {
2480
2928
  if (typeof value === 'number') {
2481
- setFloat32(this.text_style_view, TextStyleKeys.LETTER_SPACING, value);
2482
- setUint8(this.text_style_view, TextStyleKeys.LETTER_SPACING_STATE, 1);
2483
- this.setOrAppendTextState(TextStateKeys.LETTER_SPACING);
2929
+ this.prepareMut();
2930
+ setFloat32(this.style_view, StyleKeys.LETTER_SPACING, value);
2931
+ setUint8(this.style_view, StyleKeys.LETTER_SPACING_STATE, 1);
2932
+ this.commitState(StateKeys.LETTER_SPACING);
2484
2933
  }
2485
2934
  else if (typeof value === 'object') {
2486
2935
  switch (value.unit) {
2487
2936
  case 'dip':
2488
- setFloat32(this.text_style_view, TextStyleKeys.LETTER_SPACING, layout.toDevicePixels(value.value));
2489
- setUint8(this.text_style_view, TextStyleKeys.LETTER_SPACING_STATE, 1);
2490
- this.setOrAppendTextState(TextStateKeys.LETTER_SPACING);
2937
+ this.prepareMut();
2938
+ setFloat32(this.style_view, StyleKeys.LETTER_SPACING, layout.toDevicePixels(value.value));
2939
+ setUint8(this.style_view, StyleKeys.LETTER_SPACING_STATE, 1);
2940
+ this.commitState(StateKeys.LETTER_SPACING);
2491
2941
  break;
2492
2942
  case 'px':
2493
- setFloat32(this.text_style_view, TextStyleKeys.LETTER_SPACING, value.value);
2494
- setUint8(this.text_style_view, TextStyleKeys.LETTER_SPACING_STATE, 1);
2495
- this.setOrAppendTextState(TextStateKeys.LETTER_SPACING);
2943
+ this.prepareMut();
2944
+ setFloat32(this.style_view, StyleKeys.LETTER_SPACING, value.value);
2945
+ setUint8(this.style_view, StyleKeys.LETTER_SPACING_STATE, 1);
2946
+ this.commitState(StateKeys.LETTER_SPACING);
2496
2947
  break;
2497
2948
  }
2498
2949
  }
2499
2950
  }
2500
2951
  get lineHeight() {
2501
- return getFloat32(this.text_style_view, TextStyleKeys.LINE_HEIGHT);
2952
+ return getFloat32(this.style_view, StyleKeys.LINE_HEIGHT);
2502
2953
  }
2503
2954
  set lineHeight(value) {
2504
2955
  if (typeof value === 'number') {
2505
- setFloat32(this.text_style_view, TextStyleKeys.LINE_HEIGHT, value);
2506
- setUint8(this.text_style_view, TextStyleKeys.LINE_HEIGHT_STATE, 1);
2507
- setUint8(this.text_style_view, TextStyleKeys.LINE_HEIGHT_TYPE, 0);
2508
- this.setOrAppendTextState(TextStateKeys.LINE_HEIGHT);
2956
+ this.prepareMut();
2957
+ setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, value);
2958
+ setUint8(this.style_view, StyleKeys.LINE_HEIGHT_STATE, 1);
2959
+ setUint8(this.style_view, StyleKeys.LINE_HEIGHT_TYPE, 0);
2960
+ this.commitState(StateKeys.LINE_HEIGHT);
2509
2961
  }
2510
2962
  else if (typeof value === 'object') {
2511
2963
  switch (value.unit) {
2512
2964
  case 'dip':
2513
- setFloat32(this.text_style_view, TextStyleKeys.LETTER_SPACING, layout.toDevicePixels(value.value));
2514
- setUint8(this.text_style_view, TextStyleKeys.LINE_HEIGHT_STATE, 1);
2515
- setUint8(this.text_style_view, TextStyleKeys.LINE_HEIGHT_TYPE, 1);
2516
- this.setOrAppendTextState(TextStateKeys.LETTER_SPACING);
2965
+ this.prepareMut();
2966
+ setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, layout.toDevicePixels(value.value));
2967
+ setUint8(this.style_view, StyleKeys.LINE_HEIGHT_STATE, 1);
2968
+ setUint8(this.style_view, StyleKeys.LINE_HEIGHT_TYPE, 1);
2969
+ this.commitState(StateKeys.LINE_HEIGHT);
2517
2970
  break;
2518
2971
  case 'px':
2519
- setFloat32(this.text_style_view, TextStyleKeys.LETTER_SPACING, value.value);
2520
- setUint8(this.text_style_view, TextStyleKeys.LINE_HEIGHT_STATE, 1);
2521
- setUint8(this.text_style_view, TextStyleKeys.LINE_HEIGHT_TYPE, 1);
2522
- this.setOrAppendTextState(TextStateKeys.LETTER_SPACING);
2972
+ this.prepareMut();
2973
+ setFloat32(this.style_view, StyleKeys.LINE_HEIGHT, value.value);
2974
+ setUint8(this.style_view, StyleKeys.LINE_HEIGHT_STATE, 1);
2975
+ setUint8(this.style_view, StyleKeys.LINE_HEIGHT_TYPE, 1);
2976
+ this.commitState(StateKeys.LINE_HEIGHT);
2523
2977
  break;
2524
2978
  }
2525
2979
  }
2526
2980
  }
2527
2981
  get textOverflow() {
2528
- if (!this.text_style_view) {
2982
+ if (!this.style_view) {
2529
2983
  // clip ?
2530
2984
  return 'clip';
2531
2985
  }
2532
- const type = getInt32(this.text_style_view, TextStyleKeys.TEXT_OVERFLOW);
2986
+ const type = getInt32(this.style_view, StyleKeys.TEXT_OVERFLOW);
2533
2987
  switch (type) {
2534
2988
  case 0:
2535
2989
  return 'clip';
@@ -2537,18 +2991,10 @@ export class Style {
2537
2991
  return 'ellipsis';
2538
2992
  default:
2539
2993
  }
2540
- if (__ANDROID__) {
2541
- // @ts-ignore
2542
- const overflow = this.view_._view.getTextOverflow();
2543
- }
2544
- if (__APPLE__) {
2545
- // @ts-ignore
2546
- const overflow = this.view_._view.textOverflow;
2547
- }
2548
2994
  return 'clip';
2549
2995
  }
2550
2996
  set textOverflow(value) {
2551
- if (!this.text_style_view) {
2997
+ if (!this.style_view) {
2552
2998
  return;
2553
2999
  }
2554
3000
  let flow = -1;
@@ -2560,30 +3006,22 @@ export class Style {
2560
3006
  flow = 1;
2561
3007
  break;
2562
3008
  default:
2563
- {
2564
- if (__ANDROID__) {
2565
- // @ts-ignore
2566
- const overflow = this.view_._view.getTextOverflow();
2567
- }
2568
- if (__APPLE__) {
2569
- // @ts-ignore
2570
- const overflow = this.view_._view.textOverflow;
2571
- }
2572
- }
3009
+ // noop
2573
3010
  break;
2574
3011
  }
2575
3012
  if (flow !== -1) {
2576
- setInt32(this.text_style_view, TextStyleKeys.TEXT_OVERFLOW, flow);
2577
- setInt8(this.text_style_view, TextStyleKeys.TEXT_OVERFLOW_STATE, 1);
2578
- this.setOrAppendTextState(TextStateKeys.TEXT_OVERFLOW);
3013
+ this.prepareMut();
3014
+ setInt32(this.style_view, StyleKeys.TEXT_OVERFLOW, flow);
3015
+ setInt8(this.style_view, StyleKeys.TEXT_OVERFLOW_STATE, 1);
3016
+ this.commitState(StateKeys.TEXT_OVERFLOW);
2579
3017
  }
2580
3018
  }
2581
3019
  get textAlignment() {
2582
- if (!this.text_style_view) {
3020
+ if (!this.style_view) {
2583
3021
  // clip ?
2584
3022
  return 'start';
2585
3023
  }
2586
- const type = getInt32(this.text_style_view, TextStyleKeys.TEXT_ALIGN);
3024
+ const type = getInt32(this.style_view, StyleKeys.TEXT_ALIGN);
2587
3025
  switch (type) {
2588
3026
  case 0:
2589
3027
  // auto
@@ -2605,7 +3043,7 @@ export class Style {
2605
3043
  }
2606
3044
  }
2607
3045
  set textAlignment(value) {
2608
- if (!this.text_style_view) {
3046
+ if (!this.style_view) {
2609
3047
  return;
2610
3048
  }
2611
3049
  let align = -1;
@@ -2632,9 +3070,10 @@ export class Style {
2632
3070
  break;
2633
3071
  }
2634
3072
  if (align !== -1) {
2635
- setInt32(this.text_style_view, TextStyleKeys.TEXT_ALIGN, align);
2636
- setInt8(this.text_style_view, TextStyleKeys.TEXT_ALIGN_STATE, 1);
2637
- this.setOrAppendTextState(TextStateKeys.TEXT_ALIGN);
3073
+ this.prepareMut();
3074
+ setInt32(this.style_view, StyleKeys.TEXT_ALIGN, align);
3075
+ setInt8(this.style_view, StyleKeys.TEXT_ALIGN_STATE, 1);
3076
+ this.commitState(StateKeys.TEXT_ALIGN);
2638
3077
  }
2639
3078
  }
2640
3079
  get background() {
@@ -2650,15 +3089,7 @@ export class Style {
2650
3089
  return '';
2651
3090
  }
2652
3091
  set background(value) {
2653
- if (!this.nativeView) {
2654
- return;
2655
- }
2656
- if (__ANDROID__) {
2657
- org.nativescript.mason.masonkit.NodeHelper.getShared().setBackground(this.nativeView, value);
2658
- }
2659
- if (__APPLE__) {
2660
- this.nativeView.style.background = value;
2661
- }
3092
+ this.setPseudoCssStringValue('background', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackground(this.nativeView, value), () => (this.nativeView.style.background = value));
2662
3093
  }
2663
3094
  get backgroundImage() {
2664
3095
  if (!this.nativeView) {
@@ -2673,89 +3104,222 @@ export class Style {
2673
3104
  return '';
2674
3105
  }
2675
3106
  set backgroundImage(value) {
3107
+ this.setPseudoCssStringValue('background-image', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundImage(this.nativeView, value), () => (this.nativeView.style.backgroundImage = value));
3108
+ }
3109
+ get backgroundRepeat() {
2676
3110
  if (!this.nativeView) {
2677
- return;
3111
+ return '';
2678
3112
  }
2679
3113
  if (__ANDROID__) {
2680
- org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundImage(this.nativeView, value);
3114
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundRepeat(this.nativeView);
2681
3115
  }
2682
3116
  if (__APPLE__) {
2683
- this.nativeView.style.backgroundImage = value;
3117
+ return this.nativeView.style.backgroundRepeat;
2684
3118
  }
3119
+ return '';
2685
3120
  }
2686
- get borderRadius() {
3121
+ set backgroundRepeat(value) {
3122
+ this.setPseudoCssStringValue('background-repeat', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundRepeat(this.nativeView, value), () => (this.nativeView.style.backgroundRepeat = value));
3123
+ }
3124
+ get backgroundPosition() {
2687
3125
  if (!this.nativeView) {
2688
3126
  return '';
2689
3127
  }
2690
3128
  if (__ANDROID__) {
2691
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBorderRadius(this.nativeView);
3129
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundPosition(this.nativeView);
2692
3130
  }
2693
3131
  if (__APPLE__) {
2694
- return this.nativeView.style.borderRadius;
3132
+ return this.nativeView.style.backgroundPosition;
2695
3133
  }
2696
3134
  return '';
2697
3135
  }
2698
- set borderRadius(value) {
3136
+ set backgroundPosition(value) {
3137
+ this.setPseudoCssStringValue('background-position', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundPosition(this.nativeView, value), () => (this.nativeView.style.backgroundPosition = value));
3138
+ }
3139
+ get backgroundSize() {
2699
3140
  if (!this.nativeView) {
2700
- return;
3141
+ return '';
2701
3142
  }
2702
3143
  if (__ANDROID__) {
2703
- org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderRadius(this.nativeView, value);
3144
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundSize(this.nativeView);
2704
3145
  }
2705
3146
  if (__APPLE__) {
2706
- this.nativeView.style.borderRadius = value;
3147
+ return this.nativeView.style.backgroundSize;
2707
3148
  }
3149
+ return '';
2708
3150
  }
2709
- get border() {
3151
+ set backgroundSize(value) {
3152
+ this.setPseudoCssStringValue('background-size', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundSize(this.nativeView, value), () => (this.nativeView.style.backgroundSize = value));
3153
+ }
3154
+ get backgroundClip() {
2710
3155
  if (!this.nativeView) {
2711
3156
  return '';
2712
3157
  }
2713
3158
  if (__ANDROID__) {
2714
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getBorder(this.nativeView);
3159
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackgroundClip(this.nativeView);
2715
3160
  }
2716
3161
  if (__APPLE__) {
2717
- return this.nativeView.style.border;
3162
+ return this.nativeView.style.backgroundClip;
2718
3163
  }
2719
3164
  return '';
2720
3165
  }
2721
- set border(value) {
3166
+ set backgroundClip(value) {
3167
+ this.setPseudoCssStringValue('background-clip', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackgroundClip(this.nativeView, value), () => (this.nativeView.style.backgroundClip = value));
3168
+ }
3169
+ get borderRadius() {
2722
3170
  if (!this.nativeView) {
2723
- return;
3171
+ return '';
2724
3172
  }
2725
3173
  if (__ANDROID__) {
2726
- org.nativescript.mason.masonkit.NodeHelper.getShared().setBorder(this.nativeView, value);
3174
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBorderRadius(this.nativeView);
2727
3175
  }
2728
3176
  if (__APPLE__) {
2729
- this.nativeView.style.border = value;
3177
+ return this.nativeView.style.borderRadius;
2730
3178
  }
3179
+ return '';
2731
3180
  }
2732
- get filter() {
3181
+ set borderRadius(value) {
3182
+ this.setPseudoCssStringValue('border-radius', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderRadius(this.nativeView, value), () => (this.nativeView.style.borderRadius = value));
3183
+ }
3184
+ get border() {
2733
3185
  if (!this.nativeView) {
2734
3186
  return '';
2735
3187
  }
2736
3188
  if (__ANDROID__) {
2737
- return org.nativescript.mason.masonkit.NodeHelper.getShared().getFilter(this.nativeView);
3189
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBorder(this.nativeView);
2738
3190
  }
2739
3191
  if (__APPLE__) {
2740
- return this.nativeView.style.filter;
3192
+ return this.nativeView.style.border;
2741
3193
  }
2742
3194
  return '';
2743
3195
  }
2744
- set filter(value) {
2745
- if (!this.nativeView) {
2746
- return;
2747
- }
3196
+ set border(value) {
3197
+ this.setPseudoCssStringValue('border', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorder(this.nativeView, value), () => (this.nativeView.style.border = value));
3198
+ }
3199
+ get paddingCss() {
3200
+ if (!this.nativeView)
3201
+ return '';
2748
3202
  if (__ANDROID__) {
2749
- org.nativescript.mason.masonkit.NodeHelper.getShared().setFilter(this.nativeView, value);
3203
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getPaddingCssValue(this.nativeView);
2750
3204
  }
2751
3205
  if (__APPLE__) {
2752
- this.nativeView.style.filter = value;
3206
+ return this.nativeView.style.paddingCss;
2753
3207
  }
3208
+ return '';
2754
3209
  }
2755
- get verticalAlign() {
2756
- const isPercent = getUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET) == 1;
2757
- const value = getFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET);
2758
- if (isPercent) {
3210
+ set paddingCss(value) {
3211
+ const strValue = typeof value === 'number' ? `${value}px` : value;
3212
+ this.setPseudoCssStringValue('padding', strValue, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setPaddingCss(this.nativeView, strValue), () => (this.nativeView.style.paddingCss = strValue));
3213
+ }
3214
+ get marginCss() {
3215
+ if (!this.nativeView)
3216
+ return '';
3217
+ if (__ANDROID__) {
3218
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getMarginCssValue(this.nativeView);
3219
+ }
3220
+ if (__APPLE__) {
3221
+ return this.nativeView.style.marginCss;
3222
+ }
3223
+ return '';
3224
+ }
3225
+ set marginCss(value) {
3226
+ const strValue = typeof value === 'number' ? `${value}px` : value;
3227
+ this.setPseudoCssStringValue('margin', strValue, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setMarginCss(this.nativeView, strValue), () => (this.nativeView.style.marginCss = strValue));
3228
+ }
3229
+ get insetCss() {
3230
+ if (!this.nativeView)
3231
+ return '';
3232
+ if (__ANDROID__) {
3233
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getInsetCssValue(this.nativeView);
3234
+ }
3235
+ if (__APPLE__) {
3236
+ return this.nativeView.style.insetCss;
3237
+ }
3238
+ return '';
3239
+ }
3240
+ set insetCss(value) {
3241
+ const strValue = typeof value === 'number' ? `${value}px` : value;
3242
+ this.setPseudoCssStringValue('inset', strValue, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setInsetCss(this.nativeView, strValue), () => (this.nativeView.style.insetCss = strValue));
3243
+ }
3244
+ get borderLeft() {
3245
+ return '';
3246
+ }
3247
+ set borderLeft(value) {
3248
+ this.setPseudoCssStringValue('border-left', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderLeft(this.nativeView, value), () => (this.nativeView.style.borderLeft = value));
3249
+ }
3250
+ get borderTop() {
3251
+ return '';
3252
+ }
3253
+ set borderTop(value) {
3254
+ this.setPseudoCssStringValue('border-top', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderTop(this.nativeView, value), () => (this.nativeView.style.borderTop = value));
3255
+ }
3256
+ get borderRight() {
3257
+ return '';
3258
+ }
3259
+ set borderRight(value) {
3260
+ this.setPseudoCssStringValue('border-right', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderRight(this.nativeView, value), () => (this.nativeView.style.borderRight = value));
3261
+ }
3262
+ get borderBottom() {
3263
+ return '';
3264
+ }
3265
+ set borderBottom(value) {
3266
+ this.setPseudoCssStringValue('border-bottom', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderBottom(this.nativeView, value), () => (this.nativeView.style.borderBottom = value));
3267
+ }
3268
+ get filter() {
3269
+ if (!this.nativeView) {
3270
+ return '';
3271
+ }
3272
+ if (__ANDROID__) {
3273
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getFilter(this.nativeView);
3274
+ }
3275
+ if (__APPLE__) {
3276
+ return this.nativeView.style.filter;
3277
+ }
3278
+ return '';
3279
+ }
3280
+ set filter(value) {
3281
+ this.setPseudoCssStringValue('filter', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setFilter(this.nativeView, value), () => (this.nativeView.style.filter = value));
3282
+ }
3283
+ get boxShadow() {
3284
+ if (!this.nativeView) {
3285
+ return '';
3286
+ }
3287
+ if (__ANDROID__) {
3288
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBoxShadow(this.nativeView);
3289
+ }
3290
+ if (__APPLE__) {
3291
+ return this.nativeView.style.boxShadow;
3292
+ }
3293
+ return '';
3294
+ }
3295
+ set 'box-shadow'(value) {
3296
+ this.boxShadow = value;
3297
+ }
3298
+ get 'box-shadow'() {
3299
+ return this.boxShadow;
3300
+ }
3301
+ set boxShadow(value) {
3302
+ this.setPseudoCssStringValue('box-shadow', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBoxShadow(this.nativeView, value), () => (this.nativeView.style.boxShadow = value));
3303
+ }
3304
+ get transform() {
3305
+ if (!this.nativeView) {
3306
+ return '';
3307
+ }
3308
+ if (__ANDROID__) {
3309
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getTransform(this.nativeView);
3310
+ }
3311
+ if (__APPLE__) {
3312
+ return this.nativeView.style.transform;
3313
+ }
3314
+ return '';
3315
+ }
3316
+ set transform(value) {
3317
+ this.setPseudoCssStringValue('transform', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTransform(this.nativeView, value), () => (this.nativeView.style.transform = value));
3318
+ }
3319
+ get verticalAlign() {
3320
+ const isPercent = getUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET) == 1;
3321
+ const value = getFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET);
3322
+ if (isPercent) {
2759
3323
  return `${value * 100}%`;
2760
3324
  }
2761
3325
  if (value > 0) {
@@ -2786,41 +3350,49 @@ export class Style {
2786
3350
  set verticalAlign(value) {
2787
3351
  switch (value) {
2788
3352
  case 'baseline':
3353
+ this.prepareMut();
2789
3354
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2790
3355
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2791
3356
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
2792
3357
  break;
2793
3358
  case 'top':
3359
+ this.prepareMut();
2794
3360
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2795
3361
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2796
3362
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 1);
2797
3363
  break;
2798
3364
  case 'text-top':
3365
+ this.prepareMut();
2799
3366
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2800
3367
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2801
3368
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 2);
2802
3369
  break;
2803
3370
  case 'middle':
3371
+ this.prepareMut();
2804
3372
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2805
3373
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2806
3374
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 3);
2807
3375
  break;
2808
3376
  case 'bottom':
3377
+ this.prepareMut();
2809
3378
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2810
3379
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2811
3380
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 4);
2812
3381
  break;
2813
3382
  case 'text-bottom':
3383
+ this.prepareMut();
2814
3384
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2815
3385
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2816
3386
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 5);
2817
3387
  break;
2818
3388
  case 'sub':
3389
+ this.prepareMut();
2819
3390
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2820
3391
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2821
3392
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 6);
2822
3393
  break;
2823
3394
  case 'super':
3395
+ this.prepareMut();
2824
3396
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2825
3397
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, 0);
2826
3398
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 7);
@@ -2828,6 +3400,7 @@ export class Style {
2828
3400
  default: {
2829
3401
  switch (typeof value) {
2830
3402
  case 'number':
3403
+ this.prepareMut();
2831
3404
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2832
3405
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, value * layout.getDisplayDensity());
2833
3406
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
@@ -2839,16 +3412,19 @@ export class Style {
2839
3412
  if (typeof parsed === 'object' && parsed !== null && 'unit' in parsed) {
2840
3413
  switch (parsed.unit) {
2841
3414
  case '%':
3415
+ this.prepareMut();
2842
3416
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 1);
2843
3417
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, parsed.value);
2844
3418
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
2845
3419
  break;
2846
3420
  case 'px':
3421
+ this.prepareMut();
2847
3422
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2848
3423
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, parsed.value);
2849
3424
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
2850
3425
  break;
2851
3426
  case 'dip':
3427
+ this.prepareMut();
2852
3428
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2853
3429
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, parsed.value * layout.getDisplayDensity());
2854
3430
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
@@ -2863,16 +3439,19 @@ export class Style {
2863
3439
  if (value !== null && 'unit' in value) {
2864
3440
  switch (value.unit) {
2865
3441
  case '%':
3442
+ this.prepareMut();
2866
3443
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 1);
2867
3444
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, value.value);
2868
3445
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
2869
3446
  break;
2870
3447
  case 'px':
3448
+ this.prepareMut();
2871
3449
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2872
3450
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, value.value);
2873
3451
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
2874
3452
  break;
2875
3453
  case 'dip':
3454
+ this.prepareMut();
2876
3455
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_IS_PERCENT_OFFSET, 0);
2877
3456
  setFloat32(this.style_view, StyleKeys.VERTICAL_ALIGN_OFFSET_OFFSET, value.value * layout.getDisplayDensity());
2878
3457
  setUint8(this.style_view, StyleKeys.VERTICAL_ALIGN_ENUM_OFFSET, 0);
@@ -2883,7 +3462,7 @@ export class Style {
2883
3462
  }
2884
3463
  }
2885
3464
  }
2886
- this.setOrAppendTextState(TextStateKeys.VERTICAL_ALIGN);
3465
+ this.commitState(StateKeys.VERTICAL_ALIGN);
2887
3466
  }
2888
3467
  get textShadow() {
2889
3468
  if (!this.nativeView) {
@@ -2898,15 +3477,597 @@ export class Style {
2898
3477
  return '';
2899
3478
  }
2900
3479
  set textShadow(value) {
3480
+ this.setPseudoCssStringValue('text-shadow', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setTextShadow(this.nativeView, value), () => (this.nativeView.style.textShadow = value));
3481
+ }
3482
+ get zIndex() {
3483
+ return getInt32(this.style_view, StyleKeys.Z_INDEX);
3484
+ }
3485
+ set zIndex(value) {
3486
+ this.prepareMut();
3487
+ setInt32(this.style_view, StyleKeys.Z_INDEX, value);
3488
+ this.commitState(StateKeys.Z_INDEX);
3489
+ }
3490
+ get float() {
3491
+ switch (getInt8(this.style_view, StyleKeys.FLOAT)) {
3492
+ case 0 /* Float.None */:
3493
+ return 'none';
3494
+ case 1 /* Float.Left */:
3495
+ return 'left';
3496
+ case 2 /* Float.Right */:
3497
+ return 'right';
3498
+ }
3499
+ return 'none';
3500
+ }
3501
+ set float(value) {
3502
+ const current = getInt8(this.style_view, StyleKeys.FLOAT);
3503
+ let enumVal;
3504
+ switch (value) {
3505
+ case 'none':
3506
+ enumVal = 0 /* Float.None */;
3507
+ break;
3508
+ case 'left':
3509
+ enumVal = 1 /* Float.Left */;
3510
+ break;
3511
+ case 'right':
3512
+ enumVal = 2 /* Float.Right */;
3513
+ break;
3514
+ default:
3515
+ enumVal = 0 /* Float.None */;
3516
+ }
3517
+ if (current === enumVal) {
3518
+ return;
3519
+ }
3520
+ this.prepareMut();
3521
+ setInt8(this.style_view, StyleKeys.FLOAT, enumVal);
3522
+ this.commitState(StateKeys.FLOAT);
3523
+ }
3524
+ get clear() {
3525
+ switch (getInt8(this.style_view, StyleKeys.CLEAR)) {
3526
+ case 0 /* Clear.None */:
3527
+ return 'none';
3528
+ case 1 /* Clear.Left */:
3529
+ return 'left';
3530
+ case 2 /* Clear.Right */:
3531
+ return 'right';
3532
+ case 3 /* Clear.Both */:
3533
+ return 'both';
3534
+ }
3535
+ return 'none';
3536
+ }
3537
+ set clear(value) {
3538
+ switch (value) {
3539
+ case 'none':
3540
+ this.prepareMut();
3541
+ setInt8(this.style_view, StyleKeys.CLEAR, 0 /* Clear.None */);
3542
+ break;
3543
+ case 'left':
3544
+ this.prepareMut();
3545
+ setInt8(this.style_view, StyleKeys.CLEAR, 1 /* Clear.Left */);
3546
+ break;
3547
+ case 'right':
3548
+ this.prepareMut();
3549
+ setInt8(this.style_view, StyleKeys.CLEAR, 2 /* Clear.Right */);
3550
+ break;
3551
+ case 'both':
3552
+ this.prepareMut();
3553
+ setInt8(this.style_view, StyleKeys.CLEAR, 3 /* Clear.Both */);
3554
+ break;
3555
+ }
3556
+ this.commitState(StateKeys.CLEAR);
3557
+ }
3558
+ set cornerShape(value) {
3559
+ this.setPseudoCssStringValue('corner-shape', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShape(this.nativeView, value), () => (this.nativeView.style.cornerShape = value));
3560
+ }
3561
+ get cornerShape() {
2901
3562
  if (!this.nativeView) {
3563
+ return '';
3564
+ }
3565
+ if (__ANDROID__) {
3566
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShape(this.nativeView);
3567
+ }
3568
+ if (__APPLE__) {
3569
+ return this.nativeView.style.cornerShape;
3570
+ }
3571
+ return '';
3572
+ }
3573
+ get cornerShapeTopLeft() {
3574
+ if (!this.nativeView)
3575
+ return '';
3576
+ if (__ANDROID__) {
3577
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeTopLeft(this.nativeView);
3578
+ }
3579
+ if (__APPLE__) {
3580
+ return this.nativeView.style.cornerShapeTopLeft;
3581
+ }
3582
+ return '';
3583
+ }
3584
+ set cornerShapeTopLeft(value) {
3585
+ this.setPseudoCssStringValue('corner-shape-top-left', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeTopLeft(this.nativeView, value), () => (this.nativeView.style.cornerShapeTopLeft = value));
3586
+ }
3587
+ get cornerShapeTopRight() {
3588
+ if (!this.nativeView)
3589
+ return '';
3590
+ if (__ANDROID__) {
3591
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeTopRight(this.nativeView);
3592
+ }
3593
+ if (__APPLE__) {
3594
+ return this.nativeView.style.cornerShapeTopRight;
3595
+ }
3596
+ return '';
3597
+ }
3598
+ set cornerShapeTopRight(value) {
3599
+ this.setPseudoCssStringValue('corner-shape-top-right', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeTopRight(this.nativeView, value), () => (this.nativeView.style.cornerShapeTopRight = value));
3600
+ }
3601
+ get cornerShapeBottomRight() {
3602
+ if (!this.nativeView)
3603
+ return '';
3604
+ if (__ANDROID__) {
3605
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeBottomRight(this.nativeView);
3606
+ }
3607
+ if (__APPLE__) {
3608
+ return this.nativeView.style.cornerShapeBottomRight;
3609
+ }
3610
+ return '';
3611
+ }
3612
+ set cornerShapeBottomRight(value) {
3613
+ this.setPseudoCssStringValue('corner-shape-bottom-right', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeBottomRight(this.nativeView, value), () => (this.nativeView.style.cornerShapeBottomRight = value));
3614
+ }
3615
+ get cornerShapeBottomLeft() {
3616
+ if (!this.nativeView)
3617
+ return '';
3618
+ if (__ANDROID__) {
3619
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getCornerShapeBottomLeft(this.nativeView);
3620
+ }
3621
+ if (__APPLE__) {
3622
+ return this.nativeView.style.cornerShapeBottomLeft;
3623
+ }
3624
+ return '';
3625
+ }
3626
+ set cornerShapeBottomLeft(value) {
3627
+ this.setPseudoCssStringValue('corner-shape-bottom-left', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setCornerShapeBottomLeft(this.nativeView, value), () => (this.nativeView.style.cornerShapeBottomLeft = value));
3628
+ }
3629
+ get objectPosition() {
3630
+ if (!this.style_view)
3631
+ return '50% 50%';
3632
+ const state = getUint8(this.style_view, StyleKeys.OBJECT_POSITION_STATE);
3633
+ if (!state)
3634
+ return '50% 50%';
3635
+ const xType = getUint8(this.style_view, StyleKeys.OBJECT_POSITION_X_TYPE);
3636
+ const yType = getUint8(this.style_view, StyleKeys.OBJECT_POSITION_Y_TYPE);
3637
+ const xVal = getFloat32(this.style_view, StyleKeys.OBJECT_POSITION_X_VALUE);
3638
+ const yVal = getFloat32(this.style_view, StyleKeys.OBJECT_POSITION_Y_VALUE);
3639
+ const x = xType === 1 ? `${xVal}%` : `${xVal}px`;
3640
+ const y = yType === 1 ? `${yVal}%` : `${yVal}px`;
3641
+ return `${x} ${y}`;
3642
+ }
3643
+ set objectPosition(value) {
3644
+ if (!this.style_view)
3645
+ return;
3646
+ const parsed = parseObjectPosition(value);
3647
+ if (!parsed)
3648
+ return;
3649
+ this.prepareMut();
3650
+ setUint8(this.style_view, StyleKeys.OBJECT_POSITION_X_TYPE, parsed.xType);
3651
+ setUint8(this.style_view, StyleKeys.OBJECT_POSITION_Y_TYPE, parsed.yType);
3652
+ setFloat32(this.style_view, StyleKeys.OBJECT_POSITION_X_VALUE, parsed.xVal);
3653
+ setFloat32(this.style_view, StyleKeys.OBJECT_POSITION_Y_VALUE, parsed.yVal);
3654
+ setUint8(this.style_view, StyleKeys.OBJECT_POSITION_STATE, 1);
3655
+ this.commitState(StateKeys.OBJECT_POSITION);
3656
+ }
3657
+ set 'object-position'(value) {
3658
+ this.objectPosition = value;
3659
+ }
3660
+ get 'object-position'() {
3661
+ return this.objectPosition;
3662
+ }
3663
+ get borderLeftStyle() {
3664
+ return borderStyleFromEnum(getInt8(this.style_view, StyleKeys.BORDER_LEFT_STYLE));
3665
+ }
3666
+ set borderLeftStyle(value) {
3667
+ const v = borderStyleToEnum(value);
3668
+ if (v === -1)
3669
+ return;
3670
+ this.prepareMut();
3671
+ setInt8(this.style_view, StyleKeys.BORDER_LEFT_STYLE, v);
3672
+ this.commitState(StateKeys.BORDER_STYLE);
3673
+ }
3674
+ get borderRightStyle() {
3675
+ return borderStyleFromEnum(getInt8(this.style_view, StyleKeys.BORDER_RIGHT_STYLE));
3676
+ }
3677
+ set borderRightStyle(value) {
3678
+ const v = borderStyleToEnum(value);
3679
+ if (v === -1)
3680
+ return;
3681
+ this.prepareMut();
3682
+ setInt8(this.style_view, StyleKeys.BORDER_RIGHT_STYLE, v);
3683
+ this.commitState(StateKeys.BORDER_STYLE);
3684
+ }
3685
+ get borderTopStyle() {
3686
+ return borderStyleFromEnum(getInt8(this.style_view, StyleKeys.BORDER_TOP_STYLE));
3687
+ }
3688
+ set borderTopStyle(value) {
3689
+ const v = borderStyleToEnum(value);
3690
+ if (v === -1)
3691
+ return;
3692
+ this.prepareMut();
3693
+ setInt8(this.style_view, StyleKeys.BORDER_TOP_STYLE, v);
3694
+ this.commitState(StateKeys.BORDER_STYLE);
3695
+ }
3696
+ get borderBottomStyle() {
3697
+ return borderStyleFromEnum(getInt8(this.style_view, StyleKeys.BORDER_BOTTOM_STYLE));
3698
+ }
3699
+ set borderBottomStyle(value) {
3700
+ const v = borderStyleToEnum(value);
3701
+ if (v === -1)
3702
+ return;
3703
+ this.prepareMut();
3704
+ setInt8(this.style_view, StyleKeys.BORDER_BOTTOM_STYLE, v);
3705
+ this.commitState(StateKeys.BORDER_STYLE);
3706
+ }
3707
+ get borderStyle() {
3708
+ const l = this.borderLeftStyle;
3709
+ const r = this.borderRightStyle;
3710
+ const t = this.borderTopStyle;
3711
+ const b = this.borderBottomStyle;
3712
+ if (l === r && r === t && t === b)
3713
+ return l;
3714
+ if (t === b && l === r)
3715
+ return `${t} ${l}`;
3716
+ return `${t} ${r} ${b} ${l}`;
3717
+ }
3718
+ set borderStyle(value) {
3719
+ const parts = value.trim().split(/\s+/);
3720
+ let t, r, b, l;
3721
+ switch (parts.length) {
3722
+ case 1:
3723
+ t = r = b = l = parts[0];
3724
+ break;
3725
+ case 2:
3726
+ t = b = parts[0];
3727
+ r = l = parts[1];
3728
+ break;
3729
+ case 3:
3730
+ t = parts[0];
3731
+ r = l = parts[1];
3732
+ b = parts[2];
3733
+ break;
3734
+ case 4:
3735
+ t = parts[0];
3736
+ r = parts[1];
3737
+ b = parts[2];
3738
+ l = parts[3];
3739
+ break;
3740
+ default:
3741
+ return;
3742
+ }
3743
+ const te = borderStyleToEnum(t);
3744
+ const re = borderStyleToEnum(r);
3745
+ const be = borderStyleToEnum(b);
3746
+ const le = borderStyleToEnum(l);
3747
+ if (te === -1 || re === -1 || be === -1 || le === -1)
3748
+ return;
3749
+ this.prepareMut();
3750
+ setInt8(this.style_view, StyleKeys.BORDER_TOP_STYLE, te);
3751
+ setInt8(this.style_view, StyleKeys.BORDER_RIGHT_STYLE, re);
3752
+ setInt8(this.style_view, StyleKeys.BORDER_BOTTOM_STYLE, be);
3753
+ setInt8(this.style_view, StyleKeys.BORDER_LEFT_STYLE, le);
3754
+ this.commitState(StateKeys.BORDER_STYLE);
3755
+ }
3756
+ set 'border-style'(value) {
3757
+ this.borderStyle = value;
3758
+ }
3759
+ get 'border-style'() {
3760
+ return this.borderStyle;
3761
+ }
3762
+ get borderImage() {
3763
+ if (!this.nativeView)
3764
+ return '';
3765
+ if (__ANDROID__) {
3766
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBorderImage(this.nativeView);
3767
+ }
3768
+ if (__APPLE__) {
3769
+ return this.nativeView.style.borderImage;
3770
+ }
3771
+ return '';
3772
+ }
3773
+ set borderImage(value) {
3774
+ this.setPseudoCssStringValue('border-image', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBorderImage(this.nativeView, value), () => (this.nativeView.style.borderImage = value));
3775
+ }
3776
+ set 'border-image'(value) {
3777
+ this.borderImage = value;
3778
+ }
3779
+ get 'border-image'() {
3780
+ return this.borderImage;
3781
+ }
3782
+ get fontStretch() {
3783
+ if (!this.style_view)
3784
+ return 'normal';
3785
+ const state = getUint8(this.style_view, StyleKeys.FONT_STRETCH_STATE);
3786
+ if (!state)
3787
+ return 'normal';
3788
+ const pct = getInt32(this.style_view, StyleKeys.FONT_STRETCH);
3789
+ return fontStretchFromValue(pct);
3790
+ }
3791
+ set fontStretch(value) {
3792
+ if (!this.style_view)
3793
+ return;
3794
+ const pct = fontStretchToValue(value);
3795
+ if (pct === -1)
3796
+ return;
3797
+ this.prepareMut();
3798
+ setInt32(this.style_view, StyleKeys.FONT_STRETCH, pct);
3799
+ setUint8(this.style_view, StyleKeys.FONT_STRETCH_STATE, 1);
3800
+ this.commitState(StateKeys.FONT_STRETCH);
3801
+ }
3802
+ set 'font-stretch'(value) {
3803
+ this.fontStretch = value;
3804
+ }
3805
+ get 'font-stretch'() {
3806
+ return this.fontStretch;
3807
+ }
3808
+ get fontFeatureSettings() {
3809
+ if (!this.nativeView)
3810
+ return 'normal';
3811
+ if (__ANDROID__) {
3812
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getFontFeatureSettings(this.nativeView);
3813
+ }
3814
+ if (__APPLE__) {
3815
+ return this.nativeView.style.fontFeatureSettings;
3816
+ }
3817
+ return 'normal';
3818
+ }
3819
+ set fontFeatureSettings(value) {
3820
+ this.setPseudoCssStringValue('font-feature-settings', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setFontFeatureSettings(this.nativeView, value), () => (this.nativeView.style.fontFeatureSettings = value));
3821
+ }
3822
+ set 'font-feature-settings'(value) {
3823
+ this.fontFeatureSettings = value;
3824
+ }
3825
+ get 'font-feature-settings'() {
3826
+ return this.fontFeatureSettings;
3827
+ }
3828
+ get wordSpacing() {
3829
+ if (!this.style_view)
3830
+ return 'normal';
3831
+ const state = getUint8(this.style_view, StyleKeys.WORD_SPACING_STATE);
3832
+ if (!state)
3833
+ return 'normal';
3834
+ const type = getUint8(this.style_view, StyleKeys.WORD_SPACING_TYPE);
3835
+ if (type === 2)
3836
+ return 'normal';
3837
+ const value = getFloat32(this.style_view, StyleKeys.WORD_SPACING);
3838
+ return type === 1 ? `${value}%` : `${value}px`;
3839
+ }
3840
+ set wordSpacing(value) {
3841
+ if (!this.style_view)
2902
3842
  return;
3843
+ this.prepareMut();
3844
+ if (value === 'normal') {
3845
+ setUint8(this.style_view, StyleKeys.WORD_SPACING_TYPE, 2);
3846
+ setFloat32(this.style_view, StyleKeys.WORD_SPACING, 0);
3847
+ }
3848
+ else if (typeof value === 'number') {
3849
+ setUint8(this.style_view, StyleKeys.WORD_SPACING_TYPE, 0);
3850
+ setFloat32(this.style_view, StyleKeys.WORD_SPACING, layout.toDevicePixels(value));
3851
+ }
3852
+ else {
3853
+ const trimmed = value.trim();
3854
+ if (trimmed === 'normal') {
3855
+ setUint8(this.style_view, StyleKeys.WORD_SPACING_TYPE, 2);
3856
+ setFloat32(this.style_view, StyleKeys.WORD_SPACING, 0);
3857
+ }
3858
+ else if (trimmed.endsWith('%')) {
3859
+ setUint8(this.style_view, StyleKeys.WORD_SPACING_TYPE, 1);
3860
+ setFloat32(this.style_view, StyleKeys.WORD_SPACING, parseFloat(trimmed));
3861
+ }
3862
+ else {
3863
+ setUint8(this.style_view, StyleKeys.WORD_SPACING_TYPE, 0);
3864
+ setFloat32(this.style_view, StyleKeys.WORD_SPACING, layout.toDevicePixels(parseFloat(trimmed)));
3865
+ }
3866
+ }
3867
+ setUint8(this.style_view, StyleKeys.WORD_SPACING_STATE, 1);
3868
+ this.commitState(StateKeys.WORD_SPACING);
3869
+ }
3870
+ set 'word-spacing'(value) {
3871
+ this.wordSpacing = value;
3872
+ }
3873
+ get 'word-spacing'() {
3874
+ return this.wordSpacing;
3875
+ }
3876
+ get hyphens() {
3877
+ if (!this.style_view)
3878
+ return 'manual';
3879
+ const state = getUint8(this.style_view, StyleKeys.HYPHENS_STATE);
3880
+ if (!state)
3881
+ return 'manual';
3882
+ switch (getUint8(this.style_view, StyleKeys.HYPHENS)) {
3883
+ case 0:
3884
+ return 'manual';
3885
+ case 1:
3886
+ return 'none';
3887
+ case 2:
3888
+ return 'auto';
3889
+ default:
3890
+ return 'manual';
3891
+ }
3892
+ }
3893
+ set hyphens(value) {
3894
+ let v = -1;
3895
+ switch (value) {
3896
+ case 'manual':
3897
+ v = 0;
3898
+ break;
3899
+ case 'none':
3900
+ v = 1;
3901
+ break;
3902
+ case 'auto':
3903
+ v = 2;
3904
+ break;
2903
3905
  }
3906
+ if (v === -1)
3907
+ return;
3908
+ this.prepareMut();
3909
+ setUint8(this.style_view, StyleKeys.HYPHENS, v);
3910
+ setUint8(this.style_view, StyleKeys.HYPHENS_STATE, 1);
3911
+ this.commitState(StateKeys.HYPHENS);
3912
+ }
3913
+ get backdropFilter() {
3914
+ if (!this.nativeView)
3915
+ return '';
2904
3916
  if (__ANDROID__) {
2905
- org.nativescript.mason.masonkit.NodeHelper.getShared().setTextShadow(this.nativeView, value);
3917
+ return org.nativescript.mason.masonkit.NodeHelper.getShared().getBackdropFilter(this.nativeView);
2906
3918
  }
2907
3919
  if (__APPLE__) {
2908
- this.nativeView.style.textShadow = value;
3920
+ return this.nativeView.style.backdropFilter;
3921
+ }
3922
+ return '';
3923
+ }
3924
+ set backdropFilter(value) {
3925
+ this.setPseudoCssStringValue('backdrop-filter', value, () => org.nativescript.mason.masonkit.NodeHelper.getShared().setBackdropFilter(this.nativeView, value), () => (this.nativeView.style.backdropFilter = value));
3926
+ }
3927
+ set 'backdrop-filter'(value) {
3928
+ this.backdropFilter = value;
3929
+ }
3930
+ get 'backdrop-filter'() {
3931
+ return this.backdropFilter;
3932
+ }
3933
+ get writingMode() {
3934
+ if (!this.style_view)
3935
+ return 'horizontal-tb';
3936
+ const state = getUint8(this.style_view, StyleKeys.WRITING_MODE_STATE);
3937
+ if (!state)
3938
+ return 'horizontal-tb';
3939
+ switch (getUint8(this.style_view, StyleKeys.WRITING_MODE)) {
3940
+ case 0:
3941
+ return 'horizontal-tb';
3942
+ case 1:
3943
+ return 'vertical-rl';
3944
+ case 2:
3945
+ return 'vertical-lr';
3946
+ default:
3947
+ return 'horizontal-tb';
3948
+ }
3949
+ }
3950
+ set writingMode(value) {
3951
+ let v = -1;
3952
+ switch (value) {
3953
+ case 'horizontal-tb':
3954
+ v = 0;
3955
+ break;
3956
+ case 'vertical-rl':
3957
+ v = 1;
3958
+ break;
3959
+ case 'vertical-lr':
3960
+ v = 2;
3961
+ break;
3962
+ }
3963
+ if (v === -1)
3964
+ return;
3965
+ this.prepareMut();
3966
+ setUint8(this.style_view, StyleKeys.WRITING_MODE, v);
3967
+ setUint8(this.style_view, StyleKeys.WRITING_MODE_STATE, 1);
3968
+ this.commitState(StateKeys.WRITING_MODE);
3969
+ }
3970
+ set 'writing-mode'(value) {
3971
+ this.writingMode = value;
3972
+ }
3973
+ get 'writing-mode'() {
3974
+ return this.writingMode;
3975
+ }
3976
+ get unicodeBidi() {
3977
+ if (!this.style_view)
3978
+ return 'normal';
3979
+ const state = getUint8(this.style_view, StyleKeys.UNICODE_BIDI_STATE);
3980
+ if (!state)
3981
+ return 'normal';
3982
+ switch (getUint8(this.style_view, StyleKeys.UNICODE_BIDI)) {
3983
+ case 0:
3984
+ return 'normal';
3985
+ case 1:
3986
+ return 'embed';
3987
+ case 2:
3988
+ return 'bidi-override';
3989
+ case 3:
3990
+ return 'isolate';
3991
+ case 4:
3992
+ return 'isolate-override';
3993
+ case 5:
3994
+ return 'plaintext';
3995
+ default:
3996
+ return 'normal';
3997
+ }
3998
+ }
3999
+ set unicodeBidi(value) {
4000
+ let v = -1;
4001
+ switch (value) {
4002
+ case 'normal':
4003
+ v = 0;
4004
+ break;
4005
+ case 'embed':
4006
+ v = 1;
4007
+ break;
4008
+ case 'bidi-override':
4009
+ v = 2;
4010
+ break;
4011
+ case 'isolate':
4012
+ v = 3;
4013
+ break;
4014
+ case 'isolate-override':
4015
+ v = 4;
4016
+ break;
4017
+ case 'plaintext':
4018
+ v = 5;
4019
+ break;
4020
+ }
4021
+ if (v === -1)
4022
+ return;
4023
+ this.prepareMut();
4024
+ setUint8(this.style_view, StyleKeys.UNICODE_BIDI, v);
4025
+ setUint8(this.style_view, StyleKeys.UNICODE_BIDI_STATE, 1);
4026
+ this.commitState(StateKeys.UNICODE_BIDI);
4027
+ }
4028
+ set 'unicode-bidi'(value) {
4029
+ this.unicodeBidi = value;
4030
+ }
4031
+ get 'unicode-bidi'() {
4032
+ return this.unicodeBidi;
4033
+ }
4034
+ get caretColor() {
4035
+ if (!this.style_view)
4036
+ return 'auto';
4037
+ const state = getUint8(this.style_view, StyleKeys.CARET_COLOR_STATE);
4038
+ if (!state)
4039
+ return 'auto';
4040
+ const argb = getUint32(this.style_view, StyleKeys.CARET_COLOR);
4041
+ if (argb === 0)
4042
+ return 'auto';
4043
+ const a = (argb >>> 24) & 0xff;
4044
+ const r = (argb >>> 16) & 0xff;
4045
+ const g = (argb >>> 8) & 0xff;
4046
+ const b = argb & 0xff;
4047
+ return a === 255 ? `rgb(${r}, ${g}, ${b})` : `rgba(${r}, ${g}, ${b}, ${(a / 255).toFixed(2)})`;
4048
+ }
4049
+ set caretColor(value) {
4050
+ if (!this.style_view)
4051
+ return;
4052
+ this.prepareMut();
4053
+ if (value === 'auto') {
4054
+ setUint32(this.style_view, StyleKeys.CARET_COLOR, 0);
4055
+ setUint8(this.style_view, StyleKeys.CARET_COLOR_STATE, 1);
2909
4056
  }
4057
+ else {
4058
+ const normalized = normalizeColorValue(value);
4059
+ if (normalized == null)
4060
+ return;
4061
+ setUint32(this.style_view, StyleKeys.CARET_COLOR, normalized);
4062
+ setUint8(this.style_view, StyleKeys.CARET_COLOR_STATE, 1);
4063
+ }
4064
+ this.commitState(StateKeys.CARET_COLOR);
4065
+ }
4066
+ set 'caret-color'(value) {
4067
+ this.caretColor = value;
4068
+ }
4069
+ get 'caret-color'() {
4070
+ return this.caretColor;
2910
4071
  }
2911
4072
  toJSON() {
2912
4073
  return {
@@ -2958,6 +4119,16 @@ export class Style {
2958
4119
  gridTemplateRows: this.gridTemplateRows,
2959
4120
  gridTemplateColumns: this.gridTemplateColumns,
2960
4121
  filter: this.filter,
4122
+ zIndex: this.zIndex,
4123
+ backgroundColor: this.backgroundColor,
4124
+ objectPosition: this.objectPosition,
4125
+ borderStyle: this.borderStyle,
4126
+ writingMode: this.writingMode,
4127
+ unicodeBidi: this.unicodeBidi,
4128
+ hyphens: this.hyphens,
4129
+ caretColor: this.caretColor,
4130
+ wordSpacing: this.wordSpacing,
4131
+ fontStretch: this.fontStretch,
2961
4132
  };
2962
4133
  }
2963
4134
  }