@tamagui/web 3.0.0-beta.807.1 → 3.0.0-beta.881.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 (587) hide show
  1. package/dist/cjs/config.cjs +1 -1
  2. package/dist/cjs/config.native.cjs +1 -1
  3. package/dist/cjs/config.native.js +1 -1
  4. package/dist/cjs/config.native.js.map +1 -1
  5. package/dist/cjs/createComponent.cjs +40 -19
  6. package/dist/cjs/createComponent.native.cjs +42 -21
  7. package/dist/cjs/createComponent.native.js +42 -21
  8. package/dist/cjs/createComponent.native.js.map +1 -1
  9. package/dist/cjs/createStyledHOC.cjs +54 -4
  10. package/dist/cjs/createStyledHOC.native.cjs +55 -4
  11. package/dist/cjs/createStyledHOC.native.js +55 -4
  12. package/dist/cjs/createStyledHOC.native.js.map +1 -1
  13. package/dist/cjs/createTokens.cjs +1 -1
  14. package/dist/cjs/createTokens.native.cjs +1 -1
  15. package/dist/cjs/createTokens.native.js +1 -1
  16. package/dist/cjs/createTokens.native.js.map +1 -1
  17. package/dist/cjs/createVariable.cjs +0 -10
  18. package/dist/cjs/createVariable.native.cjs +0 -10
  19. package/dist/cjs/createVariable.native.js +0 -10
  20. package/dist/cjs/createVariable.native.js.map +1 -1
  21. package/dist/cjs/dom/html.cjs +147 -99
  22. package/dist/cjs/dom/htmlRuntime.native.cjs +6 -2
  23. package/dist/cjs/dom/htmlRuntime.native.js +6 -2
  24. package/dist/cjs/dom/htmlRuntime.native.js.map +1 -1
  25. package/dist/cjs/dom/primitives.native.cjs +16 -13
  26. package/dist/cjs/dom/primitives.native.js +16 -13
  27. package/dist/cjs/dom/primitives.native.js.map +1 -1
  28. package/dist/cjs/helpers/borderComponents.cjs +62 -0
  29. package/dist/cjs/helpers/borderComponents.native.cjs +82 -0
  30. package/dist/cjs/helpers/borderComponents.native.js +84 -0
  31. package/dist/cjs/helpers/borderComponents.native.js.map +1 -0
  32. package/dist/cjs/helpers/componentDisplayName.cjs +1 -11
  33. package/dist/cjs/helpers/componentDisplayName.native.cjs +1 -11
  34. package/dist/cjs/helpers/componentDisplayName.native.js +1 -11
  35. package/dist/cjs/helpers/componentDisplayName.native.js.map +1 -1
  36. package/dist/cjs/helpers/createDesignSystem.cjs +0 -2
  37. package/dist/cjs/helpers/createStyledContext.cjs +10 -18
  38. package/dist/cjs/helpers/createStyledContext.native.cjs +14 -18
  39. package/dist/cjs/helpers/createStyledContext.native.js +14 -18
  40. package/dist/cjs/helpers/createStyledContext.native.js.map +1 -1
  41. package/dist/cjs/helpers/formatDiagnostic.cjs +8 -10
  42. package/dist/cjs/helpers/formatDiagnostic.native.cjs +8 -10
  43. package/dist/cjs/helpers/formatDiagnostic.native.js +8 -10
  44. package/dist/cjs/helpers/formatDiagnostic.native.js.map +1 -1
  45. package/dist/cjs/helpers/getCSSStylesAtomic.cjs +133 -114
  46. package/dist/cjs/helpers/getCSSStylesAtomic.native.cjs +11 -3
  47. package/dist/cjs/helpers/getCSSStylesAtomic.native.js +11 -3
  48. package/dist/cjs/helpers/getCSSStylesAtomic.native.js.map +1 -1
  49. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.cjs +13 -1
  50. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.cjs +15 -1
  51. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js +15 -1
  52. package/dist/cjs/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
  53. package/dist/cjs/helpers/getDynamicVal.cjs +5 -1
  54. package/dist/cjs/helpers/getDynamicVal.native.cjs +5 -1
  55. package/dist/cjs/helpers/getDynamicVal.native.js +5 -1
  56. package/dist/cjs/helpers/getDynamicVal.native.js.map +1 -1
  57. package/dist/cjs/helpers/getSplitStyles.cjs +1063 -2168
  58. package/dist/cjs/helpers/getSplitStyles.native.cjs +1115 -2515
  59. package/dist/cjs/helpers/getSplitStyles.native.js +1115 -2515
  60. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  61. package/dist/cjs/helpers/grammarConfig.cjs +163 -1
  62. package/dist/cjs/helpers/grammarConfig.native.cjs +186 -1
  63. package/dist/cjs/helpers/grammarConfig.native.js +186 -1
  64. package/dist/cjs/helpers/grammarConfig.native.js.map +1 -1
  65. package/dist/cjs/helpers/insertStyleRule.cjs +5 -1
  66. package/dist/cjs/helpers/insertStyleRule.native.cjs +7 -1
  67. package/dist/cjs/helpers/insertStyleRule.native.js +7 -1
  68. package/dist/cjs/helpers/insertStyleRule.native.js.map +1 -1
  69. package/dist/cjs/helpers/log.cjs +9 -8
  70. package/dist/cjs/helpers/log.native.cjs +9 -8
  71. package/dist/cjs/helpers/log.native.js +9 -8
  72. package/dist/cjs/helpers/log.native.js.map +1 -1
  73. package/dist/cjs/helpers/mergeVariants.cjs +44 -13
  74. package/dist/cjs/helpers/mergeVariants.native.cjs +79 -14
  75. package/dist/cjs/helpers/mergeVariants.native.js +79 -14
  76. package/dist/cjs/helpers/mergeVariants.native.js.map +1 -1
  77. package/dist/cjs/helpers/nativeOnlyProps.cjs +0 -1
  78. package/dist/cjs/helpers/nativeOnlyProps.native.cjs +0 -1
  79. package/dist/cjs/helpers/nativeOnlyProps.native.js +0 -1
  80. package/dist/cjs/helpers/nativeOnlyProps.native.js.map +1 -1
  81. package/dist/cjs/helpers/nativeStyleEngine.cjs +34 -14
  82. package/dist/cjs/helpers/nativeStyleEngine.native.cjs +36 -14
  83. package/dist/cjs/helpers/nativeStyleEngine.native.js +36 -14
  84. package/dist/cjs/helpers/nativeStyleEngine.native.js.map +1 -1
  85. package/dist/cjs/helpers/normalizeValueWithProperty.cjs +7 -8
  86. package/dist/cjs/helpers/normalizeValueWithProperty.native.cjs +9 -8
  87. package/dist/cjs/helpers/normalizeValueWithProperty.native.js +9 -8
  88. package/dist/cjs/helpers/normalizeValueWithProperty.native.js.map +1 -1
  89. package/dist/cjs/helpers/parseBorderShorthand.native.cjs +25 -56
  90. package/dist/cjs/helpers/parseBorderShorthand.native.js +25 -56
  91. package/dist/cjs/helpers/parseBorderShorthand.native.js.map +1 -1
  92. package/dist/cjs/helpers/parseOutlineShorthand.native.cjs +9 -49
  93. package/dist/cjs/helpers/parseOutlineShorthand.native.js +9 -49
  94. package/dist/cjs/helpers/parseOutlineShorthand.native.js.map +1 -1
  95. package/dist/cjs/helpers/resolveSafeArea.cjs +35 -100
  96. package/dist/cjs/helpers/resolveVariantStyle.cjs +57 -0
  97. package/dist/cjs/helpers/resolveVariantStyle.native.cjs +67 -0
  98. package/dist/cjs/helpers/resolveVariantStyle.native.js +69 -0
  99. package/dist/cjs/helpers/resolveVariantStyle.native.js.map +1 -0
  100. package/dist/cjs/helpers/splitStyleProps.cjs +46 -0
  101. package/dist/cjs/helpers/splitStyleProps.native.cjs +49 -0
  102. package/dist/cjs/helpers/splitStyleProps.native.js +51 -0
  103. package/dist/cjs/helpers/splitStyleProps.native.js.map +1 -0
  104. package/dist/cjs/helpers/{getDefaultProps.native.cjs → styleStaticConfig.cjs} +7 -8
  105. package/dist/cjs/helpers/{getDefaultProps.native.js → styleStaticConfig.native.cjs} +7 -8
  106. package/dist/cjs/helpers/styleStaticConfig.native.js +31 -0
  107. package/dist/cjs/helpers/styleStaticConfig.native.js.map +1 -0
  108. package/dist/cjs/helpers/styleStaticConfigCore.cjs +107 -0
  109. package/dist/cjs/helpers/styleStaticConfigCore.native.cjs +127 -0
  110. package/dist/cjs/helpers/styleStaticConfigCore.native.js +129 -0
  111. package/dist/cjs/helpers/styleStaticConfigCore.native.js.map +1 -0
  112. package/dist/cjs/helpers/styledDynamic.cjs +160 -0
  113. package/dist/cjs/helpers/styledDynamic.native.cjs +195 -0
  114. package/dist/cjs/helpers/styledDynamic.native.js +197 -0
  115. package/dist/cjs/helpers/styledDynamic.native.js.map +1 -0
  116. package/dist/cjs/helpers/tokenCategories.cjs +12 -74
  117. package/dist/cjs/helpers/tokenCategories.native.cjs +12 -76
  118. package/dist/cjs/helpers/tokenCategories.native.js +12 -76
  119. package/dist/cjs/helpers/tokenCategories.native.js.map +1 -1
  120. package/dist/cjs/helpers/variableValue.cjs +17 -12
  121. package/dist/cjs/helpers/variableValue.native.cjs +46 -23
  122. package/dist/cjs/helpers/variableValue.native.js +46 -23
  123. package/dist/cjs/helpers/variableValue.native.js.map +1 -1
  124. package/dist/cjs/helpers/warnOnce.cjs +5 -4
  125. package/dist/cjs/helpers/warnOnce.native.cjs +6 -4
  126. package/dist/cjs/helpers/warnOnce.native.js +6 -4
  127. package/dist/cjs/helpers/warnOnce.native.js.map +1 -1
  128. package/dist/cjs/hooks/useAnimationDriver.cjs +2 -2
  129. package/dist/cjs/hooks/useAnimationDriver.native.cjs +2 -2
  130. package/dist/cjs/hooks/useAnimationDriver.native.js +2 -2
  131. package/dist/cjs/hooks/useAnimationDriver.native.js.map +1 -1
  132. package/dist/cjs/hooks/useComponentState.cjs +41 -82
  133. package/dist/cjs/hooks/useComponentState.native.cjs +45 -84
  134. package/dist/cjs/hooks/useComponentState.native.js +45 -84
  135. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  136. package/dist/cjs/hooks/useMedia.cjs +2 -2
  137. package/dist/cjs/hooks/useMedia.native.cjs +2 -2
  138. package/dist/cjs/hooks/useMedia.native.js +2 -2
  139. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  140. package/dist/cjs/hooks/useSplitStyles.cjs +2 -2
  141. package/dist/cjs/hooks/useSplitStyles.native.cjs +2 -2
  142. package/dist/cjs/hooks/useSplitStyles.native.js +2 -2
  143. package/dist/cjs/hooks/useSplitStyles.native.js.map +1 -1
  144. package/dist/cjs/{helpers/getDefaultProps.cjs → hooks/useStyle.cjs} +10 -4
  145. package/dist/cjs/{helpers/directStyleCSS.native.js → hooks/useStyle.native.cjs} +16 -6
  146. package/dist/cjs/hooks/useStyle.native.js +34 -0
  147. package/dist/cjs/hooks/useStyle.native.js.map +1 -0
  148. package/dist/cjs/hooks/useThemeState.cjs +25 -90
  149. package/dist/cjs/hooks/useThemeState.native.cjs +34 -94
  150. package/dist/cjs/hooks/useThemeState.native.js +34 -94
  151. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  152. package/dist/cjs/index.cjs +9 -12
  153. package/dist/cjs/index.native.cjs +9 -12
  154. package/dist/cjs/index.native.js +9 -12
  155. package/dist/cjs/index.native.js.map +1 -1
  156. package/dist/cjs/internal-runtime.cjs +8 -7
  157. package/dist/cjs/internal-runtime.native.cjs +8 -7
  158. package/dist/cjs/internal-runtime.native.js +8 -7
  159. package/dist/cjs/internal-runtime.native.js.map +1 -1
  160. package/dist/cjs/static-resolve.cjs +8 -7
  161. package/dist/cjs/static-resolve.native.cjs +8 -7
  162. package/dist/cjs/static-resolve.native.js +8 -7
  163. package/dist/cjs/static-resolve.native.js.map +1 -1
  164. package/dist/cjs/style.cjs +91 -0
  165. package/dist/cjs/style.native.cjs +98 -0
  166. package/dist/cjs/style.native.js +100 -0
  167. package/dist/cjs/style.native.js.map +1 -0
  168. package/dist/cjs/styled.cjs +15 -62
  169. package/dist/cjs/styled.native.cjs +15 -64
  170. package/dist/cjs/styled.native.js +15 -64
  171. package/dist/cjs/styled.native.js.map +1 -1
  172. package/dist/cjs/types.cjs +4 -22
  173. package/dist/cjs/types.native.cjs +4 -22
  174. package/dist/cjs/types.native.js +4 -22
  175. package/dist/cjs/types.native.js.map +1 -1
  176. package/dist/cjs/views/TamaguiProvider.cjs +1 -2
  177. package/dist/cjs/views/TamaguiProvider.native.cjs +1 -2
  178. package/dist/cjs/views/TamaguiProvider.native.js +1 -2
  179. package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
  180. package/dist/cjs/views/Text.cjs +21 -14
  181. package/dist/cjs/views/Text.native.cjs +5 -2
  182. package/dist/cjs/views/Text.native.js +5 -2
  183. package/dist/cjs/views/Text.native.js.map +1 -1
  184. package/dist/cjs/views/Theme.cjs +2 -2
  185. package/dist/cjs/views/Theme.native.cjs +2 -2
  186. package/dist/cjs/views/Theme.native.js +2 -2
  187. package/dist/cjs/views/Theme.native.js.map +1 -1
  188. package/dist/cjs/views/ThemeDebug.cjs +1 -4
  189. package/dist/cjs/views/View.cjs +4 -2
  190. package/dist/cjs/views/View.native.cjs +4 -2
  191. package/dist/cjs/views/View.native.js +4 -2
  192. package/dist/cjs/views/View.native.js.map +1 -1
  193. package/dist/esm/config.mjs +1 -1
  194. package/dist/esm/config.mjs.map +1 -1
  195. package/dist/esm/config.native.js +1 -1
  196. package/dist/esm/config.native.js.map +1 -1
  197. package/dist/esm/createComponent.mjs +41 -20
  198. package/dist/esm/createComponent.mjs.map +1 -1
  199. package/dist/esm/createComponent.native.js +43 -22
  200. package/dist/esm/createComponent.native.js.map +1 -1
  201. package/dist/esm/createStyledHOC.mjs +55 -5
  202. package/dist/esm/createStyledHOC.mjs.map +1 -1
  203. package/dist/esm/createStyledHOC.native.js +56 -5
  204. package/dist/esm/createStyledHOC.native.js.map +1 -1
  205. package/dist/esm/createTokens.mjs +1 -1
  206. package/dist/esm/createTokens.mjs.map +1 -1
  207. package/dist/esm/createTokens.native.js +1 -1
  208. package/dist/esm/createTokens.native.js.map +1 -1
  209. package/dist/esm/createVariable.mjs +1 -9
  210. package/dist/esm/createVariable.mjs.map +1 -1
  211. package/dist/esm/createVariable.native.js +1 -9
  212. package/dist/esm/createVariable.native.js.map +1 -1
  213. package/dist/esm/dom/html.mjs +147 -99
  214. package/dist/esm/dom/html.mjs.map +1 -1
  215. package/dist/esm/dom/htmlRuntime.native.js +7 -3
  216. package/dist/esm/dom/htmlRuntime.native.js.map +1 -1
  217. package/dist/esm/dom/primitives.native.js +16 -13
  218. package/dist/esm/dom/primitives.native.js.map +1 -1
  219. package/dist/esm/helpers/borderComponents.mjs +37 -0
  220. package/dist/esm/helpers/borderComponents.mjs.map +1 -0
  221. package/dist/esm/helpers/borderComponents.native.js +55 -0
  222. package/dist/esm/helpers/borderComponents.native.js.map +1 -0
  223. package/dist/esm/helpers/componentDisplayName.mjs +1 -8
  224. package/dist/esm/helpers/componentDisplayName.mjs.map +1 -1
  225. package/dist/esm/helpers/componentDisplayName.native.js +1 -8
  226. package/dist/esm/helpers/componentDisplayName.native.js.map +1 -1
  227. package/dist/esm/helpers/createDesignSystem.mjs +0 -2
  228. package/dist/esm/helpers/createDesignSystem.mjs.map +1 -1
  229. package/dist/esm/helpers/createStyledContext.mjs +10 -18
  230. package/dist/esm/helpers/createStyledContext.mjs.map +1 -1
  231. package/dist/esm/helpers/createStyledContext.native.js +14 -18
  232. package/dist/esm/helpers/createStyledContext.native.js.map +1 -1
  233. package/dist/esm/helpers/formatDiagnostic.mjs +8 -10
  234. package/dist/esm/helpers/formatDiagnostic.mjs.map +1 -1
  235. package/dist/esm/helpers/formatDiagnostic.native.js +8 -10
  236. package/dist/esm/helpers/formatDiagnostic.native.js.map +1 -1
  237. package/dist/esm/helpers/getCSSStylesAtomic.mjs +131 -114
  238. package/dist/esm/helpers/getCSSStylesAtomic.mjs.map +1 -1
  239. package/dist/esm/helpers/getCSSStylesAtomic.native.js +7 -4
  240. package/dist/esm/helpers/getCSSStylesAtomic.native.js.map +1 -1
  241. package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs +8 -1
  242. package/dist/esm/helpers/getCSSStylesAtomicCompiled.mjs.map +1 -1
  243. package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js +10 -1
  244. package/dist/esm/helpers/getCSSStylesAtomicCompiled.native.js.map +1 -1
  245. package/dist/esm/helpers/getDynamicVal.mjs +5 -1
  246. package/dist/esm/helpers/getDynamicVal.mjs.map +1 -1
  247. package/dist/esm/helpers/getDynamicVal.native.js +5 -1
  248. package/dist/esm/helpers/getDynamicVal.native.js.map +1 -1
  249. package/dist/esm/helpers/getSplitStyles.mjs +1052 -2151
  250. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  251. package/dist/esm/helpers/getSplitStyles.native.js +1090 -2481
  252. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  253. package/dist/esm/helpers/grammarConfig.mjs +164 -2
  254. package/dist/esm/helpers/grammarConfig.mjs.map +1 -1
  255. package/dist/esm/helpers/grammarConfig.native.js +187 -2
  256. package/dist/esm/helpers/grammarConfig.native.js.map +1 -1
  257. package/dist/esm/helpers/insertStyleRule.mjs +5 -2
  258. package/dist/esm/helpers/insertStyleRule.mjs.map +1 -1
  259. package/dist/esm/helpers/insertStyleRule.native.js +7 -2
  260. package/dist/esm/helpers/insertStyleRule.native.js.map +1 -1
  261. package/dist/esm/helpers/log.mjs +9 -8
  262. package/dist/esm/helpers/log.mjs.map +1 -1
  263. package/dist/esm/helpers/log.native.js +9 -8
  264. package/dist/esm/helpers/log.native.js.map +1 -1
  265. package/dist/esm/helpers/mergeVariants.mjs +44 -13
  266. package/dist/esm/helpers/mergeVariants.mjs.map +1 -1
  267. package/dist/esm/helpers/mergeVariants.native.js +79 -14
  268. package/dist/esm/helpers/mergeVariants.native.js.map +1 -1
  269. package/dist/esm/helpers/nativeOnlyProps.mjs +0 -1
  270. package/dist/esm/helpers/nativeOnlyProps.mjs.map +1 -1
  271. package/dist/esm/helpers/nativeOnlyProps.native.js +0 -1
  272. package/dist/esm/helpers/nativeOnlyProps.native.js.map +1 -1
  273. package/dist/esm/helpers/nativeStyleEngine.mjs +34 -15
  274. package/dist/esm/helpers/nativeStyleEngine.mjs.map +1 -1
  275. package/dist/esm/helpers/nativeStyleEngine.native.js +36 -15
  276. package/dist/esm/helpers/nativeStyleEngine.native.js.map +1 -1
  277. package/dist/esm/helpers/normalizeValueWithProperty.mjs +7 -8
  278. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +1 -1
  279. package/dist/esm/helpers/normalizeValueWithProperty.native.js +9 -8
  280. package/dist/esm/helpers/normalizeValueWithProperty.native.js.map +1 -1
  281. package/dist/esm/helpers/parseBorderShorthand.native.js +23 -56
  282. package/dist/esm/helpers/parseBorderShorthand.native.js.map +1 -1
  283. package/dist/esm/helpers/parseOutlineShorthand.native.js +10 -49
  284. package/dist/esm/helpers/parseOutlineShorthand.native.js.map +1 -1
  285. package/dist/esm/helpers/resolveSafeArea.mjs +35 -97
  286. package/dist/esm/helpers/resolveSafeArea.mjs.map +1 -1
  287. package/dist/esm/helpers/resolveVariantStyle.mjs +38 -0
  288. package/dist/esm/helpers/resolveVariantStyle.mjs.map +1 -0
  289. package/dist/esm/helpers/resolveVariantStyle.native.js +46 -0
  290. package/dist/esm/helpers/resolveVariantStyle.native.js.map +1 -0
  291. package/dist/esm/helpers/splitStyleProps.mjs +27 -0
  292. package/dist/esm/helpers/splitStyleProps.mjs.map +1 -0
  293. package/dist/esm/helpers/splitStyleProps.native.js +28 -0
  294. package/dist/esm/helpers/splitStyleProps.native.js.map +1 -0
  295. package/dist/esm/helpers/styleStaticConfig.mjs +8 -0
  296. package/dist/esm/helpers/styleStaticConfig.mjs.map +1 -0
  297. package/dist/esm/helpers/styleStaticConfig.native.js +8 -0
  298. package/dist/esm/helpers/styleStaticConfig.native.js.map +1 -0
  299. package/dist/esm/helpers/styleStaticConfigCore.mjs +88 -0
  300. package/dist/esm/helpers/styleStaticConfigCore.mjs.map +1 -0
  301. package/dist/esm/helpers/styleStaticConfigCore.native.js +106 -0
  302. package/dist/esm/helpers/styleStaticConfigCore.native.js.map +1 -0
  303. package/dist/esm/helpers/styledDynamic.mjs +136 -0
  304. package/dist/esm/helpers/styledDynamic.mjs.map +1 -0
  305. package/dist/esm/helpers/styledDynamic.native.js +169 -0
  306. package/dist/esm/helpers/styledDynamic.native.js.map +1 -0
  307. package/dist/esm/helpers/tokenCategories.mjs +12 -72
  308. package/dist/esm/helpers/tokenCategories.mjs.map +1 -1
  309. package/dist/esm/helpers/tokenCategories.native.js +12 -74
  310. package/dist/esm/helpers/tokenCategories.native.js.map +1 -1
  311. package/dist/esm/helpers/variableValue.mjs +17 -12
  312. package/dist/esm/helpers/variableValue.mjs.map +1 -1
  313. package/dist/esm/helpers/variableValue.native.js +46 -23
  314. package/dist/esm/helpers/variableValue.native.js.map +1 -1
  315. package/dist/esm/helpers/warnOnce.mjs +5 -4
  316. package/dist/esm/helpers/warnOnce.mjs.map +1 -1
  317. package/dist/esm/helpers/warnOnce.native.js +6 -4
  318. package/dist/esm/helpers/warnOnce.native.js.map +1 -1
  319. package/dist/esm/hooks/useAnimationDriver.mjs +2 -2
  320. package/dist/esm/hooks/useAnimationDriver.mjs.map +1 -1
  321. package/dist/esm/hooks/useAnimationDriver.native.js +2 -2
  322. package/dist/esm/hooks/useAnimationDriver.native.js.map +1 -1
  323. package/dist/esm/hooks/useComponentState.mjs +41 -82
  324. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  325. package/dist/esm/hooks/useComponentState.native.js +45 -84
  326. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  327. package/dist/esm/hooks/useMedia.mjs +2 -2
  328. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  329. package/dist/esm/hooks/useMedia.native.js +2 -2
  330. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  331. package/dist/esm/hooks/useSplitStyles.mjs +2 -2
  332. package/dist/esm/hooks/useSplitStyles.mjs.map +1 -1
  333. package/dist/esm/hooks/useSplitStyles.native.js +2 -2
  334. package/dist/esm/hooks/useSplitStyles.native.js.map +1 -1
  335. package/dist/esm/hooks/useStyle.mjs +11 -0
  336. package/dist/esm/hooks/useStyle.mjs.map +1 -0
  337. package/dist/esm/hooks/useStyle.native.js +11 -0
  338. package/dist/esm/hooks/useStyle.native.js.map +1 -0
  339. package/dist/esm/hooks/useThemeState.mjs +25 -90
  340. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  341. package/dist/esm/hooks/useThemeState.native.js +34 -94
  342. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  343. package/dist/esm/index.js +8 -8
  344. package/dist/esm/index.mjs +8 -8
  345. package/dist/esm/index.native.js +8 -8
  346. package/dist/esm/internal-runtime.mjs +8 -7
  347. package/dist/esm/internal-runtime.mjs.map +1 -1
  348. package/dist/esm/internal-runtime.native.js +8 -7
  349. package/dist/esm/internal-runtime.native.js.map +1 -1
  350. package/dist/esm/static-resolve.mjs +11 -9
  351. package/dist/esm/static-resolve.mjs.map +1 -1
  352. package/dist/esm/static-resolve.native.js +11 -9
  353. package/dist/esm/static-resolve.native.js.map +1 -1
  354. package/dist/esm/style.mjs +58 -0
  355. package/dist/esm/style.mjs.map +1 -0
  356. package/dist/esm/style.native.js +63 -0
  357. package/dist/esm/style.native.js.map +1 -0
  358. package/dist/esm/styled.mjs +17 -62
  359. package/dist/esm/styled.mjs.map +1 -1
  360. package/dist/esm/styled.native.js +17 -64
  361. package/dist/esm/styled.native.js.map +1 -1
  362. package/dist/esm/types.mjs +3 -21
  363. package/dist/esm/types.mjs.map +1 -1
  364. package/dist/esm/types.native.js +3 -21
  365. package/dist/esm/types.native.js.map +1 -1
  366. package/dist/esm/views/TamaguiProvider.mjs +1 -2
  367. package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
  368. package/dist/esm/views/TamaguiProvider.native.js +1 -2
  369. package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
  370. package/dist/esm/views/Text.mjs +21 -14
  371. package/dist/esm/views/Text.mjs.map +1 -1
  372. package/dist/esm/views/Text.native.js +4 -2
  373. package/dist/esm/views/Text.native.js.map +1 -1
  374. package/dist/esm/views/Theme.mjs +2 -2
  375. package/dist/esm/views/Theme.mjs.map +1 -1
  376. package/dist/esm/views/Theme.native.js +2 -2
  377. package/dist/esm/views/Theme.native.js.map +1 -1
  378. package/dist/esm/views/ThemeDebug.mjs +1 -4
  379. package/dist/esm/views/ThemeDebug.mjs.map +1 -1
  380. package/dist/esm/views/View.mjs +4 -2
  381. package/dist/esm/views/View.mjs.map +1 -1
  382. package/dist/esm/views/View.native.js +4 -2
  383. package/dist/esm/views/View.native.js.map +1 -1
  384. package/package.json +15 -15
  385. package/src/config.ts +1 -1
  386. package/src/createComponent.tsx +62 -31
  387. package/src/createStyledHOC.tsx +56 -9
  388. package/src/createTokens.ts +1 -1
  389. package/src/createVariable.ts +0 -10
  390. package/src/dom/html.tsx +778 -877
  391. package/src/dom/htmlRuntime.native.tsx +7 -3
  392. package/src/dom/primitives.native.tsx +30 -39
  393. package/src/helpers/borderComponents.ts +62 -0
  394. package/src/helpers/componentDisplayName.ts +0 -11
  395. package/src/helpers/createDesignSystem.ts +0 -2
  396. package/src/helpers/createStyledContext.tsx +15 -53
  397. package/src/helpers/formatDiagnostic.ts +11 -13
  398. package/src/helpers/getCSSStylesAtomic.native.ts +6 -3
  399. package/src/helpers/getCSSStylesAtomic.ts +197 -206
  400. package/src/helpers/getCSSStylesAtomicCompiled.ts +13 -1
  401. package/src/helpers/getDynamicVal.ts +4 -0
  402. package/src/helpers/getSplitStyles.tsx +2058 -4052
  403. package/src/helpers/grammarConfig.ts +218 -1
  404. package/src/helpers/insertStyleRule.tsx +4 -2
  405. package/src/helpers/log.ts +12 -11
  406. package/src/helpers/mergeVariants.ts +55 -18
  407. package/src/helpers/nativeOnlyProps.ts +0 -1
  408. package/src/helpers/nativeStyleEngine.ts +55 -14
  409. package/src/helpers/normalizeValueWithProperty.ts +10 -12
  410. package/src/helpers/parseBorderShorthand.native.ts +23 -45
  411. package/src/helpers/parseOutlineShorthand.native.ts +9 -40
  412. package/src/helpers/resolveSafeArea.ts +34 -101
  413. package/src/helpers/resolveVariantStyle.ts +77 -0
  414. package/src/helpers/splitStyleProps.ts +166 -0
  415. package/src/helpers/styleFrontend.ts +16 -9
  416. package/src/helpers/styleStaticConfig.ts +21 -0
  417. package/src/helpers/styleStaticConfigCore.ts +110 -0
  418. package/src/helpers/styledDynamic.ts +191 -0
  419. package/src/helpers/tokenCategories.ts +32 -88
  420. package/src/helpers/variableValue.ts +20 -15
  421. package/src/helpers/warnOnce.ts +5 -4
  422. package/src/hooks/useAnimationDriver.ts +6 -2
  423. package/src/hooks/useComponentState.ts +55 -183
  424. package/src/hooks/useMedia.tsx +10 -8
  425. package/src/hooks/useSplitStyles.tsx +17 -2
  426. package/src/hooks/useStyle.ts +10 -0
  427. package/src/hooks/useTheme.tsx +1 -1
  428. package/src/hooks/useThemeState.ts +51 -264
  429. package/src/index.ts +14 -10
  430. package/src/internal-runtime.ts +10 -9
  431. package/src/internalRuntimeTypes.ts +1 -0
  432. package/src/static-resolve.ts +25 -18
  433. package/src/style.ts +97 -0
  434. package/src/styled.tsx +46 -332
  435. package/src/types.tsx +107 -192
  436. package/src/views/TamaguiProvider.tsx +0 -2
  437. package/src/views/Text.tsx +26 -21
  438. package/src/views/Theme.tsx +10 -8
  439. package/src/views/ThemeDebug.tsx +0 -1
  440. package/src/views/View.tsx +6 -7
  441. package/types/createComponent.d.ts.map +1 -1
  442. package/types/createStyledHOC.d.ts.map +1 -1
  443. package/types/createVariable.d.ts +0 -2
  444. package/types/createVariable.d.ts.map +1 -1
  445. package/types/dom/html.d.ts.map +1 -1
  446. package/types/dom/htmlRuntime.native.d.ts.map +1 -1
  447. package/types/dom/primitives.native.d.ts.map +1 -1
  448. package/types/helpers/borderComponents.d.ts +10 -0
  449. package/types/helpers/borderComponents.d.ts.map +1 -0
  450. package/types/helpers/componentDisplayName.d.ts +0 -3
  451. package/types/helpers/componentDisplayName.d.ts.map +1 -1
  452. package/types/helpers/createDesignSystem.d.ts.map +1 -1
  453. package/types/helpers/createStyledContext.d.ts.map +1 -1
  454. package/types/helpers/formatDiagnostic.d.ts.map +1 -1
  455. package/types/helpers/getCSSStylesAtomic.d.ts +25 -22
  456. package/types/helpers/getCSSStylesAtomic.d.ts.map +1 -1
  457. package/types/helpers/getCSSStylesAtomic.native.d.ts +5 -0
  458. package/types/helpers/getCSSStylesAtomic.native.d.ts.map +1 -1
  459. package/types/helpers/getCSSStylesAtomicCompiled.d.ts +6 -1
  460. package/types/helpers/getCSSStylesAtomicCompiled.d.ts.map +1 -1
  461. package/types/helpers/getDynamicVal.d.ts.map +1 -1
  462. package/types/helpers/getSplitStyles.d.ts +9 -11
  463. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  464. package/types/helpers/grammarConfig.d.ts +25 -2
  465. package/types/helpers/grammarConfig.d.ts.map +1 -1
  466. package/types/helpers/insertStyleRule.d.ts +1 -0
  467. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  468. package/types/helpers/log.d.ts.map +1 -1
  469. package/types/helpers/mergeVariants.d.ts.map +1 -1
  470. package/types/helpers/nativeOnlyProps.d.ts +0 -1
  471. package/types/helpers/nativeOnlyProps.d.ts.map +1 -1
  472. package/types/helpers/nativeStyleEngine.d.ts +6 -0
  473. package/types/helpers/nativeStyleEngine.d.ts.map +1 -1
  474. package/types/helpers/normalizeValueWithProperty.d.ts.map +1 -1
  475. package/types/helpers/parseBorderShorthand.native.d.ts +1 -0
  476. package/types/helpers/parseBorderShorthand.native.d.ts.map +1 -1
  477. package/types/helpers/parseOutlineShorthand.native.d.ts.map +1 -1
  478. package/types/helpers/resolveSafeArea.d.ts +0 -1
  479. package/types/helpers/resolveSafeArea.d.ts.map +1 -1
  480. package/types/helpers/resolveVariantStyle.d.ts +3 -0
  481. package/types/helpers/resolveVariantStyle.d.ts.map +1 -0
  482. package/types/helpers/splitStyleProps.d.ts +44 -0
  483. package/types/helpers/splitStyleProps.d.ts.map +1 -0
  484. package/types/helpers/styleFrontend.d.ts +7 -9
  485. package/types/helpers/styleFrontend.d.ts.map +1 -1
  486. package/types/helpers/styleStaticConfig.d.ts +14 -0
  487. package/types/helpers/styleStaticConfig.d.ts.map +1 -0
  488. package/types/helpers/styleStaticConfigCore.d.ts +4 -0
  489. package/types/helpers/styleStaticConfigCore.d.ts.map +1 -0
  490. package/types/helpers/styledDynamic.d.ts +18 -0
  491. package/types/helpers/styledDynamic.d.ts.map +1 -0
  492. package/types/helpers/tokenCategories.d.ts +0 -1
  493. package/types/helpers/tokenCategories.d.ts.map +1 -1
  494. package/types/helpers/variableValue.d.ts.map +1 -1
  495. package/types/helpers/warnOnce.d.ts.map +1 -1
  496. package/types/helpers/webPropsToSkip.native.d.ts +68 -68
  497. package/types/hooks/useAnimationDriver.d.ts.map +1 -1
  498. package/types/hooks/useComponentState.d.ts.map +1 -1
  499. package/types/hooks/useMedia.d.ts.map +1 -1
  500. package/types/hooks/useSplitStyles.d.ts.map +1 -1
  501. package/types/hooks/useStyle.d.ts +4 -0
  502. package/types/hooks/useStyle.d.ts.map +1 -0
  503. package/types/hooks/useThemeState.d.ts +1 -11
  504. package/types/hooks/useThemeState.d.ts.map +1 -1
  505. package/types/index.d.ts +8 -8
  506. package/types/index.d.ts.map +1 -1
  507. package/types/internal-runtime.d.ts.map +1 -1
  508. package/types/internalRuntimeTypes.d.ts +1 -1
  509. package/types/internalRuntimeTypes.d.ts.map +1 -1
  510. package/types/static-resolve.d.ts +2 -2
  511. package/types/static-resolve.d.ts.map +1 -1
  512. package/types/style.d.ts +18 -0
  513. package/types/style.d.ts.map +1 -0
  514. package/types/styled.d.ts +12 -48
  515. package/types/styled.d.ts.map +1 -1
  516. package/types/types.d.ts +75 -60
  517. package/types/types.d.ts.map +1 -1
  518. package/types/views/TamaguiProvider.d.ts +1 -1
  519. package/types/views/TamaguiProvider.d.ts.map +1 -1
  520. package/types/views/Text.d.ts.map +1 -1
  521. package/types/views/Theme.d.ts.map +1 -1
  522. package/types/views/ThemeDebug.d.ts.map +1 -1
  523. package/types/views/View.d.ts.map +1 -1
  524. package/dist/cjs/helpers/directStyleCSS.cjs +0 -348
  525. package/dist/cjs/helpers/directStyleCSS.native.cjs +0 -20
  526. package/dist/cjs/helpers/directStyleCSS.native.js.map +0 -1
  527. package/dist/cjs/helpers/directStyleCSSCompiled.cjs +0 -40
  528. package/dist/cjs/helpers/directStyleCSSCompiled.native.cjs +0 -46
  529. package/dist/cjs/helpers/directStyleCSSCompiled.native.js +0 -48
  530. package/dist/cjs/helpers/directStyleCSSCompiled.native.js.map +0 -1
  531. package/dist/cjs/helpers/getDefaultProps.native.js.map +0 -1
  532. package/dist/cjs/helpers/getVariantExtras.cjs +0 -91
  533. package/dist/cjs/helpers/getVariantExtras.native.cjs +0 -94
  534. package/dist/cjs/helpers/getVariantExtras.native.js +0 -96
  535. package/dist/cjs/helpers/getVariantExtras.native.js.map +0 -1
  536. package/dist/cjs/helpers/themeable.cjs +0 -92
  537. package/dist/cjs/helpers/themeable.native.cjs +0 -95
  538. package/dist/cjs/helpers/themeable.native.js +0 -97
  539. package/dist/cjs/helpers/themeable.native.js.map +0 -1
  540. package/dist/cjs/hooks/useProps.cjs +0 -129
  541. package/dist/cjs/hooks/useProps.native.cjs +0 -135
  542. package/dist/cjs/hooks/useProps.native.js +0 -137
  543. package/dist/cjs/hooks/useProps.native.js.map +0 -1
  544. package/dist/esm/helpers/directStyleCSS.mjs +0 -320
  545. package/dist/esm/helpers/directStyleCSS.mjs.map +0 -1
  546. package/dist/esm/helpers/directStyleCSS.native.js +0 -1
  547. package/dist/esm/helpers/directStyleCSSCompiled.mjs +0 -11
  548. package/dist/esm/helpers/directStyleCSSCompiled.mjs.map +0 -1
  549. package/dist/esm/helpers/directStyleCSSCompiled.native.js +0 -15
  550. package/dist/esm/helpers/directStyleCSSCompiled.native.js.map +0 -1
  551. package/dist/esm/helpers/getDefaultProps.mjs +0 -4
  552. package/dist/esm/helpers/getDefaultProps.mjs.map +0 -1
  553. package/dist/esm/helpers/getDefaultProps.native.js +0 -6
  554. package/dist/esm/helpers/getDefaultProps.native.js.map +0 -1
  555. package/dist/esm/helpers/getVariantExtras.mjs +0 -69
  556. package/dist/esm/helpers/getVariantExtras.mjs.map +0 -1
  557. package/dist/esm/helpers/getVariantExtras.native.js +0 -70
  558. package/dist/esm/helpers/getVariantExtras.native.js.map +0 -1
  559. package/dist/esm/helpers/themeable.mjs +0 -67
  560. package/dist/esm/helpers/themeable.mjs.map +0 -1
  561. package/dist/esm/helpers/themeable.native.js +0 -68
  562. package/dist/esm/helpers/themeable.native.js.map +0 -1
  563. package/dist/esm/hooks/useProps.mjs +0 -100
  564. package/dist/esm/hooks/useProps.mjs.map +0 -1
  565. package/dist/esm/hooks/useProps.native.js +0 -104
  566. package/dist/esm/hooks/useProps.native.js.map +0 -1
  567. package/src/helpers/directStyleCSS.native.ts +0 -1
  568. package/src/helpers/directStyleCSS.ts +0 -534
  569. package/src/helpers/directStyleCSSCompiled.ts +0 -32
  570. package/src/helpers/getDefaultProps.ts +0 -3
  571. package/src/helpers/getVariantExtras.tsx +0 -95
  572. package/src/helpers/themeable.tsx +0 -96
  573. package/src/hooks/useProps.tsx +0 -186
  574. package/types/helpers/directStyleCSS.d.ts +0 -28
  575. package/types/helpers/directStyleCSS.d.ts.map +0 -1
  576. package/types/helpers/directStyleCSS.native.d.ts +0 -2
  577. package/types/helpers/directStyleCSS.native.d.ts.map +0 -1
  578. package/types/helpers/directStyleCSSCompiled.d.ts +0 -10
  579. package/types/helpers/directStyleCSSCompiled.d.ts.map +0 -1
  580. package/types/helpers/getDefaultProps.d.ts +0 -3
  581. package/types/helpers/getDefaultProps.d.ts.map +0 -1
  582. package/types/helpers/getVariantExtras.d.ts +0 -4
  583. package/types/helpers/getVariantExtras.d.ts.map +0 -1
  584. package/types/helpers/themeable.d.ts +0 -3
  585. package/types/helpers/themeable.d.ts.map +0 -1
  586. package/types/hooks/useProps.d.ts +0 -39
  587. package/types/hooks/useProps.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,70 +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
- ]
130
- }
131
-
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 interface AtomicSlotEntry {
140
- property: string
141
- value: any
142
- condition: number
143
- identity: string
144
- selector: string
145
- wrappers: readonly string[] | undefined
146
- /** authored value, carried only on deferred platform-pseudo passes so an
147
- * inline conversion preserves provenance */
148
- original?: any
226
+ return [key, value, identifier, undefined, rules]
149
227
  }
150
228
 
229
+ // atomic key -> signature -> identity. two levels so a pass never builds and
230
+ // hashes one long combined key per slot
151
231
  const slotIdentities = new Map<string, Map<string, SlotIdentity>>()
152
- let slotIdentitiesSize = 0
153
-
154
- // raw-value memo in front of the normalized identity: a repeat authored value
155
- // skips normalization and signature building entirely. pure memoization - two
156
- // raw spellings that normalize alike still share one identity through the
157
- // normalized signature they both resolve to.
158
- const rawSlotIdentities = new Map<string, Map<unknown, SlotIdentity>>()
159
- let rawSlotIdentitiesSize = 0
160
-
161
- export function probeRawSlotIdentity(
162
- property: string,
163
- raw: unknown
164
- ): SlotIdentity | undefined {
165
- syncAtomicConfig()
166
- return rawSlotIdentities.get(property)?.get(raw)
167
- }
168
-
169
- export function storeRawSlotIdentity(
170
- property: string,
171
- raw: unknown,
172
- identity: SlotIdentity
173
- ) {
174
- if (rawSlotIdentitiesSize > 10_000) {
175
- rawSlotIdentities.clear()
176
- rawSlotIdentitiesSize = 0
177
- }
178
- let byRaw = rawSlotIdentities.get(property)
179
- if (!byRaw) {
180
- byRaw = new Map()
181
- rawSlotIdentities.set(property, byRaw)
182
- }
183
- byRaw.set(raw, identity)
184
- rawSlotIdentitiesSize++
185
- }
232
+ let slotIdentityCount = 0
186
233
 
187
234
  function syncAtomicConfig() {
188
235
  const nextConf = getConfigMaybe()
@@ -191,32 +238,8 @@ function syncAtomicConfig() {
191
238
  conf = nextConf
192
239
  confRevision = nextRevision
193
240
  slotIdentities.clear()
194
- slotIdentitiesSize = 0
195
- rawSlotIdentities.clear()
196
- rawSlotIdentitiesSize = 0
241
+ slotIdentityCount = 0
197
242
  }
198
- return nextConf
199
- }
200
-
201
- function slotClassRepetitions(atomicKey: string, condition: number): number {
202
- const base =
203
- atomicKey === 'containerName' || atomicKey === 'containerType'
204
- ? condition
205
- ? Math.max(
206
- 2,
207
- 1 +
208
- ((Math.floor(condition / 256) >>> 23) & 7) +
209
- (Math.floor(condition / 256) >>> 26) * 6 -
210
- ((condition >>> 5) & 7)
211
- )
212
- : 2
213
- : condition
214
- ? 1 +
215
- ((Math.floor(condition / 256) >>> 23) & 7) +
216
- (Math.floor(condition / 256) >>> 26) * 6 -
217
- ((condition >>> 5) & 7)
218
- : 1
219
- return base
220
243
  }
221
244
 
222
245
  export function buildAtomicSlotCSS(
@@ -225,85 +248,59 @@ export function buildAtomicSlotCSS(
225
248
  signature: string
226
249
  ): SlotIdentity | undefined {
227
250
  if (process.env.TAMAGUI_DID_OUTPUT_CSS) return
228
- // media queries and shorthands come from the config, so an identity built
229
- // under one config says nothing about the rules under another
230
251
  syncAtomicConfig()
231
- let byKey = slotIdentities.get(atomicKey)
232
- 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)
233
255
  if (known) return known
234
256
 
235
257
  const hash = simpleHash(signature, 'strict') || '0'
236
- let shortProp = ''
237
- for (let index = 0; index < atomicKey.length; index++) {
238
- const code = atomicKey.charCodeAt(index)
239
- if (
240
- (index === 0 ||
241
- (code >= 65 && code <= 90) ||
242
- atomicKey.charCodeAt(index - 1) === 45) &&
243
- ((code >= 65 && code <= 90) || (code >= 97 && code <= 122))
244
- ) {
245
- shortProp += atomicKey[index].toLowerCase()
246
- }
247
- }
248
- shortProp ||= 'x'
258
+ const shortProp = getShortProp(atomicKey)
249
259
  let identifier = `_${shortProp}-${hash}`
250
- if (atomicKey === 'pointerEvents' && entries.length === 1 && !entries[0].condition) {
251
- const value = entries[0].value
260
+ if (atomicKey === 'pointerEvents' && entries.length === 1 && !entries[0][2]) {
261
+ const value = entries[0][1]
252
262
  if (value === 'box-none') identifier = '_pe-boxnone'
253
263
  else if (value === 'box-only') identifier = '_pe-boxonly'
254
264
  }
255
265
 
256
- // entries arrive ordered (base first, conditionals ascending precedence)
257
- // and normalized: the slot signature was built from exactly this sequence
258
266
  const rules: string[] = []
259
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
+ }
260
275
  for (const entry of entries) {
261
- // values arrive normalized: the slot signature normalized them so the
262
- // identity hash and the rule text agree
263
- const value = entry.value
276
+ const value = entry[1]
264
277
  lastValue = value
265
278
  const entryRules = createAtomicRules(
266
279
  identifier,
267
- entry.property,
280
+ entry[0],
268
281
  value,
269
- entry.selector,
270
- entry.wrappers,
282
+ entry[4],
283
+ entry[5],
271
284
  2,
272
- slotClassRepetitions(atomicKey, entry.condition)
285
+ Math.max(
286
+ layered ? 1 + (entry[7]! >> 5) : 1,
287
+ atomicKey === 'containerName' || atomicKey === 'containerType' ? 2 : 1
288
+ )
273
289
  )
274
290
  for (const rule of entryRules) rules.push(rule)
275
291
  }
276
292
 
277
- const built: SlotIdentity = { identifier, rules, value: lastValue }
278
- if (slotIdentitiesSize > 10_000) {
293
+ const built: SlotIdentity = [identifier, rules, lastValue]
294
+ if (slotIdentityCount > 10_000) {
279
295
  slotIdentities.clear()
280
- slotIdentitiesSize = 0
281
- byKey = undefined
282
- }
283
- if (!byKey) {
284
- byKey = new Map()
285
- slotIdentities.set(atomicKey, byKey)
296
+ slotIdentityCount = 0
297
+ slotIdentities.set(atomicKey, (bySignature = new Map()))
286
298
  }
287
- byKey.set(signature, built)
288
- slotIdentitiesSize++
299
+ slotIdentityCount++
300
+ bySignature.set(signature, built)
289
301
  return built
290
302
  }
291
303
 
292
- function createDeclarationBlock(
293
- style: [string, any][],
294
- important = false,
295
- trailingSemicolon = true
296
- ) {
297
- let next = ''
298
- for (let index = 0; index < style.length; index++) {
299
- const [key, value] = style[index]
300
- next += `${hyphenateStyleName(key)}:${value}${important ? ' !important' : ''}${
301
- trailingSemicolon || index < style.length - 1 ? ';' : ''
302
- }`
303
- }
304
- return `{${next}}`
305
- }
306
-
307
304
  const hcache = {}
308
305
  const toHyphenLower = (match: string) => `-${match.toLowerCase()}`
309
306
  const hyphenateStyleName = (key: string) => {
@@ -313,6 +310,10 @@ const hyphenateStyleName = (key: string) => {
313
310
  return val
314
311
  }
315
312
 
313
+ function declaration(key: string, value: any, important = false) {
314
+ return `${hyphenateStyleName(key)}:${value}${important ? ' !important' : ''};`
315
+ }
316
+
316
317
  function createAtomicRules(
317
318
  identifier: string,
318
319
  property: string,
@@ -322,7 +323,6 @@ function createAtomicRules(
322
323
  direct: boolean | 2 = false,
323
324
  classRepetitions = 1
324
325
  ): string[] {
325
- // longhands get .cls.cls for higher specificity over shorthands
326
326
  const repetitions =
327
327
  direct && classRepetitions > 1
328
328
  ? classRepetitions
@@ -333,51 +333,42 @@ function createAtomicRules(
333
333
  const selector = `${cls}${condition}`
334
334
 
335
335
  let rules: string[] = []
336
-
337
- // Handle non-standard properties and object values that require multiple
338
- // CSS rules to be created.
339
336
  switch (property) {
340
- // Equivalent to using '::placeholder'
341
337
  case 'placeholderTextColor': {
342
- const block = createDeclarationBlock(
343
- [
344
- ['color', value],
345
- ['opacity', 1],
346
- ],
347
- false
338
+ rules.push(
339
+ `${selector}::placeholder{${declaration('color', value)}${declaration('opacity', 1)}}`
348
340
  )
349
- rules.push(`${selector}::placeholder${block}`)
350
341
  break
351
342
  }
352
343
 
353
- // 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
+
354
355
  case 'backgroundClip':
355
356
  case 'userSelect': {
356
357
  const propertyCapitalized = `${property[0].toUpperCase()}${property.slice(1)}`
357
358
  const webkitProperty = `Webkit${propertyCapitalized}`
358
- const block = createDeclarationBlock(
359
- [
360
- [property, value],
361
- [webkitProperty, value],
362
- ],
363
- false
359
+ rules.push(
360
+ `${selector}{${declaration(property, value)}${declaration(webkitProperty, value)}}`
364
361
  )
365
- rules.push(`${selector}${block}`)
366
362
  break
367
363
  }
368
364
 
369
- // Polyfill for additional 'pointer-events' values
370
365
  case 'pointerEvents': {
371
366
  if (direct) {
372
367
  const subject = value === 'none' || value === 'box-none' ? 'none' : 'auto'
373
368
  const children = value === 'none' || value === 'box-only' ? 'none' : 'auto'
374
369
  rules.push(
375
- `${selector}${createDeclarationBlock([['pointerEvents', subject]], false, false)}`,
376
- `${selector}>*${createDeclarationBlock(
377
- [['pointerEvents', children]],
378
- false,
379
- false
380
- )}`
370
+ `${selector}{pointer-events:${subject}}`,
371
+ `${selector}>*{pointer-events:${children}}`
381
372
  )
382
373
  break
383
374
  }
@@ -387,19 +378,19 @@ function createAtomicRules(
387
378
  } else if (value === 'none' || value === 'box-none') {
388
379
  finalValue = 'none'
389
380
  }
390
- const block = createDeclarationBlock([['pointerEvents', finalValue]], true)
391
- rules.push(`${selector}${block}`)
381
+ rules.push(`${selector}{${declaration('pointerEvents', finalValue, true)}}`)
392
382
  break
393
383
  }
394
384
 
395
385
  default: {
396
- const block = createDeclarationBlock([[property, value]], false, !direct)
397
- rules.push(`${selector}${block}`)
386
+ let output = declaration(property, value)
387
+ if (direct) output = output.slice(0, -1)
388
+ rules.push(`${selector}{${output}}`)
398
389
  break
399
390
  }
400
391
  }
401
392
 
402
- if (wrappers?.length) {
393
+ if (wrappers) {
403
394
  for (let ruleIndex = 0; ruleIndex < rules.length; ruleIndex++) {
404
395
  let rule = rules[ruleIndex]
405
396
  for (let index = wrappers.length - 1; index >= 0; index--) {
@@ -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
  /**