@tamagui/web 3.0.0-beta.831.1 → 3.0.0-beta.889.1

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 (474) hide show
  1. package/dist/cjs/createComponent.cjs +12 -1
  2. package/dist/cjs/createComponent.native.cjs +12 -1
  3. package/dist/cjs/createComponent.native.js +12 -1
  4. package/dist/cjs/createComponent.native.js.map +1 -1
  5. package/dist/cjs/createStyledHOC.cjs +1 -1
  6. package/dist/cjs/createStyledHOC.native.cjs +1 -1
  7. package/dist/cjs/createStyledHOC.native.js +1 -1
  8. package/dist/cjs/createStyledHOC.native.js.map +1 -1
  9. package/dist/cjs/createVariable.cjs +0 -10
  10. package/dist/cjs/createVariable.native.cjs +0 -10
  11. package/dist/cjs/createVariable.native.js +0 -10
  12. package/dist/cjs/createVariable.native.js.map +1 -1
  13. package/dist/cjs/helpers/borderComponents.cjs +62 -0
  14. package/dist/cjs/helpers/borderComponents.native.cjs +82 -0
  15. package/dist/cjs/helpers/borderComponents.native.js +84 -0
  16. package/dist/cjs/helpers/borderComponents.native.js.map +1 -0
  17. package/dist/cjs/helpers/createDesignSystem.cjs +0 -2
  18. package/dist/cjs/helpers/createStyledContext.cjs +10 -18
  19. package/dist/cjs/helpers/createStyledContext.native.cjs +14 -18
  20. package/dist/cjs/helpers/createStyledContext.native.js +14 -18
  21. package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
  22. package/dist/cjs/helpers/formatDiagnostic.cjs +6 -6
  23. package/dist/cjs/helpers/formatDiagnostic.native.cjs +6 -6
  24. package/dist/cjs/helpers/formatDiagnostic.native.js +6 -6
  25. package/dist/cjs/helpers/formatDiagnostic.native.js.map +1 -1
  26. package/dist/cjs/helpers/getCSSStylesAtomic.cjs +128 -109
  27. package/dist/cjs/helpers/getCSSStylesAtomic.native.cjs +11 -3
  28. package/dist/cjs/helpers/getCSSStylesAtomic.native.js +11 -3
  29. package/dist/cjs/helpers/getCSSStylesAtomic.native.js.map +1 -1
  30. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.cjs +13 -1
  31. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.cjs +15 -1
  32. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js +15 -1
  33. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
  34. package/dist/cjs/helpers/getDynamicVal.cjs +5 -1
  35. package/dist/cjs/helpers/getDynamicVal.native.cjs +5 -1
  36. package/dist/cjs/helpers/getDynamicVal.native.js +5 -1
  37. package/dist/cjs/helpers/getDynamicVal.native.js.map +1 -1
  38. package/dist/cjs/helpers/getSplitStyles.cjs +1042 -1715
  39. package/dist/cjs/helpers/getSplitStyles.native.cjs +1081 -1887
  40. package/dist/cjs/helpers/getSplitStyles.native.js +1081 -1887
  41. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  42. package/dist/cjs/helpers/grammarConfig.cjs +163 -1
  43. package/dist/cjs/helpers/grammarConfig.native.cjs +186 -1
  44. package/dist/cjs/helpers/grammarConfig.native.js +186 -1
  45. package/dist/cjs/helpers/grammarConfig.native.js.map +1 -1
  46. package/dist/cjs/helpers/insertStyleRule.cjs +5 -1
  47. package/dist/cjs/helpers/insertStyleRule.native.cjs +7 -1
  48. package/dist/cjs/helpers/insertStyleRule.native.js +7 -1
  49. package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
  50. package/dist/cjs/helpers/log.cjs +9 -8
  51. package/dist/cjs/helpers/log.native.cjs +9 -8
  52. package/dist/cjs/helpers/log.native.js +9 -8
  53. package/dist/cjs/helpers/log.native.js.map +1 -1
  54. package/dist/cjs/helpers/mergeVariants.cjs +44 -13
  55. package/dist/cjs/helpers/mergeVariants.native.cjs +79 -14
  56. package/dist/cjs/helpers/mergeVariants.native.js +79 -14
  57. package/dist/cjs/helpers/mergeVariants.native.js.map +1 -1
  58. package/dist/cjs/helpers/nativeOnlyProps.cjs +0 -1
  59. package/dist/cjs/helpers/nativeOnlyProps.native.cjs +0 -1
  60. package/dist/cjs/helpers/nativeOnlyProps.native.js +0 -1
  61. package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -1
  62. package/dist/cjs/helpers/nativeStyleEngine.cjs +34 -14
  63. package/dist/cjs/helpers/nativeStyleEngine.native.cjs +36 -14
  64. package/dist/cjs/helpers/nativeStyleEngine.native.js +36 -14
  65. package/dist/cjs/helpers/nativeStyleEngine.native.js.map +1 -1
  66. package/dist/cjs/helpers/normalizeValueWithProperty.cjs +7 -8
  67. package/dist/cjs/helpers/normalizeValueWithProperty.native.cjs +9 -8
  68. package/dist/cjs/helpers/normalizeValueWithProperty.native.js +9 -8
  69. package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
  70. package/dist/cjs/helpers/parseBorderShorthand.native.cjs +25 -56
  71. package/dist/cjs/helpers/parseBorderShorthand.native.js +25 -56
  72. package/dist/cjs/helpers/parseBorderShorthand.native.js.map +1 -1
  73. package/dist/cjs/helpers/parseOutlineShorthand.native.cjs +9 -49
  74. package/dist/cjs/helpers/parseOutlineShorthand.native.js +9 -49
  75. package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -1
  76. package/dist/cjs/helpers/resolveSafeArea.cjs +35 -100
  77. package/dist/cjs/helpers/resolveVariantStyle.cjs +57 -0
  78. package/dist/cjs/helpers/resolveVariantStyle.native.cjs +67 -0
  79. package/dist/cjs/helpers/resolveVariantStyle.native.js +69 -0
  80. package/dist/cjs/helpers/resolveVariantStyle.native.js.map +1 -0
  81. package/dist/cjs/helpers/styleStaticConfig.cjs +1 -50
  82. package/dist/cjs/helpers/styleStaticConfig.native.cjs +1 -51
  83. package/dist/cjs/helpers/styleStaticConfig.native.js +1 -51
  84. package/dist/cjs/helpers/styleStaticConfig.native.js.map +1 -1
  85. package/dist/cjs/helpers/styleStaticConfigCore.cjs +107 -0
  86. package/dist/cjs/helpers/styleStaticConfigCore.native.cjs +127 -0
  87. package/dist/cjs/helpers/styleStaticConfigCore.native.js +129 -0
  88. package/dist/cjs/helpers/styleStaticConfigCore.native.js.map +1 -0
  89. package/dist/cjs/helpers/styledDynamic.cjs +160 -0
  90. package/dist/cjs/helpers/styledDynamic.native.cjs +195 -0
  91. package/dist/cjs/helpers/styledDynamic.native.js +197 -0
  92. package/dist/cjs/helpers/styledDynamic.native.js.map +1 -0
  93. package/dist/cjs/helpers/tokenCategories.cjs +15 -38
  94. package/dist/cjs/helpers/tokenCategories.native.cjs +15 -40
  95. package/dist/cjs/helpers/tokenCategories.native.js +15 -40
  96. package/dist/cjs/helpers/tokenCategories.native.js.map +1 -1
  97. package/dist/cjs/helpers/variableValue.cjs +17 -12
  98. package/dist/cjs/helpers/variableValue.native.cjs +46 -23
  99. package/dist/cjs/helpers/variableValue.native.js +46 -23
  100. package/dist/cjs/helpers/variableValue.native.js.map +1 -1
  101. package/dist/cjs/helpers/warnOnce.cjs +5 -4
  102. package/dist/cjs/helpers/warnOnce.native.cjs +6 -4
  103. package/dist/cjs/helpers/warnOnce.native.js +6 -4
  104. package/dist/cjs/helpers/warnOnce.native.js.map +1 -1
  105. package/dist/cjs/hooks/useAnimationDriver.cjs +2 -2
  106. package/dist/cjs/hooks/useAnimationDriver.native.cjs +2 -2
  107. package/dist/cjs/hooks/useAnimationDriver.native.js +2 -2
  108. package/dist/cjs/hooks/useAnimationDriver.native.js.map +1 -1
  109. package/dist/cjs/hooks/useComponentState.cjs +41 -82
  110. package/dist/cjs/hooks/useComponentState.native.cjs +45 -84
  111. package/dist/cjs/hooks/useComponentState.native.js +45 -84
  112. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  113. package/dist/cjs/hooks/useMedia.cjs +2 -2
  114. package/dist/cjs/hooks/useMedia.native.cjs +2 -2
  115. package/dist/cjs/hooks/useMedia.native.js +2 -2
  116. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  117. package/dist/cjs/{helpers/directStyleCSS.native.js → hooks/useStyle.cjs} +16 -8
  118. package/dist/cjs/{helpers/directStyleCSS.native.cjs → hooks/useStyle.native.cjs} +16 -4
  119. package/dist/cjs/hooks/useStyle.native.js +34 -0
  120. package/dist/cjs/hooks/useStyle.native.js.map +1 -0
  121. package/dist/cjs/hooks/useThemeState.cjs +25 -90
  122. package/dist/cjs/hooks/useThemeState.native.cjs +34 -94
  123. package/dist/cjs/hooks/useThemeState.native.js +34 -94
  124. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  125. package/dist/cjs/index.cjs +6 -3
  126. package/dist/cjs/index.native.cjs +6 -3
  127. package/dist/cjs/index.native.js +6 -3
  128. package/dist/cjs/index.native.js.map +1 -1
  129. package/dist/cjs/static-resolve.cjs +2 -2
  130. package/dist/cjs/static-resolve.native.cjs +2 -2
  131. package/dist/cjs/static-resolve.native.js +2 -2
  132. package/dist/cjs/static-resolve.native.js.map +1 -1
  133. package/dist/cjs/style.cjs +91 -0
  134. package/dist/cjs/style.native.cjs +98 -0
  135. package/dist/cjs/style.native.js +100 -0
  136. package/dist/cjs/style.native.js.map +1 -0
  137. package/dist/cjs/styled.cjs +11 -6
  138. package/dist/cjs/styled.native.cjs +11 -6
  139. package/dist/cjs/styled.native.js +11 -6
  140. package/dist/cjs/styled.native.js.map +1 -1
  141. package/dist/cjs/types.cjs +6 -4
  142. package/dist/cjs/types.native.cjs +6 -4
  143. package/dist/cjs/types.native.js +6 -4
  144. package/dist/cjs/types.native.js.map +1 -1
  145. package/dist/cjs/views/TamaguiProvider.cjs +1 -2
  146. package/dist/cjs/views/TamaguiProvider.native.cjs +1 -2
  147. package/dist/cjs/views/TamaguiProvider.native.js +1 -2
  148. package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
  149. package/dist/cjs/views/Text.cjs +17 -12
  150. package/dist/cjs/views/Text.native.cjs +1 -0
  151. package/dist/cjs/views/Text.native.js +1 -0
  152. package/dist/cjs/views/Text.native.js.map +1 -1
  153. package/dist/cjs/views/Theme.cjs +3 -3
  154. package/dist/cjs/views/Theme.native.cjs +3 -3
  155. package/dist/cjs/views/Theme.native.js +3 -3
  156. package/dist/cjs/views/Theme.native.js.map +1 -1
  157. package/dist/cjs/views/ThemeDebug.cjs +1 -4
  158. package/dist/esm/createComponent.mjs +12 -1
  159. package/dist/esm/createComponent.mjs.map +1 -1
  160. package/dist/esm/createComponent.native.js +12 -1
  161. package/dist/esm/createComponent.native.js.map +1 -1
  162. package/dist/esm/createStyledHOC.mjs +1 -1
  163. package/dist/esm/createStyledHOC.mjs.map +1 -1
  164. package/dist/esm/createStyledHOC.native.js +1 -1
  165. package/dist/esm/createStyledHOC.native.js.map +1 -1
  166. package/dist/esm/createVariable.mjs +1 -9
  167. package/dist/esm/createVariable.mjs.map +1 -1
  168. package/dist/esm/createVariable.native.js +1 -9
  169. package/dist/esm/createVariable.native.js.map +1 -1
  170. package/dist/esm/helpers/borderComponents.mjs +37 -0
  171. package/dist/esm/helpers/borderComponents.mjs.map +1 -0
  172. package/dist/esm/helpers/borderComponents.native.js +55 -0
  173. package/dist/esm/helpers/borderComponents.native.js.map +1 -0
  174. package/dist/esm/helpers/createDesignSystem.mjs +0 -2
  175. package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
  176. package/dist/esm/helpers/createStyledContext.mjs +10 -18
  177. package/dist/esm/helpers/createStyledContext.mjs.map +1 -1
  178. package/dist/esm/helpers/createStyledContext.native.js +14 -18
  179. package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
  180. package/dist/esm/helpers/formatDiagnostic.mjs +6 -6
  181. package/dist/esm/helpers/formatDiagnostic.mjs.map +1 -1
  182. package/dist/esm/helpers/formatDiagnostic.native.js +6 -6
  183. package/dist/esm/helpers/formatDiagnostic.native.js.map +1 -1
  184. package/dist/esm/helpers/getCSSStylesAtomic.mjs +126 -109
  185. package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
  186. package/dist/esm/helpers/getCSSStylesAtomic.native.js +7 -4
  187. package/dist/esm/helpers/getCSSStylesAtomic.native.js.map +1 -1
  188. package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs +8 -1
  189. package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs.map +1 -1
  190. package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js +10 -1
  191. package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
  192. package/dist/esm/helpers/getDynamicVal.mjs +5 -1
  193. package/dist/esm/helpers/getDynamicVal.mjs.map +1 -1
  194. package/dist/esm/helpers/getDynamicVal.native.js +5 -1
  195. package/dist/esm/helpers/getDynamicVal.native.js.map +1 -1
  196. package/dist/esm/helpers/getSplitStyles.mjs +1034 -1705
  197. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  198. package/dist/esm/helpers/getSplitStyles.native.js +1071 -1871
  199. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  200. package/dist/esm/helpers/grammarConfig.mjs +164 -2
  201. package/dist/esm/helpers/grammarConfig.mjs.map +1 -1
  202. package/dist/esm/helpers/grammarConfig.native.js +187 -2
  203. package/dist/esm/helpers/grammarConfig.native.js.map +1 -1
  204. package/dist/esm/helpers/insertStyleRule.mjs +5 -2
  205. package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
  206. package/dist/esm/helpers/insertStyleRule.native.js +7 -2
  207. package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
  208. package/dist/esm/helpers/log.mjs +9 -8
  209. package/dist/esm/helpers/log.mjs.map +1 -1
  210. package/dist/esm/helpers/log.native.js +9 -8
  211. package/dist/esm/helpers/log.native.js.map +1 -1
  212. package/dist/esm/helpers/mergeVariants.mjs +44 -13
  213. package/dist/esm/helpers/mergeVariants.mjs.map +1 -1
  214. package/dist/esm/helpers/mergeVariants.native.js +79 -14
  215. package/dist/esm/helpers/mergeVariants.native.js.map +1 -1
  216. package/dist/esm/helpers/nativeOnlyProps.mjs +0 -1
  217. package/dist/esm/helpers/nativeOnlyProps.mjs.map +1 -1
  218. package/dist/esm/helpers/nativeOnlyProps.native.js +0 -1
  219. package/dist/esm/helpers/nativeOnlyProps.native.js.map +1 -1
  220. package/dist/esm/helpers/nativeStyleEngine.mjs +34 -15
  221. package/dist/esm/helpers/nativeStyleEngine.mjs.map +1 -1
  222. package/dist/esm/helpers/nativeStyleEngine.native.js +36 -15
  223. package/dist/esm/helpers/nativeStyleEngine.native.js.map +1 -1
  224. package/dist/esm/helpers/normalizeValueWithProperty.mjs +7 -8
  225. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -1
  226. package/dist/esm/helpers/normalizeValueWithProperty.native.js +9 -8
  227. package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
  228. package/dist/esm/helpers/parseBorderShorthand.native.js +23 -56
  229. package/dist/esm/helpers/parseBorderShorthand.native.js.map +1 -1
  230. package/dist/esm/helpers/parseOutlineShorthand.native.js +10 -49
  231. package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -1
  232. package/dist/esm/helpers/resolveSafeArea.mjs +35 -97
  233. package/dist/esm/helpers/resolveSafeArea.mjs.map +1 -1
  234. package/dist/esm/helpers/resolveVariantStyle.mjs +38 -0
  235. package/dist/esm/helpers/resolveVariantStyle.mjs.map +1 -0
  236. package/dist/esm/helpers/resolveVariantStyle.native.js +46 -0
  237. package/dist/esm/helpers/resolveVariantStyle.native.js.map +1 -0
  238. package/dist/esm/helpers/styleStaticConfig.mjs +1 -50
  239. package/dist/esm/helpers/styleStaticConfig.mjs.map +1 -1
  240. package/dist/esm/helpers/styleStaticConfig.native.js +1 -51
  241. package/dist/esm/helpers/styleStaticConfig.native.js.map +1 -1
  242. package/dist/esm/helpers/styleStaticConfigCore.mjs +88 -0
  243. package/dist/esm/helpers/styleStaticConfigCore.mjs.map +1 -0
  244. package/dist/esm/helpers/styleStaticConfigCore.native.js +106 -0
  245. package/dist/esm/helpers/styleStaticConfigCore.native.js.map +1 -0
  246. package/dist/esm/helpers/styledDynamic.mjs +136 -0
  247. package/dist/esm/helpers/styledDynamic.mjs.map +1 -0
  248. package/dist/esm/helpers/styledDynamic.native.js +169 -0
  249. package/dist/esm/helpers/styledDynamic.native.js.map +1 -0
  250. package/dist/esm/helpers/tokenCategories.mjs +15 -36
  251. package/dist/esm/helpers/tokenCategories.mjs.map +1 -1
  252. package/dist/esm/helpers/tokenCategories.native.js +15 -38
  253. package/dist/esm/helpers/tokenCategories.native.js.map +1 -1
  254. package/dist/esm/helpers/variableValue.mjs +17 -12
  255. package/dist/esm/helpers/variableValue.mjs.map +1 -1
  256. package/dist/esm/helpers/variableValue.native.js +46 -23
  257. package/dist/esm/helpers/variableValue.native.js.map +1 -1
  258. package/dist/esm/helpers/warnOnce.mjs +5 -4
  259. package/dist/esm/helpers/warnOnce.mjs.map +1 -1
  260. package/dist/esm/helpers/warnOnce.native.js +6 -4
  261. package/dist/esm/helpers/warnOnce.native.js.map +1 -1
  262. package/dist/esm/hooks/useAnimationDriver.mjs +2 -2
  263. package/dist/esm/hooks/useAnimationDriver.mjs.map +1 -1
  264. package/dist/esm/hooks/useAnimationDriver.native.js +2 -2
  265. package/dist/esm/hooks/useAnimationDriver.native.js.map +1 -1
  266. package/dist/esm/hooks/useComponentState.mjs +41 -82
  267. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  268. package/dist/esm/hooks/useComponentState.native.js +45 -84
  269. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  270. package/dist/esm/hooks/useMedia.mjs +2 -2
  271. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  272. package/dist/esm/hooks/useMedia.native.js +2 -2
  273. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  274. package/dist/esm/hooks/useStyle.mjs +11 -0
  275. package/dist/esm/hooks/useStyle.mjs.map +1 -0
  276. package/dist/esm/hooks/useStyle.native.js +11 -0
  277. package/dist/esm/hooks/useStyle.native.js.map +1 -0
  278. package/dist/esm/hooks/useThemeState.mjs +25 -90
  279. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  280. package/dist/esm/hooks/useThemeState.native.js +34 -94
  281. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  282. package/dist/esm/index.js +6 -4
  283. package/dist/esm/index.mjs +6 -4
  284. package/dist/esm/index.native.js +6 -4
  285. package/dist/esm/static-resolve.mjs +3 -3
  286. package/dist/esm/static-resolve.mjs.map +1 -1
  287. package/dist/esm/static-resolve.native.js +3 -3
  288. package/dist/esm/static-resolve.native.js.map +1 -1
  289. package/dist/esm/style.mjs +58 -0
  290. package/dist/esm/style.mjs.map +1 -0
  291. package/dist/esm/style.native.js +63 -0
  292. package/dist/esm/style.native.js.map +1 -0
  293. package/dist/esm/styled.mjs +12 -6
  294. package/dist/esm/styled.mjs.map +1 -1
  295. package/dist/esm/styled.native.js +12 -6
  296. package/dist/esm/styled.native.js.map +1 -1
  297. package/dist/esm/types.mjs +3 -4
  298. package/dist/esm/types.mjs.map +1 -1
  299. package/dist/esm/types.native.js +3 -4
  300. package/dist/esm/types.native.js.map +1 -1
  301. package/dist/esm/views/TamaguiProvider.mjs +1 -2
  302. package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
  303. package/dist/esm/views/TamaguiProvider.native.js +1 -2
  304. package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
  305. package/dist/esm/views/Text.mjs +17 -12
  306. package/dist/esm/views/Text.mjs.map +1 -1
  307. package/dist/esm/views/Theme.mjs +3 -3
  308. package/dist/esm/views/Theme.mjs.map +1 -1
  309. package/dist/esm/views/Theme.native.js +3 -3
  310. package/dist/esm/views/Theme.native.js.map +1 -1
  311. package/dist/esm/views/ThemeDebug.mjs +1 -4
  312. package/dist/esm/views/ThemeDebug.mjs.map +1 -1
  313. package/package.json +15 -15
  314. package/src/createComponent.tsx +21 -1
  315. package/src/createStyledHOC.tsx +4 -2
  316. package/src/createVariable.ts +0 -10
  317. package/src/helpers/borderComponents.ts +62 -0
  318. package/src/helpers/createDesignSystem.ts +0 -2
  319. package/src/helpers/createStyledContext.tsx +15 -53
  320. package/src/helpers/formatDiagnostic.ts +9 -9
  321. package/src/helpers/getCSSStylesAtomic.native.ts +6 -3
  322. package/src/helpers/getCSSStylesAtomic.ts +192 -207
  323. package/src/helpers/getCSSStylesAtomicCompiled.ts +13 -1
  324. package/src/helpers/getDynamicVal.ts +4 -0
  325. package/src/helpers/getSplitStyles.tsx +2080 -3270
  326. package/src/helpers/grammarConfig.ts +218 -1
  327. package/src/helpers/insertStyleRule.tsx +4 -2
  328. package/src/helpers/log.ts +12 -11
  329. package/src/helpers/mergeVariants.ts +55 -18
  330. package/src/helpers/nativeOnlyProps.ts +0 -1
  331. package/src/helpers/nativeStyleEngine.ts +55 -14
  332. package/src/helpers/normalizeValueWithProperty.ts +10 -12
  333. package/src/helpers/parseBorderShorthand.native.ts +23 -45
  334. package/src/helpers/parseOutlineShorthand.native.ts +9 -40
  335. package/src/helpers/resolveSafeArea.ts +34 -101
  336. package/src/helpers/resolveVariantStyle.ts +77 -0
  337. package/src/helpers/styleFrontend.ts +8 -5
  338. package/src/helpers/styleStaticConfig.ts +5 -72
  339. package/src/helpers/styleStaticConfigCore.ts +110 -0
  340. package/src/helpers/styledDynamic.ts +191 -0
  341. package/src/helpers/tokenCategories.ts +40 -65
  342. package/src/helpers/variableValue.ts +20 -15
  343. package/src/helpers/warnOnce.ts +5 -4
  344. package/src/hooks/useAnimationDriver.ts +6 -2
  345. package/src/hooks/useComponentState.ts +55 -183
  346. package/src/hooks/useMedia.tsx +10 -8
  347. package/src/hooks/useStyle.ts +10 -0
  348. package/src/hooks/useThemeState.ts +51 -264
  349. package/src/index.ts +6 -6
  350. package/src/internalRuntimeTypes.ts +1 -0
  351. package/src/static-resolve.ts +7 -4
  352. package/src/style.ts +97 -0
  353. package/src/styled.tsx +39 -68
  354. package/src/types.tsx +105 -169
  355. package/src/views/TamaguiProvider.tsx +0 -2
  356. package/src/views/Text.tsx +20 -14
  357. package/src/views/Theme.tsx +13 -9
  358. package/src/views/ThemeDebug.tsx +0 -1
  359. package/types/createComponent.d.ts.map +1 -1
  360. package/types/createStyledHOC.d.ts +1 -1
  361. package/types/createStyledHOC.d.ts.map +1 -1
  362. package/types/createVariable.d.ts +0 -2
  363. package/types/createVariable.d.ts.map +1 -1
  364. package/types/helpers/borderComponents.d.ts +10 -0
  365. package/types/helpers/borderComponents.d.ts.map +1 -0
  366. package/types/helpers/createDesignSystem.d.ts.map +1 -1
  367. package/types/helpers/createStyledContext.d.ts.map +1 -1
  368. package/types/helpers/getCSSStylesAtomic.d.ts +20 -19
  369. package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
  370. package/types/helpers/getCSSStylesAtomic.native.d.ts +5 -0
  371. package/types/helpers/getCSSStylesAtomic.native.d.ts.map +1 -1
  372. package/types/helpers/getCSSStylesAtomicCompiled.d.ts +6 -1
  373. package/types/helpers/getCSSStylesAtomicCompiled.d.ts.map +1 -1
  374. package/types/helpers/getDynamicVal.d.ts.map +1 -1
  375. package/types/helpers/getSplitStyles.d.ts +3 -5
  376. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  377. package/types/helpers/grammarConfig.d.ts +25 -2
  378. package/types/helpers/grammarConfig.d.ts.map +1 -1
  379. package/types/helpers/insertStyleRule.d.ts +1 -0
  380. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  381. package/types/helpers/log.d.ts.map +1 -1
  382. package/types/helpers/mergeVariants.d.ts.map +1 -1
  383. package/types/helpers/nativeOnlyProps.d.ts +0 -1
  384. package/types/helpers/nativeOnlyProps.d.ts.map +1 -1
  385. package/types/helpers/nativeStyleEngine.d.ts +6 -0
  386. package/types/helpers/nativeStyleEngine.d.ts.map +1 -1
  387. package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
  388. package/types/helpers/parseBorderShorthand.native.d.ts +1 -0
  389. package/types/helpers/parseBorderShorthand.native.d.ts.map +1 -1
  390. package/types/helpers/parseOutlineShorthand.native.d.ts.map +1 -1
  391. package/types/helpers/resolveSafeArea.d.ts +0 -1
  392. package/types/helpers/resolveSafeArea.d.ts.map +1 -1
  393. package/types/helpers/resolveVariantStyle.d.ts +3 -0
  394. package/types/helpers/resolveVariantStyle.d.ts.map +1 -0
  395. package/types/helpers/styleFrontend.d.ts +3 -5
  396. package/types/helpers/styleFrontend.d.ts.map +1 -1
  397. package/types/helpers/styleStaticConfig.d.ts +4 -9
  398. package/types/helpers/styleStaticConfig.d.ts.map +1 -1
  399. package/types/helpers/styleStaticConfigCore.d.ts +4 -0
  400. package/types/helpers/styleStaticConfigCore.d.ts.map +1 -0
  401. package/types/helpers/styledDynamic.d.ts +18 -0
  402. package/types/helpers/styledDynamic.d.ts.map +1 -0
  403. package/types/helpers/tokenCategories.d.ts +0 -1
  404. package/types/helpers/tokenCategories.d.ts.map +1 -1
  405. package/types/helpers/variableValue.d.ts.map +1 -1
  406. package/types/helpers/warnOnce.d.ts.map +1 -1
  407. package/types/helpers/webPropsToSkip.native.d.ts +68 -68
  408. package/types/hooks/useAnimationDriver.d.ts.map +1 -1
  409. package/types/hooks/useComponentState.d.ts.map +1 -1
  410. package/types/hooks/useMedia.d.ts.map +1 -1
  411. package/types/hooks/useStyle.d.ts +4 -0
  412. package/types/hooks/useStyle.d.ts.map +1 -0
  413. package/types/hooks/useThemeState.d.ts +1 -11
  414. package/types/hooks/useThemeState.d.ts.map +1 -1
  415. package/types/index.d.ts +6 -4
  416. package/types/index.d.ts.map +1 -1
  417. package/types/internalRuntimeTypes.d.ts +1 -1
  418. package/types/internalRuntimeTypes.d.ts.map +1 -1
  419. package/types/static-resolve.d.ts.map +1 -1
  420. package/types/style.d.ts +18 -0
  421. package/types/style.d.ts.map +1 -0
  422. package/types/styled.d.ts +10 -10
  423. package/types/styled.d.ts.map +1 -1
  424. package/types/types.d.ts +74 -49
  425. package/types/types.d.ts.map +1 -1
  426. package/types/views/TamaguiProvider.d.ts +1 -1
  427. package/types/views/TamaguiProvider.d.ts.map +1 -1
  428. package/types/views/Text.d.ts.map +1 -1
  429. package/types/views/Theme.d.ts.map +1 -1
  430. package/types/views/ThemeDebug.d.ts.map +1 -1
  431. package/dist/cjs/helpers/directStyleCSS.cjs +0 -345
  432. package/dist/cjs/helpers/directStyleCSS.native.js.map +0 -1
  433. package/dist/cjs/helpers/directStyleCSSCompiled.cjs +0 -40
  434. package/dist/cjs/helpers/directStyleCSSCompiled.native.cjs +0 -46
  435. package/dist/cjs/helpers/directStyleCSSCompiled.native.js +0 -48
  436. package/dist/cjs/helpers/directStyleCSSCompiled.native.js.map +0 -1
  437. package/dist/cjs/helpers/getVariantExtras.cjs +0 -91
  438. package/dist/cjs/helpers/getVariantExtras.native.cjs +0 -94
  439. package/dist/cjs/helpers/getVariantExtras.native.js +0 -96
  440. package/dist/cjs/helpers/getVariantExtras.native.js.map +0 -1
  441. package/dist/cjs/helpers/variantResolvers.cjs +0 -87
  442. package/dist/cjs/helpers/variantResolvers.native.cjs +0 -140
  443. package/dist/cjs/helpers/variantResolvers.native.js +0 -142
  444. package/dist/cjs/helpers/variantResolvers.native.js.map +0 -1
  445. package/dist/esm/helpers/directStyleCSS.mjs +0 -317
  446. package/dist/esm/helpers/directStyleCSS.mjs.map +0 -1
  447. package/dist/esm/helpers/directStyleCSS.native.js +0 -1
  448. package/dist/esm/helpers/directStyleCSSCompiled.mjs +0 -11
  449. package/dist/esm/helpers/directStyleCSSCompiled.mjs.map +0 -1
  450. package/dist/esm/helpers/directStyleCSSCompiled.native.js +0 -15
  451. package/dist/esm/helpers/directStyleCSSCompiled.native.js.map +0 -1
  452. package/dist/esm/helpers/getVariantExtras.mjs +0 -69
  453. package/dist/esm/helpers/getVariantExtras.mjs.map +0 -1
  454. package/dist/esm/helpers/getVariantExtras.native.js +0 -70
  455. package/dist/esm/helpers/getVariantExtras.native.js.map +0 -1
  456. package/dist/esm/helpers/variantResolvers.mjs +0 -65
  457. package/dist/esm/helpers/variantResolvers.mjs.map +0 -1
  458. package/dist/esm/helpers/variantResolvers.native.js +0 -116
  459. package/dist/esm/helpers/variantResolvers.native.js.map +0 -1
  460. package/src/helpers/directStyleCSS.native.ts +0 -1
  461. package/src/helpers/directStyleCSS.ts +0 -513
  462. package/src/helpers/directStyleCSSCompiled.ts +0 -32
  463. package/src/helpers/getVariantExtras.tsx +0 -95
  464. package/src/helpers/variantResolvers.ts +0 -121
  465. package/types/helpers/directStyleCSS.d.ts +0 -28
  466. package/types/helpers/directStyleCSS.d.ts.map +0 -1
  467. package/types/helpers/directStyleCSS.native.d.ts +0 -2
  468. package/types/helpers/directStyleCSS.native.d.ts.map +0 -1
  469. package/types/helpers/directStyleCSSCompiled.d.ts +0 -10
  470. package/types/helpers/directStyleCSSCompiled.d.ts.map +0 -1
  471. package/types/helpers/getVariantExtras.d.ts +0 -4
  472. package/types/helpers/getVariantExtras.d.ts.map +0 -1
  473. package/types/helpers/variantResolvers.d.ts +0 -9
  474. package/types/helpers/variantResolvers.d.ts.map +0 -1
@@ -3,18 +3,149 @@
3
3
  * Copyright (c) Nicolas Gallagher licensed under the MIT license.
4
4
  */
5
5
 
6
- import type { StyleObject } from '@tamagui/helpers'
7
- import { cssShorthandLonghands, simpleHash } from '@tamagui/helpers'
6
+ import {
7
+ type StyleObject,
8
+ StyleObjectIdentifier,
9
+ StyleObjectRules,
10
+ cssShorthandLonghands,
11
+ simpleHash,
12
+ } from '@tamagui/helpers'
8
13
  import { getConfigMaybe } from '../config'
9
- import type { TamaguiInternalConfig, ViewStyleObject } from '../types'
14
+ import type { GetStyleState, TamaguiInternalConfig, ViewStyleObject } from '../types'
10
15
  import { getConfigRevisionState } from './grammarConfig'
16
+ import { shouldInsertStyleRules, updateRules } from './insertStyleRule'
11
17
  import { normalizeValueWithProperty } from './normalizeValueWithProperty'
12
18
  import { styleToCSS } from './styleToCSS'
13
19
  import { transformsToString } from './transformsToString'
14
20
 
15
21
  export { styleToCSS } from './styleToCSS'
16
22
 
17
- // refactor this file away next...
23
+ export const canGenerateCSS =
24
+ process.env.TAMAGUI_TARGET === 'web' && !process.env.TAMAGUI_DID_OUTPUT_CSS
25
+
26
+ type DirectAtomicState = GetStyleState & {
27
+ flatAtomics?: Map<string, StyleObject>
28
+ }
29
+
30
+ export type AtomicSlotEntry = [
31
+ property: string,
32
+ value: any,
33
+ condition: number,
34
+ identity: string,
35
+ selector: string,
36
+ wrappers: readonly string[] | undefined,
37
+ original?: any,
38
+ flags?: number,
39
+ ]
40
+
41
+ export type SlotIdentity = [
42
+ identifier: string,
43
+ rules: string[],
44
+ value: any,
45
+ styleObject?: unknown,
46
+ ]
47
+
48
+ function directStyleSignature(property: string, value: unknown, conditionKey = '') {
49
+ return '\u001f' + property + '\u001f' + conditionKey + '\u001e' + String(value)
50
+ }
51
+
52
+ function getShortProp(key: string) {
53
+ let short = ''
54
+ for (let i = 0; i < key.length; i++) {
55
+ const code = key.charCodeAt(i)
56
+ if (
57
+ (i === 0 || (code >= 65 && code <= 90) || key.charCodeAt(i - 1) === 45) &&
58
+ ((code >= 65 && code <= 90) || (code >= 97 && code <= 122))
59
+ ) {
60
+ short += key[i].toLowerCase()
61
+ }
62
+ }
63
+ return short || 'x'
64
+ }
65
+
66
+ export function registerAtomicSlot(
67
+ state: DirectAtomicState,
68
+ atomicKey: string,
69
+ entries: readonly AtomicSlotEntry[]
70
+ ) {
71
+ let signature = ''
72
+ for (let index = 0; index < entries.length; index++) {
73
+ const entry = entries[index]
74
+ let value = entry[1]
75
+ if (entry[0] === 'transform' && Array.isArray(value)) {
76
+ value = transformsToString(value)
77
+ }
78
+ entry[1] = normalizeValueWithProperty(value, entry[0])
79
+ signature += directStyleSignature(
80
+ entry[0],
81
+ entry[1],
82
+ `${entry[3]}\u001d${entry[7]! >> 5}`
83
+ )
84
+ }
85
+ const built = buildAtomicSlotCSS(atomicKey, entries, signature)
86
+ if (!built) return
87
+ let styleObjectProperty = entries[0]![0]
88
+ for (let index = 1; index < entries.length; index++) {
89
+ if (entries[index]![0] !== styleObjectProperty) {
90
+ styleObjectProperty = atomicKey
91
+ break
92
+ }
93
+ }
94
+ const styleObject = (built[3] ||= [
95
+ styleObjectProperty,
96
+ built[2],
97
+ built[0],
98
+ undefined,
99
+ built[1],
100
+ ]) as StyleObject
101
+ ;(state.flatAtomics ||= new Map()).set(atomicKey, styleObject)
102
+ state.classNames[atomicKey] = built[0]
103
+ }
104
+
105
+ export function flushDirectStyles(state: GetStyleState, clear = false) {
106
+ if (!canGenerateCSS) {
107
+ if (clear) (state as DirectAtomicState).flatAtomics = undefined
108
+ return
109
+ }
110
+ const direct = state as DirectAtomicState
111
+ const atomics = direct.flatAtomics
112
+ if (!atomics) return
113
+ for (const styleObject of atomics.values()) {
114
+ const identifier = styleObject[StyleObjectIdentifier]
115
+ if (shouldInsertStyleRules(identifier)) {
116
+ const rules = styleObject[StyleObjectRules].slice()
117
+ styleObject[StyleObjectRules] = rules
118
+ updateRules(identifier, rules)
119
+ state.flatRulesToInsert![identifier] = styleObject
120
+ }
121
+ }
122
+ if (clear) direct.flatAtomics = undefined
123
+ }
124
+
125
+ export function addComposition(state: GetStyleState, property: 'translate' | 'scale') {
126
+ if (!canGenerateCSS || state.classNames[property]) return
127
+ const isTranslate = property === 'translate'
128
+ const identifier = isTranslate ? '_t-compose' : '_s-compose'
129
+ const value = isTranslate
130
+ ? 'var(--t-x, 0px) var(--t-y, 0px)'
131
+ : 'var(--t-scale-x, 1) var(--t-scale-y, 1)'
132
+ const defaults = isTranslate ? '--t-x:0px;--t-y:0px' : '--t-scale-x:1;--t-scale-y:1'
133
+ const rules = [
134
+ `:where(.${identifier}){${defaults}}`,
135
+ `.${identifier}{${property}:${value}}`,
136
+ ]
137
+ if (shouldInsertStyleRules(identifier)) {
138
+ updateRules(identifier, rules)
139
+ state.flatRulesToInsert![identifier] = [
140
+ property,
141
+ value,
142
+ identifier,
143
+ undefined,
144
+ rules,
145
+ ] as any
146
+ }
147
+ state.classNames[property] = identifier
148
+ }
18
149
 
19
150
  export function getCSSStylesAtomic(style: ViewStyleObject) {
20
151
  if (process.env.TAMAGUI_DID_OUTPUT_CSS) return []
@@ -57,14 +188,6 @@ export function getCSSStyleAtomic(
57
188
  let conf: TamaguiInternalConfig | null = null
58
189
  let confRevision = 0
59
190
 
60
- export type SlotIdentity = [
61
- identifier: string,
62
- rules: string[],
63
- value: any,
64
- /** finished wrapper, cached so a repeat build allocates nothing */
65
- styleObject?: unknown,
66
- ]
67
-
68
191
  const getStyleObject = (
69
192
  val: any,
70
193
  key: string,
@@ -76,35 +199,16 @@ const getStyleObject = (
76
199
  classRepetitions = 1
77
200
  ): StyleObject | undefined => {
78
201
  if (val == null) return
79
- // transform
80
202
  if (key === 'transform' && Array.isArray(val)) {
81
203
  val = transformsToString(val)
82
204
  }
83
205
  const value = normalizeValueWithProperty(val, key)
84
- // shorthand-derived class prefixes come from the config
85
- const nextConf = syncAtomicConfig()
206
+ syncAtomicConfig()
86
207
  const rawValue = typeof value === 'string' ? value : `${value}`
87
- // this content hash is the atomic CSS class identity shared by server output
88
- // and client hydration. it is not a parser cache or a runtime lookup key.
89
208
  const hash = simpleHash(identity ?? rawValue, direct ? 'strict' : 10) || '0'
90
- let shortProp: string
91
- if (direct) {
92
- shortProp = ''
93
- for (let index = 0; index < identityKey.length; index++) {
94
- const code = identityKey.charCodeAt(index)
95
- if (
96
- (index === 0 ||
97
- (code >= 65 && code <= 90) ||
98
- identityKey.charCodeAt(index - 1) === 45) &&
99
- ((code >= 65 && code <= 90) || (code >= 97 && code <= 122))
100
- ) {
101
- shortProp += identityKey[index].toLowerCase()
102
- }
103
- }
104
- shortProp ||= 'x'
105
- } else {
106
- shortProp = conf?.inverseShorthands[key] || key
107
- }
209
+ const shortProp = direct
210
+ ? getShortProp(identityKey)
211
+ : conf?.inverseShorthands[key] || key
108
212
  let identifier = `_${shortProp}-${hash}`
109
213
  if (key === 'pointerEvents' && !condition) {
110
214
  if (value === 'box-none') identifier = '_pe-boxnone'
@@ -119,72 +223,13 @@ const getStyleObject = (
119
223
  direct,
120
224
  classRepetitions
121
225
  )
122
- return [
123
- // array for performance
124
- key,
125
- value,
126
- identifier,
127
- undefined,
128
- rules,
129
- ]
226
+ return [key, value, identifier, undefined, rules]
130
227
  }
131
228
 
132
- // ── frame slot builder ───────────────────────────────────────────────────────
133
- // Build the css for one completed frame slot in a single shot: the identifier
134
- // hashes the slot's WINNING content, the base rule comes first, and
135
- // conditional rules follow in ascending precedence (later rules win the
136
- // cascade at equal specificity). Cached per (atomicKey, signature): a slot
137
- // that resolves to the same content is the same class, however it got there.
138
-
139
- export type AtomicSlotEntry = [
140
- property: string,
141
- value: any,
142
- condition: number,
143
- identity: string,
144
- selector: string,
145
- wrapperSource: readonly string[] | undefined,
146
- wrapperStart: number,
147
- wrapperCount: number,
148
- /** authored value, carried only on deferred platform-pseudo passes so an
149
- * inline conversion preserves provenance */
150
- original?: any,
151
- ]
152
-
229
+ // atomic key -> signature -> identity. two levels so a pass never builds and
230
+ // hashes one long combined key per slot
153
231
  const slotIdentities = new Map<string, Map<string, SlotIdentity>>()
154
- let slotIdentitiesSize = 0
155
-
156
- // raw-value memo in front of the normalized identity: a repeat authored value
157
- // skips normalization and signature building entirely. pure memoization - two
158
- // raw spellings that normalize alike still share one identity through the
159
- // normalized signature they both resolve to.
160
- const rawSlotIdentities = new Map<string, Map<unknown, SlotIdentity>>()
161
- let rawSlotIdentitiesSize = 0
162
-
163
- export function probeRawSlotIdentity(
164
- property: string,
165
- raw: unknown
166
- ): SlotIdentity | undefined {
167
- syncAtomicConfig()
168
- return rawSlotIdentities.get(property)?.get(raw)
169
- }
170
-
171
- export function storeRawSlotIdentity(
172
- property: string,
173
- raw: unknown,
174
- identity: SlotIdentity
175
- ) {
176
- if (rawSlotIdentitiesSize > 10_000) {
177
- rawSlotIdentities.clear()
178
- rawSlotIdentitiesSize = 0
179
- }
180
- let byRaw = rawSlotIdentities.get(property)
181
- if (!byRaw) {
182
- byRaw = new Map()
183
- rawSlotIdentities.set(property, byRaw)
184
- }
185
- byRaw.set(raw, identity)
186
- rawSlotIdentitiesSize++
187
- }
232
+ let slotIdentityCount = 0
188
233
 
189
234
  function syncAtomicConfig() {
190
235
  const nextConf = getConfigMaybe()
@@ -193,32 +238,8 @@ function syncAtomicConfig() {
193
238
  conf = nextConf
194
239
  confRevision = nextRevision
195
240
  slotIdentities.clear()
196
- slotIdentitiesSize = 0
197
- rawSlotIdentities.clear()
198
- rawSlotIdentitiesSize = 0
241
+ slotIdentityCount = 0
199
242
  }
200
- return nextConf
201
- }
202
-
203
- function slotClassRepetitions(atomicKey: string, condition: number): number {
204
- const base =
205
- atomicKey === 'containerName' || atomicKey === 'containerType'
206
- ? condition
207
- ? Math.max(
208
- 2,
209
- 1 +
210
- ((Math.floor(condition / 256) >>> 23) & 7) +
211
- (Math.floor(condition / 256) >>> 26) * 6 -
212
- ((condition >>> 5) & 7)
213
- )
214
- : 2
215
- : condition
216
- ? 1 +
217
- ((Math.floor(condition / 256) >>> 23) & 7) +
218
- (Math.floor(condition / 256) >>> 26) * 6 -
219
- ((condition >>> 5) & 7)
220
- : 1
221
- return base
222
243
  }
223
244
 
224
245
  export function buildAtomicSlotCSS(
@@ -227,27 +248,14 @@ export function buildAtomicSlotCSS(
227
248
  signature: string
228
249
  ): SlotIdentity | undefined {
229
250
  if (process.env.TAMAGUI_DID_OUTPUT_CSS) return
230
- // media queries and shorthands come from the config, so an identity built
231
- // under one config says nothing about the rules under another
232
251
  syncAtomicConfig()
233
- let byKey = slotIdentities.get(atomicKey)
234
- const known = byKey?.get(signature)
252
+ let bySignature = slotIdentities.get(atomicKey)
253
+ if (!bySignature) slotIdentities.set(atomicKey, (bySignature = new Map()))
254
+ const known = bySignature.get(signature)
235
255
  if (known) return known
236
256
 
237
257
  const hash = simpleHash(signature, 'strict') || '0'
238
- let shortProp = ''
239
- for (let index = 0; index < atomicKey.length; index++) {
240
- const code = atomicKey.charCodeAt(index)
241
- if (
242
- (index === 0 ||
243
- (code >= 65 && code <= 90) ||
244
- atomicKey.charCodeAt(index - 1) === 45) &&
245
- ((code >= 65 && code <= 90) || (code >= 97 && code <= 122))
246
- ) {
247
- shortProp += atomicKey[index].toLowerCase()
248
- }
249
- }
250
- shortProp ||= 'x'
258
+ const shortProp = getShortProp(atomicKey)
251
259
  let identifier = `_${shortProp}-${hash}`
252
260
  if (atomicKey === 'pointerEvents' && entries.length === 1 && !entries[0][2]) {
253
261
  const value = entries[0][1]
@@ -255,13 +263,16 @@ export function buildAtomicSlotCSS(
255
263
  else if (value === 'box-only') identifier = '_pe-boxonly'
256
264
  }
257
265
 
258
- // entries arrive ordered (base first, conditionals ascending precedence)
259
- // and normalized: the slot signature was built from exactly this sequence
260
266
  const rules: string[] = []
261
267
  let lastValue: any
268
+ let layered = false
269
+ for (let index = 1; index < entries.length; index++) {
270
+ if (entries[index][0] !== entries[0][0]) {
271
+ layered = true
272
+ break
273
+ }
274
+ }
262
275
  for (const entry of entries) {
263
- // values arrive normalized: the slot signature normalized them so the
264
- // identity hash and the rule text agree
265
276
  const value = entry[1]
266
277
  lastValue = value
267
278
  const entryRules = createAtomicRules(
@@ -271,43 +282,25 @@ export function buildAtomicSlotCSS(
271
282
  entry[4],
272
283
  entry[5],
273
284
  2,
274
- slotClassRepetitions(atomicKey, entry[2]),
275
- entry[6],
276
- entry[7]
285
+ Math.max(
286
+ layered ? 1 + (entry[7]! >> 5) : 1,
287
+ atomicKey === 'containerName' || atomicKey === 'containerType' ? 2 : 1
288
+ )
277
289
  )
278
290
  for (const rule of entryRules) rules.push(rule)
279
291
  }
280
292
 
281
293
  const built: SlotIdentity = [identifier, rules, lastValue]
282
- if (slotIdentitiesSize > 10_000) {
294
+ if (slotIdentityCount > 10_000) {
283
295
  slotIdentities.clear()
284
- slotIdentitiesSize = 0
285
- byKey = undefined
286
- }
287
- if (!byKey) {
288
- byKey = new Map()
289
- slotIdentities.set(atomicKey, byKey)
296
+ slotIdentityCount = 0
297
+ slotIdentities.set(atomicKey, (bySignature = new Map()))
290
298
  }
291
- byKey.set(signature, built)
292
- slotIdentitiesSize++
299
+ slotIdentityCount++
300
+ bySignature.set(signature, built)
293
301
  return built
294
302
  }
295
303
 
296
- function createDeclarationBlock(
297
- style: [string, any][],
298
- important = false,
299
- trailingSemicolon = true
300
- ) {
301
- let next = ''
302
- for (let index = 0; index < style.length; index++) {
303
- const [key, value] = style[index]
304
- next += `${hyphenateStyleName(key)}:${value}${important ? ' !important' : ''}${
305
- trailingSemicolon || index < style.length - 1 ? ';' : ''
306
- }`
307
- }
308
- return `{${next}}`
309
- }
310
-
311
304
  const hcache = {}
312
305
  const toHyphenLower = (match: string) => `-${match.toLowerCase()}`
313
306
  const hyphenateStyleName = (key: string) => {
@@ -317,6 +310,10 @@ const hyphenateStyleName = (key: string) => {
317
310
  return val
318
311
  }
319
312
 
313
+ function declaration(key: string, value: any, important = false) {
314
+ return `${hyphenateStyleName(key)}:${value}${important ? ' !important' : ''};`
315
+ }
316
+
320
317
  function createAtomicRules(
321
318
  identifier: string,
322
319
  property: string,
@@ -324,11 +321,8 @@ function createAtomicRules(
324
321
  condition = '',
325
322
  wrappers?: readonly string[],
326
323
  direct: boolean | 2 = false,
327
- classRepetitions = 1,
328
- wrapperStart = 0,
329
- wrapperCount = wrappers?.length || 0
324
+ classRepetitions = 1
330
325
  ): string[] {
331
- // longhands get .cls.cls for higher specificity over shorthands
332
326
  const repetitions =
333
327
  direct && classRepetitions > 1
334
328
  ? classRepetitions
@@ -339,51 +333,42 @@ function createAtomicRules(
339
333
  const selector = `${cls}${condition}`
340
334
 
341
335
  let rules: string[] = []
342
-
343
- // Handle non-standard properties and object values that require multiple
344
- // CSS rules to be created.
345
336
  switch (property) {
346
- // Equivalent to using '::placeholder'
347
337
  case 'placeholderTextColor': {
348
- const block = createDeclarationBlock(
349
- [
350
- ['color', value],
351
- ['opacity', 1],
352
- ],
353
- false
338
+ rules.push(
339
+ `${selector}::placeholder{${declaration('color', value)}${declaration('opacity', 1)}}`
354
340
  )
355
- rules.push(`${selector}::placeholder${block}`)
356
341
  break
357
342
  }
358
343
 
359
- // all webkit prefixed rules
344
+ case 'selectionColor': {
345
+ rules.push(`${selector}::selection{${declaration('backgroundColor', value)}}`)
346
+ break
347
+ }
348
+
349
+ case 'cursorColor':
350
+ case 'selectionHandleColor': {
351
+ rules.push(`${selector}{${declaration('caretColor', value)}}`)
352
+ break
353
+ }
354
+
360
355
  case 'backgroundClip':
361
356
  case 'userSelect': {
362
357
  const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`
363
358
  const webkitProperty = `Webkit${propertyCapitalized}`
364
- const block = createDeclarationBlock(
365
- [
366
- [property, value],
367
- [webkitProperty, value],
368
- ],
369
- false
359
+ rules.push(
360
+ `${selector}{${declaration(property, value)}${declaration(webkitProperty, value)}}`
370
361
  )
371
- rules.push(`${selector}${block}`)
372
362
  break
373
363
  }
374
364
 
375
- // Polyfill for additional 'pointer-events' values
376
365
  case 'pointerEvents': {
377
366
  if (direct) {
378
367
  const subject = value === 'none' || value === 'box-none' ? 'none' : 'auto'
379
368
  const children = value === 'none' || value === 'box-only' ? 'none' : 'auto'
380
369
  rules.push(
381
- `${selector}${createDeclarationBlock([['pointerEvents', subject]], false, false)}`,
382
- `${selector}>*${createDeclarationBlock(
383
- [['pointerEvents', children]],
384
- false,
385
- false
386
- )}`
370
+ `${selector}{pointer-events:${subject}}`,
371
+ `${selector}>*{pointer-events:${children}}`
387
372
  )
388
373
  break
389
374
  }
@@ -393,22 +378,22 @@ function createAtomicRules(
393
378
  } else if (value === 'none' || value === 'box-none') {
394
379
  finalValue = 'none'
395
380
  }
396
- const block = createDeclarationBlock([['pointerEvents', finalValue]], true)
397
- rules.push(`${selector}${block}`)
381
+ rules.push(`${selector}{${declaration('pointerEvents', finalValue, true)}}`)
398
382
  break
399
383
  }
400
384
 
401
385
  default: {
402
- const block = createDeclarationBlock([[property, value]], false, !direct)
403
- rules.push(`${selector}${block}`)
386
+ let output = declaration(property, value)
387
+ if (direct) output = output.slice(0, -1)
388
+ rules.push(`${selector}{${output}}`)
404
389
  break
405
390
  }
406
391
  }
407
392
 
408
- if (wrappers && wrapperCount) {
393
+ if (wrappers) {
409
394
  for (let ruleIndex = 0; ruleIndex < rules.length; ruleIndex++) {
410
395
  let rule = rules[ruleIndex]
411
- for (let index = wrapperStart + wrapperCount - 1; index >= wrapperStart; index--) {
396
+ for (let index = wrappers.length - 1; index >= 0; index--) {
412
397
  rule = `${wrappers[index]} {${rule}}`
413
398
  }
414
399
  rules[ruleIndex] = rule
@@ -1,4 +1,16 @@
1
- import type { ViewStyleObject } from '../types'
1
+ import type { GetStyleState, ViewStyleObject } from '../types'
2
+
3
+ export const canGenerateCSS = false
4
+
5
+ export function flushDirectStyles(_state: GetStyleState, _clear = false) {}
6
+
7
+ export function addComposition(_state: GetStyleState, _property: 'translate' | 'scale') {}
8
+
9
+ export function registerAtomicSlot() {}
10
+
11
+ export function buildAtomicSlotCSS() {
12
+ return undefined
13
+ }
2
14
 
3
15
  export function getCSSStylesAtomic(_style: ViewStyleObject) {
4
16
  return []
@@ -28,6 +28,10 @@ const colorStyleKeys: Record<string, boolean> = {
28
28
  textShadowColor: true,
29
29
  tintColor: true,
30
30
  outlineColor: true,
31
+ placeholderTextColor: true,
32
+ selectionColor: true,
33
+ cursorColor: true,
34
+ selectionHandleColor: true,
31
35
  }
32
36
 
33
37
  /**