@tamagui/core 1.0.0-beta.187 → 1.0.0-beta.2

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 (273) hide show
  1. package/dist/cjs/Tamagui.js +18 -1
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/ThemeContext.js +4 -0
  4. package/dist/cjs/ThemeManager.js +30 -14
  5. package/dist/cjs/ThemeManager.js.map +2 -2
  6. package/dist/cjs/conf.js +10 -1
  7. package/dist/cjs/conf.js.map +2 -2
  8. package/dist/cjs/constants/constants.js +6 -0
  9. package/dist/cjs/constants/platform.js +15 -0
  10. package/dist/cjs/constants/platform.js.map +2 -2
  11. package/dist/cjs/constants/rnw.js +4 -0
  12. package/dist/cjs/contexts/ButtonInsideButtonContext.js +4 -0
  13. package/dist/cjs/createComponent.js +156 -130
  14. package/dist/cjs/createComponent.js.map +2 -2
  15. package/dist/cjs/createFont.js +4 -0
  16. package/dist/cjs/createShorthands.js +4 -0
  17. package/dist/cjs/createTamagui.js +56 -27
  18. package/dist/cjs/createTamagui.js.map +2 -2
  19. package/dist/cjs/createTheme.js +4 -0
  20. package/dist/cjs/createTokens.js +7 -6
  21. package/dist/cjs/createTokens.js.map +2 -2
  22. package/dist/cjs/createVariable.js +18 -2
  23. package/dist/cjs/createVariable.js.map +2 -2
  24. package/dist/cjs/defaultComponentState.js +0 -30
  25. package/dist/cjs/defaultComponentState.js.map +3 -3
  26. package/dist/cjs/helpers/RNComponents.js +38 -0
  27. package/dist/cjs/helpers/RNComponents.js.map +7 -0
  28. package/dist/cjs/helpers/addStylesUsingClassname.js +19 -16
  29. package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
  30. package/dist/cjs/helpers/areEqualSets.js +4 -0
  31. package/dist/cjs/helpers/createMediaStyle.js +5 -0
  32. package/dist/cjs/helpers/createPropMapper.js +63 -61
  33. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  34. package/dist/cjs/helpers/createShallowUpdate.js +55 -0
  35. package/dist/cjs/helpers/createShallowUpdate.js.map +7 -0
  36. package/dist/cjs/helpers/createTamaguiProvider.js +5 -5
  37. package/dist/cjs/helpers/createTamaguiProvider.js.map +2 -2
  38. package/dist/cjs/helpers/extendStaticConfig.js +9 -6
  39. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  40. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  41. package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
  42. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  43. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  44. package/dist/cjs/helpers/getSize.js +35 -0
  45. package/dist/cjs/helpers/getSize.js.map +7 -0
  46. package/dist/cjs/helpers/getSplitStyles.js +152 -64
  47. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  48. package/dist/cjs/helpers/getStylesAtomic.js +20 -2
  49. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  50. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  51. package/dist/cjs/helpers/insertStyleRule.js +46 -26
  52. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  53. package/dist/cjs/helpers/isObj.js +4 -0
  54. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  55. package/dist/cjs/helpers/matchMedia.js +4 -0
  56. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  57. package/dist/cjs/helpers/proxyThemeVariables.js +40 -0
  58. package/dist/cjs/helpers/proxyThemeVariables.js.map +7 -0
  59. package/dist/cjs/helpers/themeable.js +7 -2
  60. package/dist/cjs/helpers/themeable.js.map +2 -2
  61. package/dist/cjs/helpers/validate.js +53 -11
  62. package/dist/cjs/helpers/validate.js.map +2 -2
  63. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  64. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  65. package/dist/cjs/hooks/useConstant.js +4 -0
  66. package/dist/cjs/hooks/useFeatures.js +101 -12
  67. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  68. package/dist/cjs/hooks/useIsMounted.js +4 -0
  69. package/dist/cjs/hooks/useIsTouchDevice.js +8 -4
  70. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  71. package/dist/cjs/hooks/useMedia.js +30 -12
  72. package/dist/cjs/hooks/useMedia.js.map +2 -2
  73. package/dist/cjs/hooks/usePressable.js +4 -0
  74. package/dist/cjs/hooks/useTheme.js +36 -23
  75. package/dist/cjs/hooks/useTheme.js.map +2 -2
  76. package/dist/cjs/hooks/useUnmountEffect.js +4 -0
  77. package/dist/cjs/index.js +15 -0
  78. package/dist/cjs/index.js.map +2 -2
  79. package/dist/cjs/static.js +3 -0
  80. package/dist/cjs/static.js.map +2 -2
  81. package/dist/cjs/styled.js +8 -15
  82. package/dist/cjs/styled.js.map +2 -2
  83. package/dist/cjs/types-rnw.js.map +1 -1
  84. package/dist/cjs/types.js.map +1 -1
  85. package/dist/cjs/views/Stack.js +5 -0
  86. package/dist/cjs/views/Stack.js.map +2 -2
  87. package/dist/cjs/views/Text.js +5 -0
  88. package/dist/cjs/views/Text.js.map +2 -2
  89. package/dist/cjs/views/TextAncestorContext.js +6 -0
  90. package/dist/cjs/views/Theme.js +11 -4
  91. package/dist/cjs/views/Theme.js.map +2 -2
  92. package/dist/cjs/views/ThemeInverse.js +5 -0
  93. package/dist/cjs/views/ThemeProvider.js +6 -1
  94. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  95. package/dist/cjs/views/ThemeReset.js +4 -0
  96. package/dist/esm/Tamagui.js +10 -2
  97. package/dist/esm/Tamagui.js.map +2 -2
  98. package/dist/esm/ThemeManager.js +21 -11
  99. package/dist/esm/ThemeManager.js.map +2 -2
  100. package/dist/esm/conf.js +0 -1
  101. package/dist/esm/conf.js.map +2 -2
  102. package/dist/esm/constants/platform.js +2 -0
  103. package/dist/esm/constants/platform.js.map +2 -2
  104. package/dist/esm/createComponent.js +146 -133
  105. package/dist/esm/createComponent.js.map +2 -2
  106. package/dist/esm/createTamagui.js +53 -28
  107. package/dist/esm/createTamagui.js.map +2 -2
  108. package/dist/esm/createTokens.js +2 -6
  109. package/dist/esm/createTokens.js.map +2 -2
  110. package/dist/esm/createVariable.js +8 -2
  111. package/dist/esm/createVariable.js.map +2 -2
  112. package/dist/esm/defaultComponentState.js +0 -11
  113. package/dist/esm/defaultComponentState.js.map +3 -3
  114. package/dist/esm/helpers/RNComponents.js +12 -0
  115. package/dist/esm/helpers/RNComponents.js.map +7 -0
  116. package/dist/esm/helpers/addStylesUsingClassname.js +16 -18
  117. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  118. package/dist/esm/helpers/createPropMapper.js +59 -61
  119. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  120. package/dist/esm/helpers/createShallowUpdate.js +19 -0
  121. package/dist/esm/helpers/createShallowUpdate.js.map +7 -0
  122. package/dist/esm/helpers/createTamaguiProvider.js +1 -4
  123. package/dist/esm/helpers/createTamaguiProvider.js.map +2 -2
  124. package/dist/esm/helpers/extendStaticConfig.js +9 -6
  125. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  126. package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
  127. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  128. package/dist/esm/helpers/getSize.js +13 -0
  129. package/dist/esm/helpers/getSize.js.map +7 -0
  130. package/dist/esm/helpers/getSplitStyles.js +152 -67
  131. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  132. package/dist/esm/helpers/getStylesAtomic.js +15 -2
  133. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  134. package/dist/esm/helpers/insertStyleRule.js +36 -26
  135. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  136. package/dist/esm/helpers/proxyThemeVariables.js +18 -0
  137. package/dist/esm/helpers/proxyThemeVariables.js.map +7 -0
  138. package/dist/esm/helpers/themeable.js +3 -2
  139. package/dist/esm/helpers/themeable.js.map +2 -2
  140. package/dist/esm/helpers/validate.js +24 -11
  141. package/dist/esm/helpers/validate.js.map +2 -2
  142. package/dist/esm/hooks/useFeatures.js +96 -17
  143. package/dist/esm/hooks/useFeatures.js.map +2 -2
  144. package/dist/esm/hooks/useIsTouchDevice.js +6 -6
  145. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  146. package/dist/esm/hooks/useMedia.js +19 -12
  147. package/dist/esm/hooks/useMedia.js.map +2 -2
  148. package/dist/esm/hooks/useTheme.js +28 -23
  149. package/dist/esm/hooks/useTheme.js.map +2 -2
  150. package/dist/esm/index.js +4 -0
  151. package/dist/esm/index.js.map +2 -2
  152. package/dist/esm/static.js +3 -0
  153. package/dist/esm/static.js.map +2 -2
  154. package/dist/esm/styled.js +4 -12
  155. package/dist/esm/styled.js.map +2 -2
  156. package/dist/esm/views/Stack.js +1 -0
  157. package/dist/esm/views/Stack.js.map +2 -2
  158. package/dist/esm/views/Text.js +1 -0
  159. package/dist/esm/views/Text.js.map +2 -2
  160. package/dist/esm/views/Theme.js +7 -4
  161. package/dist/esm/views/Theme.js.map +2 -2
  162. package/dist/esm/views/ThemeProvider.js +2 -1
  163. package/dist/esm/views/ThemeProvider.js.map +2 -2
  164. package/dist/jsx/Tamagui.js +10 -2
  165. package/dist/jsx/ThemeManager.js +21 -11
  166. package/dist/jsx/conf.js +0 -1
  167. package/dist/jsx/constants/platform.js +2 -0
  168. package/dist/jsx/createComponent.js +139 -127
  169. package/dist/jsx/createTamagui.js +53 -28
  170. package/dist/jsx/createTokens.js +2 -6
  171. package/dist/jsx/createVariable.js +8 -2
  172. package/dist/jsx/defaultComponentState.js +0 -11
  173. package/dist/jsx/helpers/RNComponents.js +11 -0
  174. package/dist/jsx/helpers/addStylesUsingClassname.js +16 -18
  175. package/dist/jsx/helpers/createPropMapper.js +59 -61
  176. package/dist/jsx/helpers/createShallowUpdate.js +18 -0
  177. package/dist/jsx/helpers/createTamaguiProvider.js +1 -2
  178. package/dist/jsx/helpers/extendStaticConfig.js +9 -6
  179. package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
  180. package/dist/jsx/helpers/getSize.js +12 -0
  181. package/dist/jsx/helpers/getSplitStyles.js +152 -67
  182. package/dist/jsx/helpers/getStylesAtomic.js +15 -2
  183. package/dist/jsx/helpers/insertStyleRule.js +36 -26
  184. package/dist/jsx/helpers/proxyThemeVariables.js +17 -0
  185. package/dist/jsx/helpers/themeable.js +3 -3
  186. package/dist/jsx/helpers/validate.js +24 -11
  187. package/dist/jsx/hooks/useFeatures.js +96 -17
  188. package/dist/jsx/hooks/useIsTouchDevice.js +6 -6
  189. package/dist/jsx/hooks/useMedia.js +19 -12
  190. package/dist/jsx/hooks/useTheme.js +28 -23
  191. package/dist/jsx/index.js +4 -0
  192. package/dist/jsx/static.js +3 -0
  193. package/dist/jsx/styled.js +4 -12
  194. package/dist/jsx/views/Stack.js +1 -0
  195. package/dist/jsx/views/Text.js +1 -0
  196. package/dist/jsx/views/Theme.js +7 -4
  197. package/dist/jsx/views/ThemeProvider.js +2 -2
  198. package/package.json +6 -6
  199. package/types/Tamagui.d.ts +18 -1
  200. package/types/Tamagui.d.ts.map +1 -1
  201. package/types/ThemeManager.d.ts +3 -3
  202. package/types/ThemeManager.d.ts.map +1 -1
  203. package/types/conf.d.ts +2 -0
  204. package/types/conf.d.ts.map +1 -1
  205. package/types/constants/platform.d.ts +1 -0
  206. package/types/constants/platform.d.ts.map +1 -1
  207. package/types/createComponent.d.ts +5 -7
  208. package/types/createComponent.d.ts.map +1 -1
  209. package/types/createFont.d.ts +1 -1
  210. package/types/createFont.d.ts.map +1 -1
  211. package/types/createTamagui.d.ts +3 -1
  212. package/types/createTamagui.d.ts.map +1 -1
  213. package/types/createTokens.d.ts +0 -26
  214. package/types/createTokens.d.ts.map +1 -1
  215. package/types/createVariable.d.ts +1 -0
  216. package/types/createVariable.d.ts.map +1 -1
  217. package/types/defaultComponentState.d.ts +0 -12
  218. package/types/defaultComponentState.d.ts.map +1 -1
  219. package/types/helpers/RNComponents.d.ts +2 -0
  220. package/types/helpers/RNComponents.d.ts.map +1 -0
  221. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  222. package/types/helpers/createPropMapper.d.ts +2 -2
  223. package/types/helpers/createPropMapper.d.ts.map +1 -1
  224. package/types/helpers/createShallowUpdate.d.ts +4 -0
  225. package/types/helpers/createShallowUpdate.d.ts.map +1 -0
  226. package/types/helpers/createTamaguiProvider.d.ts +1 -1
  227. package/types/helpers/createTamaguiProvider.d.ts.map +1 -1
  228. package/types/helpers/extendStaticConfig.d.ts +2 -2
  229. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  230. package/types/helpers/getSize.d.ts +3 -0
  231. package/types/helpers/getSize.d.ts.map +1 -0
  232. package/types/helpers/getSplitStyles.d.ts +15 -18
  233. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  234. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  235. package/types/helpers/insertStyleRule.d.ts +2 -1
  236. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  237. package/types/helpers/proxyThemeVariables.d.ts +2 -0
  238. package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
  239. package/types/helpers/themeable.d.ts +3 -1
  240. package/types/helpers/themeable.d.ts.map +1 -1
  241. package/types/helpers/validate.d.ts.map +1 -1
  242. package/types/hooks/useFeatures.d.ts +7 -5
  243. package/types/hooks/useFeatures.d.ts.map +1 -1
  244. package/types/hooks/useMedia.d.ts +2 -6
  245. package/types/hooks/useMedia.d.ts.map +1 -1
  246. package/types/hooks/useTheme.d.ts +1 -1
  247. package/types/hooks/useTheme.d.ts.map +1 -1
  248. package/types/index.d.ts +2 -0
  249. package/types/index.d.ts.map +1 -1
  250. package/types/static.d.ts +3 -0
  251. package/types/static.d.ts.map +1 -1
  252. package/types/styled.d.ts +13 -8
  253. package/types/styled.d.ts.map +1 -1
  254. package/types/types-rnw.d.ts +0 -5
  255. package/types/types-rnw.d.ts.map +1 -1
  256. package/types/types.d.ts +147 -106
  257. package/types/types.d.ts.map +1 -1
  258. package/types/views/Stack.d.ts +2 -2
  259. package/types/views/Stack.d.ts.map +1 -1
  260. package/types/views/Text.d.ts +2 -2
  261. package/types/views/Text.d.ts.map +1 -1
  262. package/types/views/Theme.d.ts +1 -0
  263. package/types/views/Theme.d.ts.map +1 -1
  264. package/types/views/ThemeProvider.d.ts +1 -0
  265. package/types/views/ThemeProvider.d.ts.map +1 -1
  266. package/LICENSE +0 -21
  267. package/dist/cjs/spacedChildren.js +0 -86
  268. package/dist/cjs/spacedChildren.js.map +0 -7
  269. package/dist/esm/spacedChildren.js +0 -52
  270. package/dist/esm/spacedChildren.js.map +0 -7
  271. package/dist/jsx/spacedChildren.js +0 -44
  272. package/types/spacedChildren.d.ts +0 -9
  273. package/types/spacedChildren.d.ts.map +0 -1
@@ -0,0 +1,35 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
+ var __getOwnPropNames = Object.getOwnPropertyNames;
4
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
5
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var getSize_exports = {};
20
+ __export(getSize_exports, {
21
+ getSize: () => getSize
22
+ });
23
+ module.exports = __toCommonJS(getSize_exports);
24
+ var import_conf = require("../conf");
25
+ const getSize = /* @__PURE__ */ __name((size, sizeUpOrDownBy = 0) => {
26
+ const sizes = (0, import_conf.getTokens)().size;
27
+ const sizeNames = Object.keys(sizes);
28
+ const key = sizeNames[Math.max(0, sizeNames.indexOf(String(size || "$4")) + sizeUpOrDownBy)];
29
+ return sizes[key] || sizes["$4"];
30
+ }, "getSize");
31
+ // Annotate the CommonJS export names for ESM import in node:
32
+ 0 && (module.exports = {
33
+ getSize
34
+ });
35
+ //# sourceMappingURL=getSize.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/getSize.ts"],
4
+ "sourcesContent": ["import { getTokens } from '../conf'\nimport { SizeTokens } from '../types'\n\nexport const getSize = (size?: SizeTokens | undefined, sizeUpOrDownBy = 0) => {\n const sizes = getTokens().size as any as SizeTokens\n const sizeNames = Object.keys(sizes)\n const key = sizeNames[Math.max(0, sizeNames.indexOf(String(size || '$4')) + sizeUpOrDownBy)]\n return (sizes[key] || sizes['$4']) as SizeTokens\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,kBAA0B;AAGnB,MAAM,UAAU,wBAAC,MAA+B,iBAAiB,MAAM;AAC5E,QAAM,QAAQ,2BAAU,EAAE;AAC1B,QAAM,YAAY,OAAO,KAAK,KAAK;AACnC,QAAM,MAAM,UAAU,KAAK,IAAI,GAAG,UAAU,QAAQ,OAAO,QAAQ,IAAI,CAAC,IAAI,cAAc;AAC1F,SAAQ,MAAM,QAAQ,MAAM;AAC9B,GALuB;",
6
+ "names": []
7
+ }
@@ -32,60 +32,85 @@ var __copyProps = (to, from, except, desc) => {
32
32
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
33
  var getSplitStyles_exports = {};
34
34
  __export(getSplitStyles_exports, {
35
- getSplitStyles: () => getSplitStyles
35
+ getSplitStyles: () => getSplitStyles,
36
+ getSubStyle: () => getSubStyle,
37
+ insertSplitStyles: () => insertSplitStyles,
38
+ normalizeStyleObject: () => normalizeStyleObject,
39
+ useSplitStyles: () => useSplitStyles
36
40
  });
37
41
  module.exports = __toCommonJS(getSplitStyles_exports);
38
42
  var import_helpers = require("@tamagui/helpers");
43
+ var import_react = require("react");
44
+ var import_conf = require("../conf");
39
45
  var import_platform = require("../constants/platform");
40
46
  var import_useMedia = require("../hooks/useMedia");
41
47
  var import_createMediaStyle = require("./createMediaStyle");
42
48
  var import_fixNativeShadow = require("./fixNativeShadow");
43
49
  var import_getStylesAtomic = require("./getStylesAtomic");
44
50
  var import_insertStyleRule = require("./insertStyleRule");
45
- const skipKeys = {
51
+ const skipProps = {
46
52
  animation: true,
47
- animated: true,
48
- children: true,
49
- key: true,
50
- ref: true
53
+ animateOnly: true,
54
+ debug: true
51
55
  };
52
- function normalizeStyleObject(style) {
53
- if (typeof style.flex === "number") {
54
- const val = style.flex;
55
- delete style.flex;
56
- style.flexGrow = style.flexGrow ?? val;
57
- style.flexShrink = style.flexShrink ?? 1;
58
- }
59
- if (!import_platform.isWeb) {
60
- (0, import_fixNativeShadow.fixNativeShadow)(style);
61
- }
62
- }
63
- __name(normalizeStyleObject, "normalizeStyleObject");
56
+ let conf;
64
57
  const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state, defaultClassNames) => {
65
- var _a, _b, _c;
58
+ var _a;
59
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
60
+ console.log(" \xBB getSplitStyles", { props, state, defaultClassNames });
61
+ }
62
+ conf = conf || (0, import_conf.getConfig)();
66
63
  const validStyleProps = staticConfig.isText ? import_helpers.stylePropsText : import_helpers.validStyles;
67
64
  const viewProps = {};
68
65
  const style = {};
69
66
  const classNames = __spreadValues({}, defaultClassNames);
70
67
  const pseudos = {};
71
68
  const medias = {};
69
+ const rulesToInsert = [];
70
+ function addStyle(prop, rule) {
71
+ rulesToInsert.push([prop, rule]);
72
+ (0, import_insertStyleRule.updateInsertedCache)(prop, rule);
73
+ }
74
+ __name(addStyle, "addStyle");
72
75
  let cur = null;
73
76
  let transforms = {};
74
77
  function mergeClassName(key, val) {
75
- if (!val)
78
+ if (!val) {
76
79
  return;
80
+ }
77
81
  if (val.startsWith("_transform-")) {
78
82
  const isMediaOrPseudo = key !== "transform";
79
83
  const isMedia = isMediaOrPseudo && key[11] === "_";
80
- const isPsuedo = isMediaOrPseudo && !isMedia;
84
+ const isPsuedo = isMediaOrPseudo && key[11] === "0" || key.endsWith("Style");
81
85
  const namespace = isMedia ? key.split("_")[2] : isPsuedo ? key.split("-")[1] : "transform";
82
- if (!import_insertStyleRule.insertedTransforms[val]) {
83
- (0, import_insertStyleRule.updateInserted)();
86
+ let transform = import_insertStyleRule.insertedTransforms[val];
87
+ if (import_platform.isClient) {
88
+ if (!transform) {
89
+ (0, import_insertStyleRule.updateInserted)();
90
+ transform = import_insertStyleRule.insertedTransforms[val];
91
+ }
92
+ if (!transform) {
93
+ if (import_platform.isWeb && val[0] !== "_") {
94
+ transform = val;
95
+ } else {
96
+ console.trace("?", key, val, cur, props, state);
97
+ }
98
+ }
99
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
100
+ console.log(" \xBB getSplitStyles mergeClassName transform", { key, val, namespace, transform, insertedTransforms: import_insertStyleRule.insertedTransforms });
101
+ }
102
+ if (process.env.NODE_ENV === "development") {
103
+ if (!transform) {
104
+ console.trace("NO TRANSFORM?", { key, val, transform });
105
+ }
106
+ }
84
107
  }
85
- const transform = import_insertStyleRule.insertedTransforms[val];
86
108
  transforms[namespace] = transforms[namespace] || ["", ""];
87
- transforms[namespace][0] += val.replace("_transform", "");
88
- transforms[namespace][1] += transform;
109
+ const identifier = val.replace("_transform", "");
110
+ transforms[namespace][0] += identifier;
111
+ if (transform) {
112
+ transforms[namespace][1] += transform;
113
+ }
89
114
  } else {
90
115
  classNames[key] = val;
91
116
  }
@@ -95,17 +120,21 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
95
120
  if (!cur)
96
121
  return;
97
122
  normalizeStyleObject(cur);
123
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
124
+ console.log(" \xBB getSplitStyles push", cur, state);
125
+ }
98
126
  if (import_platform.isWeb && !state.noClassNames) {
99
127
  const atomic = (0, import_getStylesAtomic.getStylesAtomic)(cur);
100
128
  for (const atomicStyle of atomic) {
101
129
  if (!state.noClassNames) {
130
+ addStyle(atomicStyle.identifier, atomicStyle.rules[0]);
102
131
  mergeClassName(atomicStyle.property, atomicStyle.identifier);
103
- (0, import_insertStyleRule.insertStyleRule)(atomicStyle.identifier, atomicStyle.rules[0]);
104
132
  } else {
105
133
  style[atomicStyle.property] = atomicStyle.value;
106
134
  }
107
135
  }
108
- } else {
136
+ }
137
+ if (!import_platform.isWeb || state.noClassNames || state.resolveVariablesAs === "value" || state.resolveVariablesAs === "both") {
109
138
  for (const key in cur) {
110
139
  if (key in import_helpers.stylePropsTransform) {
111
140
  (0, import_helpers.mergeTransform)(style, key, cur[key]);
@@ -118,30 +147,40 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
118
147
  }
119
148
  __name(push, "push");
120
149
  for (const keyInit in props) {
150
+ if (skipProps[keyInit]) {
151
+ continue;
152
+ }
121
153
  const valInit = props[keyInit];
122
- if (skipKeys[keyInit]) {
123
- viewProps[keyInit] = valInit;
154
+ if (keyInit === "style" || keyInit.startsWith("_style")) {
155
+ push();
156
+ cur = valInit;
157
+ push();
124
158
  continue;
125
159
  }
126
160
  if (keyInit === "className" || validStyleProps[keyInit] && valInit && valInit[0] === "_") {
127
161
  push();
128
162
  mergeClassName(keyInit, valInit);
129
- if (cur) {
130
- if (cur[keyInit])
131
- console.warn("just want to see how used");
132
- delete cur[keyInit];
133
- }
134
163
  continue;
135
164
  }
165
+ if (state.keepVariantsAsProps && staticConfig.defaultVariants && keyInit in staticConfig.defaultVariants) {
166
+ viewProps[keyInit] = valInit;
167
+ }
136
168
  let isMedia = keyInit[0] === "$";
137
169
  let isPseudo = import_helpers.validPseudoKeys[keyInit];
138
- const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, props, staticConfig, state.resolveVariablesAs);
170
+ if (!isMedia && !isPseudo && !((_a = staticConfig.variants) == null ? void 0 : _a[keyInit]) && !validStyleProps[keyInit] && !conf.shorthands[keyInit]) {
171
+ viewProps[keyInit] = valInit;
172
+ continue;
173
+ }
174
+ const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, state.fallbackProps || props, state.resolveVariablesAs);
139
175
  const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
176
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
177
+ console.log(" \xBB getSplitStyles", keyInit, expanded);
178
+ }
140
179
  for (const [key, val] of expanded) {
141
180
  if (val === void 0) {
142
181
  continue;
143
182
  }
144
- if (val && val[0] === "_") {
183
+ if (key !== "target" && val && val[0] === "_") {
145
184
  mergeClassName(key, val);
146
185
  continue;
147
186
  }
@@ -157,48 +196,46 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
157
196
  continue;
158
197
  }
159
198
  pseudos[key] = pseudos[key] || {};
160
- pseudos[key] = getSubStyle(val, staticConfig, theme, props, state.resolveVariablesAs, true);
199
+ pseudos[key] = getSubStyle(val, staticConfig, theme, props, state, true);
161
200
  if (import_platform.isWeb && !state.noClassNames) {
162
201
  const pseudoStyles = (0, import_getStylesAtomic.getStylesAtomic)({ [key]: pseudos[key] });
163
- if ((_b = (_a = pseudoStyles[0]) == null ? void 0 : _a.identifier) == null ? void 0 : _b.includes("undefined")) {
164
- console.warn("undefined bug?", (_c = pseudoStyles[0]) == null ? void 0 : _c.identifier);
165
- }
166
202
  for (const style2 of pseudoStyles) {
203
+ addStyle(style2.identifier, style2.rules[0]);
167
204
  mergeClassName(`${style2.property}-${key}`, style2.identifier);
168
- (0, import_insertStyleRule.insertStyleRule)(style2.identifier, style2.rules[0]);
169
205
  }
170
206
  }
171
207
  continue;
172
208
  }
173
209
  if (isMedia) {
174
- const mediaKey = key.slice(1);
175
- if (!import_useMedia.mediaQueryConfig[mediaKey]) {
176
- viewProps[key] = valInit;
210
+ const mediaKey = key;
211
+ const mediaKeyShort = mediaKey.slice(1);
212
+ if (!import_useMedia.mediaQueryConfig[mediaKeyShort]) {
213
+ viewProps[key] = val;
177
214
  continue;
178
215
  }
179
- const mediaStyle = getSubStyle(valInit, staticConfig, theme, props, state.resolveVariablesAs, true);
180
- if (import_platform.isWeb) {
216
+ const mediaStyle = getSubStyle(val, staticConfig, theme, props, state);
217
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
218
+ console.log(" \xBB getSplitStyles mediaStyle", mediaKey, mediaStyle, props);
219
+ }
220
+ const shouldDoClasses = import_platform.isWeb && !state.noClassNames;
221
+ if (shouldDoClasses) {
181
222
  const mediaStyles = (0, import_getStylesAtomic.getStylesAtomic)(mediaStyle);
182
223
  for (const style2 of mediaStyles) {
183
- const out2 = (0, import_createMediaStyle.createMediaStyle)(style2, mediaKey, import_useMedia.mediaQueryConfig);
224
+ const out2 = (0, import_createMediaStyle.createMediaStyle)(style2, mediaKeyShort, import_useMedia.mediaQueryConfig);
225
+ addStyle(out2.identifier, out2.styleRule);
184
226
  mergeClassName(`${out2.identifier}-${mediaKey}`, out2.identifier);
185
- (0, import_insertStyleRule.insertStyleRule)(out2.identifier, out2.styleRule);
186
- }
187
- if (import_useMedia.mediaState[mediaKey]) {
188
- Object.assign(medias, mediaStyle);
189
227
  }
190
228
  } else {
191
229
  if (import_useMedia.mediaState[mediaKey]) {
192
- Object.assign(style, mediaStyle);
230
+ push();
231
+ if (process.env.NODE_ENV === "development" && props["debug"]) {
232
+ console.log("apply media style", mediaKey, import_useMedia.mediaState);
233
+ }
234
+ Object.assign(shouldDoClasses ? medias : style, mediaStyle);
193
235
  }
194
236
  }
195
237
  continue;
196
238
  }
197
- if (key === "style" || key.startsWith("_style")) {
198
- push();
199
- Object.assign(style, val);
200
- continue;
201
- }
202
239
  if (!import_platform.isWeb && key === "pointerEvents") {
203
240
  viewProps[key] = val;
204
241
  continue;
@@ -221,26 +258,49 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
221
258
  for (const namespace in transforms) {
222
259
  const [hash, val] = transforms[namespace];
223
260
  const identifier = `_transform${hash}`;
224
- if (!import_insertStyleRule.insertedTransforms[identifier]) {
225
- const rule = `.${identifier} { transform: ${val}; }`;
226
- (0, import_insertStyleRule.insertStyleRule)(identifier, rule);
261
+ if (import_platform.isClient) {
262
+ if (!import_insertStyleRule.insertedTransforms[identifier]) {
263
+ const rule = `.${identifier} { transform: ${val}; }`;
264
+ addStyle(identifier, rule);
265
+ }
227
266
  }
228
267
  classNames[namespace] = identifier;
229
268
  }
230
269
  }
270
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
271
+ console.log(" \xBB getSplitStyles out", { style, pseudos, medias, classNames, viewProps, state });
272
+ }
231
273
  return {
232
274
  viewProps,
233
275
  style,
234
276
  medias,
235
277
  pseudos,
236
- classNames
278
+ classNames,
279
+ rulesToInsert
237
280
  };
238
281
  }, "getSplitStyles");
239
- const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, resolveVariablesAs, avoidDefaultProps) => {
282
+ const insertSplitStyles = /* @__PURE__ */ __name((...args) => {
283
+ const res = getSplitStyles(...args);
284
+ for (const [prop, rule] of res.rulesToInsert) {
285
+ (0, import_insertStyleRule.insertStyleRule)(prop, rule);
286
+ }
287
+ return res;
288
+ }, "insertSplitStyles");
289
+ const effect = import_react.useInsertionEffect || import_platform.useIsomorphicLayoutEffect;
290
+ const useSplitStyles = /* @__PURE__ */ __name((...args) => {
291
+ const res = getSplitStyles(...args);
292
+ effect(() => {
293
+ for (const [prop, rule] of res.rulesToInsert) {
294
+ (0, import_insertStyleRule.insertStyleRule)(prop, rule);
295
+ }
296
+ });
297
+ return res;
298
+ }, "useSplitStyles");
299
+ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, state, avoidDefaultProps) => {
240
300
  const styleOut = {};
241
301
  for (const key in styleIn) {
242
302
  const val = styleIn[key];
243
- const out = staticConfig.propMapper(key, val, theme, props, staticConfig, resolveVariablesAs, avoidDefaultProps);
303
+ const out = staticConfig.propMapper(key, val, theme, state.fallbackProps || props, state.resolveVariablesAs, avoidDefaultProps);
244
304
  const expanded = out === true || !out ? [[key, val]] : Object.entries(out);
245
305
  for (const [skey, sval] of expanded) {
246
306
  if (skey in import_helpers.stylePropsTransform) {
@@ -253,4 +313,32 @@ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props,
253
313
  normalizeStyleObject(styleOut);
254
314
  return styleOut;
255
315
  }, "getSubStyle");
316
+ function normalizeStyleObject(style) {
317
+ if (style.padding) {
318
+ const val = style.padding;
319
+ delete style.padding;
320
+ style.paddingLeft = val;
321
+ style.paddingTop = val;
322
+ style.paddingRight = val;
323
+ style.paddingBottom = val;
324
+ }
325
+ if (typeof style.flex === "number") {
326
+ const val = style.flex;
327
+ delete style.flex;
328
+ style.flexGrow = style.flexGrow ?? val;
329
+ style.flexShrink = style.flexShrink ?? 1;
330
+ }
331
+ if (!import_platform.isWeb) {
332
+ (0, import_fixNativeShadow.fixNativeShadow)(style);
333
+ }
334
+ }
335
+ __name(normalizeStyleObject, "normalizeStyleObject");
336
+ // Annotate the CommonJS export names for ESM import in node:
337
+ 0 && (module.exports = {
338
+ getSplitStyles,
339
+ getSubStyle,
340
+ insertSplitStyles,
341
+ normalizeStyleObject,
342
+ useSplitStyles
343
+ });
256
344
  //# sourceMappingURL=getSplitStyles.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/getSplitStyles.tsx"],
4
- "sourcesContent": ["import {\n mergeTransform,\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\nimport { ViewStyle } from 'react-native'\n\nimport { isWeb } from '../constants/platform'\nimport { ComponentState } from '../defaultComponentState'\nimport { mediaQueryConfig, mediaState } from '../hooks/useMedia'\nimport {\n MediaKeys,\n MediaQueryKey,\n PsuedoPropKeys,\n StackProps,\n StaticConfigParsed,\n ThemeObject,\n} from '../types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { ResolveVariableTypes } from './createPropMapper'\nimport { fixNativeShadow } from './fixNativeShadow'\nimport { ViewStyleWithPseudos, getStylesAtomic } from './getStylesAtomic'\nimport { insertStyleRule, insertedTransforms, updateInserted } from './insertStyleRule'\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\n\nconst skipKeys = {\n // could put events in here\n animation: true,\n animated: true,\n children: true,\n key: true,\n ref: true,\n}\n\nexport type PseudoStyles = {\n hoverStyle?: ViewStyle\n pressStyle?: ViewStyle\n focusStyle?: ViewStyle\n enterStyle?: ViewStyle\n exitStyle?: ViewStyle\n}\n\nexport type ClassNamesObject = Record<string, string>\n\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nfunction normalizeStyleObject(style: any) {\n // fix flex to match web\n // see spec for flex shorthand https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n if (typeof style.flex === 'number') {\n const val = style.flex\n delete style.flex\n style.flexGrow = style.flexGrow ?? val\n style.flexShrink = style.flexShrink ?? 1\n }\n\n if (!isWeb) {\n fixNativeShadow(style)\n }\n}\n\ntype TransformNamespaceKey = 'transform' | PsuedoPropKeys | MediaQueryKey\n\n// TODO can make a few of these objects lazy if profiling seems slow\n\nexport const getSplitStyles = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n state: Partial<ComponentState> & {\n noClassNames?: boolean\n resolveVariablesAs?: ResolveVariableTypes\n },\n defaultClassNames?: ClassNamesObject | null\n) => {\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: StackProps = {}\n const style: ViewStyle = {}\n const classNames: ClassNamesObject = {\n ...defaultClassNames,\n }\n const pseudos: PseudoStyles = {}\n const medias: Record<MediaKeys, ViewStyle> = {}\n let cur: ViewStyleWithPseudos | null = null\n\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n let transforms: Record<TransformNamespaceKey, [string, string]> = {}\n\n function mergeClassName(key: string, val: string) {\n if (!val) return\n if (val.startsWith('_transform-')) {\n const isMediaOrPseudo = key !== 'transform'\n const isMedia = isMediaOrPseudo && key[11] === '_'\n const isPsuedo = isMediaOrPseudo && !isMedia\n const namespace: TransformNamespaceKey = isMedia\n ? key.split('_')[2]\n : isPsuedo\n ? key.split('-')[1]\n : 'transform'\n if (!insertedTransforms[val]) {\n // HMR or loaded a new chunk\n updateInserted()\n }\n const transform = insertedTransforms[val]\n // if (!transform) {\n // console.error('NO TRANSFORM', key, val)\n // return\n // }\n transforms[namespace] = transforms[namespace] || ['', '']\n transforms[namespace][0] += val.replace('_transform', '')\n transforms[namespace][1] += transform\n } else {\n classNames[key] = val\n }\n }\n\n function push() {\n if (!cur) return\n normalizeStyleObject(cur)\n if (isWeb && !state.noClassNames) {\n const atomic = getStylesAtomic(cur)\n for (const atomicStyle of atomic) {\n if (!state.noClassNames) {\n mergeClassName(atomicStyle.property, atomicStyle.identifier)\n insertStyleRule(atomicStyle.identifier, atomicStyle.rules[0])\n } else {\n style[atomicStyle.property] = atomicStyle.value\n }\n }\n } else {\n for (const key in cur) {\n if (key in stylePropsTransform) {\n mergeTransform(style, key, cur[key])\n } else {\n style[key] = cur[key]\n }\n }\n }\n // reset it for next group of styles\n cur = null\n }\n\n for (const keyInit in props) {\n const valInit = props[keyInit]\n\n if (skipKeys[keyInit]) {\n viewProps[keyInit] = valInit\n continue\n }\n\n if (\n // isPropClassName\n keyInit === 'className' ||\n // isExtractedClassName\n (validStyleProps[keyInit] && valInit && valInit[0] === '_')\n ) {\n push()\n mergeClassName(keyInit, valInit)\n if (cur) {\n if (cur[keyInit]) console.warn('just want to see how used')\n delete cur[keyInit]\n }\n continue\n }\n\n let isMedia = keyInit[0] === '$'\n let isPseudo = validPseudoKeys[keyInit]\n\n const out =\n isMedia || isPseudo\n ? true\n : staticConfig.propMapper(\n keyInit,\n valInit,\n theme,\n props,\n staticConfig,\n state.resolveVariablesAs\n )\n\n const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out)\n\n for (const [key, val] of expanded) {\n if (val === undefined) {\n continue\n }\n\n if (val && val[0] === '_') {\n mergeClassName(key, val)\n continue\n }\n\n isMedia = key[0] === '$'\n isPseudo = validPseudoKeys[key]\n\n if (\n (staticConfig.deoptProps && staticConfig.deoptProps.has(key)) ||\n (staticConfig.inlineProps && staticConfig.inlineProps.has(key))\n ) {\n viewProps[key] = val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n if (key === 'enterStyle' && state.mounted) {\n // once mounted we can ignore enterStyle\n continue\n }\n pseudos[key] = pseudos[key] || {}\n pseudos[key] = getSubStyle(val, staticConfig, theme, props, state.resolveVariablesAs, true)\n if (isWeb && !state.noClassNames) {\n const pseudoStyles = getStylesAtomic({ [key]: pseudos[key] })\n if (pseudoStyles[0]?.identifier?.includes('undefined')) {\n console.warn('undefined bug?', pseudoStyles[0]?.identifier)\n }\n for (const style of pseudoStyles) {\n mergeClassName(`${style.property}-${key}`, style.identifier)\n insertStyleRule(style.identifier, style.rules[0])\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n const mediaKey = key.slice(1)\n\n if (!mediaQueryConfig[mediaKey]) {\n // this isn't a media key, pass through\n viewProps[key] = valInit\n continue\n }\n\n // dont check if media is active, we just apply *all* media styles\n // we combine the media props on top regular props, could proxy this\n // TODO test proxy here instead of merge\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n const mediaStyle = getSubStyle(\n valInit,\n staticConfig,\n theme,\n props,\n state.resolveVariablesAs,\n true\n )\n\n if (isWeb) {\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKey, mediaQueryConfig)\n mergeClassName(`${out.identifier}-${mediaKey}`, out.identifier)\n insertStyleRule(out.identifier, out.styleRule)\n }\n if (mediaState[mediaKey]) {\n Object.assign(medias, mediaStyle)\n }\n } else {\n if (mediaState[mediaKey]) {\n // TODO i think media + pseudo needs handling here\n Object.assign(style, mediaStyle)\n }\n }\n continue\n }\n\n // TODO\n if (key === 'style' || key.startsWith('_style')) {\n push()\n Object.assign(style, val)\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n viewProps[key] = val\n continue\n }\n\n if (validStyleProps[key]) {\n cur = cur || {}\n cur[key] = val\n continue\n }\n\n // pass to view props\n if (!staticConfig.variants || !(key in staticConfig.variants)) {\n if (key !== 'animation' && key !== 'debug') {\n push()\n viewProps[key] = val\n }\n }\n }\n }\n\n push()\n\n if (transforms) {\n for (const namespace in transforms) {\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (!insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n insertStyleRule(identifier, rule)\n }\n classNames[namespace] = identifier\n }\n }\n\n return {\n viewProps,\n style,\n medias,\n pseudos,\n classNames,\n }\n}\n\nconst getSubStyle = (\n styleIn: Object,\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n props: any,\n resolveVariablesAs?: ResolveVariableTypes,\n avoidDefaultProps?: boolean\n): ViewStyle => {\n const styleOut: ViewStyle = {}\n for (const key in styleIn) {\n const val = styleIn[key]\n const out = staticConfig.propMapper(\n key,\n val,\n theme,\n props,\n staticConfig,\n resolveVariablesAs,\n avoidDefaultProps\n )\n const expanded = out === true || !out ? [[key, val]] : Object.entries(out)\n for (const [skey, sval] of expanded) {\n if (skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = sval\n }\n }\n }\n normalizeStyleObject(styleOut)\n return styleOut\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n mergeTransform,\n stylePropsText,\n stylePropsTransform,\n validPseudoKeys,\n validStyles,\n} from '@tamagui/helpers'\n// @ts-ignore\nimport { useInsertionEffect } from 'react'\nimport { ViewStyle } from 'react-native'\n\nimport { getConfig } from '../conf'\nimport { isClient, isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { mediaQueryConfig, mediaState } from '../hooks/useMedia'\nimport {\n MediaKeys,\n MediaQueryKey,\n PseudoStyles,\n PsuedoPropKeys,\n SplitStyleState,\n StackProps,\n StaticConfigParsed,\n TamaguiInternalConfig,\n ThemeObject,\n} from '../types'\nimport { createMediaStyle } from './createMediaStyle'\nimport { fixNativeShadow } from './fixNativeShadow'\nimport { ViewStyleWithPseudos, getStylesAtomic } from './getStylesAtomic'\nimport {\n insertStyleRule,\n insertedTransforms,\n updateInserted,\n updateInsertedCache,\n} from './insertStyleRule'\n\nexport type SplitStyles = ReturnType<typeof getSplitStyles>\nexport type ClassNamesObject = Record<string, string>\nexport type SplitStyleResult = ReturnType<typeof getSplitStyles>\n\nconst skipProps = {\n animation: true,\n animateOnly: true,\n debug: true,\n}\n\ntype TransformNamespaceKey = 'transform' | PsuedoPropKeys | MediaQueryKey\n\n// TODO can make a few of these objects lazy if profiling seems slow\n\nlet conf: TamaguiInternalConfig\n\ntype StyleSplitter = (\n props: { [key: string]: any },\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n state: SplitStyleState & {\n keepVariantsAsProps?: boolean\n },\n defaultClassNames?: any\n) => {\n pseudos: PseudoStyles\n medias: Record<MediaKeys, ViewStyle>\n style: ViewStyle\n classNames: ClassNamesObject\n rulesToInsert: [string, string][]\n viewProps: StackProps\n}\n\nexport const getSplitStyles: StyleSplitter = (\n props,\n staticConfig,\n theme,\n state,\n defaultClassNames\n) => {\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n console.log(' \u00BB getSplitStyles', { props, state, defaultClassNames })\n }\n\n conf = conf || getConfig()\n const validStyleProps = staticConfig.isText ? stylePropsText : validStyles\n const viewProps: StackProps = {}\n const style: ViewStyle = {}\n const classNames: ClassNamesObject = {\n ...defaultClassNames,\n }\n const pseudos: PseudoStyles = {}\n const medias: Record<MediaKeys, ViewStyle> = {}\n\n const rulesToInsert: [string, string][] = []\n function addStyle(prop: string, rule: string) {\n rulesToInsert.push([prop, rule])\n updateInsertedCache(prop, rule)\n }\n\n let cur: ViewStyleWithPseudos | null = null\n\n // we need to gather these specific to each media query / pseudo\n // value is [hash, val], so [\"-jnjad-asdnjk\", \"scaleX(1) rotate(10deg)\"]\n let transforms: Record<TransformNamespaceKey, [string, string]> = {}\n\n function mergeClassName(key: string, val: string) {\n if (!val) {\n // empty classnames passed by compiler sometimes\n return\n }\n if (val.startsWith('_transform-')) {\n const isMediaOrPseudo = key !== 'transform'\n const isMedia = isMediaOrPseudo && key[11] === '_'\n const isPsuedo = (isMediaOrPseudo && key[11] === '0') || key.endsWith('Style')\n const namespace: TransformNamespaceKey = isMedia\n ? key.split('_')[2]\n : isPsuedo\n ? key.split('-')[1]\n : 'transform'\n\n let transform = insertedTransforms[val]\n if (isClient) {\n if (!transform) {\n // HMR or loaded a new chunk\n updateInserted()\n transform = insertedTransforms[val]\n }\n if (!transform) {\n if (isWeb && val[0] !== '_') {\n // runtime insert\n transform = val\n } else {\n // error\n console.trace('?', key, val, cur, props, state)\n }\n }\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n // prettier-ignore\n console.log(' \u00BB getSplitStyles mergeClassName transform', { key, val, namespace, transform, insertedTransforms })\n }\n if (process.env.NODE_ENV === 'development') {\n if (!transform) {\n console.trace('NO TRANSFORM?', { key, val, transform })\n }\n }\n }\n transforms[namespace] = transforms[namespace] || ['', '']\n const identifier = val.replace('_transform', '')\n transforms[namespace][0] += identifier\n // ssr doesn't need to do anything just make the right classname\n if (transform) {\n transforms[namespace][1] += transform\n }\n } else {\n classNames[key] = val\n }\n }\n\n function push() {\n if (!cur) return\n normalizeStyleObject(cur)\n\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n console.log(' \u00BB getSplitStyles push', cur, state)\n }\n\n if (isWeb && !state.noClassNames) {\n const atomic = getStylesAtomic(cur)\n for (const atomicStyle of atomic) {\n if (!state.noClassNames) {\n addStyle(atomicStyle.identifier, atomicStyle.rules[0])\n mergeClassName(atomicStyle.property, atomicStyle.identifier)\n } else {\n style[atomicStyle.property] = atomicStyle.value\n }\n }\n }\n\n if (\n !isWeb ||\n state.noClassNames ||\n state.resolveVariablesAs === 'value' ||\n state.resolveVariablesAs === 'both'\n ) {\n for (const key in cur) {\n if (key in stylePropsTransform) {\n mergeTransform(style, key, cur[key])\n } else {\n style[key] = cur[key]\n }\n }\n }\n\n // reset it for next group of styles\n cur = null\n }\n\n for (const keyInit in props) {\n if (skipProps[keyInit]) {\n continue\n }\n\n const valInit = props[keyInit]\n\n // TODO\n if (keyInit === 'style' || keyInit.startsWith('_style')) {\n push()\n cur = valInit\n push()\n continue\n }\n\n if (keyInit === 'className' || (validStyleProps[keyInit] && valInit && valInit[0] === '_')) {\n push()\n mergeClassName(keyInit, valInit)\n continue\n }\n\n if (\n state.keepVariantsAsProps &&\n staticConfig.defaultVariants &&\n keyInit in staticConfig.defaultVariants\n ) {\n viewProps[keyInit] = valInit\n }\n\n let isMedia = keyInit[0] === '$'\n let isPseudo = validPseudoKeys[keyInit]\n\n if (\n !isMedia &&\n !isPseudo &&\n !staticConfig.variants?.[keyInit] &&\n !validStyleProps[keyInit] &&\n !conf.shorthands[keyInit]\n ) {\n viewProps[keyInit] = valInit\n continue\n }\n\n const out =\n isMedia || isPseudo\n ? true\n : staticConfig.propMapper(\n keyInit,\n valInit,\n theme,\n state.fallbackProps || props,\n state.resolveVariablesAs\n )\n\n const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out)\n\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n console.log(' \u00BB getSplitStyles', keyInit, expanded)\n }\n\n for (const [key, val] of expanded) {\n if (val === undefined) {\n continue\n }\n\n if (key !== 'target' && val && val[0] === '_') {\n mergeClassName(key, val)\n continue\n }\n\n isMedia = key[0] === '$'\n isPseudo = validPseudoKeys[key]\n\n if (\n (staticConfig.deoptProps && staticConfig.deoptProps.has(key)) ||\n (staticConfig.inlineProps && staticConfig.inlineProps.has(key))\n ) {\n viewProps[key] = val\n }\n\n // pseudo\n if (isPseudo) {\n if (!val) continue\n if (key === 'enterStyle' && state.mounted) {\n // once mounted we can ignore enterStyle\n continue\n }\n pseudos[key] = pseudos[key] || {}\n pseudos[key] = getSubStyle(val, staticConfig, theme, props, state, true)\n if (isWeb && !state.noClassNames) {\n const pseudoStyles = getStylesAtomic({ [key]: pseudos[key] })\n for (const style of pseudoStyles) {\n addStyle(style.identifier, style.rules[0])\n mergeClassName(`${style.property}-${key}`, style.identifier)\n }\n }\n continue\n }\n\n // media\n if (isMedia) {\n const mediaKey = key\n const mediaKeyShort = mediaKey.slice(1)\n\n if (!mediaQueryConfig[mediaKeyShort]) {\n // this isn't a media key, pass through\n viewProps[key] = val\n continue\n }\n\n // dont check if media is active, we just apply *all* media styles\n // we combine the media props on top regular props, could proxy this\n // TODO test proxy here instead of merge\n // THIS USED TO PROXY BACK TO REGULAR PROPS BUT THAT IS THE WRONG BEHAVIOR\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n const mediaStyle = getSubStyle(val, staticConfig, theme, props, state)\n\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n console.log(' \u00BB getSplitStyles mediaStyle', mediaKey, mediaStyle, props)\n }\n\n const shouldDoClasses = isWeb && !state.noClassNames\n if (shouldDoClasses) {\n const mediaStyles = getStylesAtomic(mediaStyle)\n for (const style of mediaStyles) {\n const out = createMediaStyle(style, mediaKeyShort, mediaQueryConfig)\n addStyle(out.identifier, out.styleRule)\n mergeClassName(`${out.identifier}-${mediaKey}`, out.identifier)\n }\n } else {\n if (mediaState[mediaKey]) {\n push()\n if (process.env.NODE_ENV === 'development' && props['debug']) {\n console.log('apply media style', mediaKey, mediaState)\n }\n Object.assign(shouldDoClasses ? medias : style, mediaStyle)\n }\n }\n continue\n }\n\n if (!isWeb && key === 'pointerEvents') {\n viewProps[key] = val\n continue\n }\n\n if (validStyleProps[key]) {\n cur = cur || {}\n cur[key] = val\n continue\n }\n\n // pass to view props\n if (!staticConfig.variants || !(key in staticConfig.variants)) {\n if (key !== 'animation' && key !== 'debug') {\n push()\n viewProps[key] = val\n }\n }\n }\n }\n\n push()\n\n if (transforms) {\n for (const namespace in transforms) {\n const [hash, val] = transforms[namespace]\n const identifier = `_transform${hash}`\n if (isClient) {\n if (!insertedTransforms[identifier]) {\n const rule = `.${identifier} { transform: ${val}; }`\n addStyle(identifier, rule)\n }\n }\n classNames[namespace] = identifier\n }\n }\n\n if (process.env.NODE_ENV === 'development' && props['debug'] === 'verbose') {\n console.log(' \u00BB getSplitStyles out', { style, pseudos, medias, classNames, viewProps, state })\n }\n\n return {\n viewProps,\n style,\n medias,\n pseudos,\n classNames,\n rulesToInsert,\n }\n}\n\nexport const insertSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n for (const [prop, rule] of res.rulesToInsert) {\n insertStyleRule(prop, rule)\n }\n return res\n}\n\nconst effect = useInsertionEffect || useIsomorphicLayoutEffect\nexport const useSplitStyles: StyleSplitter = (...args) => {\n const res = getSplitStyles(...args)\n effect(() => {\n for (const [prop, rule] of res.rulesToInsert) {\n insertStyleRule(prop, rule)\n }\n })\n return res\n}\n\nexport const getSubStyle = (\n styleIn: Object,\n staticConfig: StaticConfigParsed,\n theme: ThemeObject,\n props: any,\n state: SplitStyleState,\n avoidDefaultProps?: boolean\n): ViewStyle => {\n const styleOut: ViewStyle = {}\n for (const key in styleIn) {\n const val = styleIn[key]\n const out = staticConfig.propMapper(\n key,\n val,\n theme,\n state.fallbackProps || props,\n state.resolveVariablesAs,\n avoidDefaultProps\n )\n const expanded = out === true || !out ? [[key, val]] : Object.entries(out)\n for (const [skey, sval] of expanded) {\n if (skey in stylePropsTransform) {\n mergeTransform(styleOut, skey, sval)\n } else {\n styleOut[skey] = sval\n }\n }\n }\n normalizeStyleObject(styleOut)\n return styleOut\n}\n\nexport function normalizeStyleObject(style: any) {\n // fix padding expand i know this exists in rnw but it doesnt expand base padding\n if (style.padding) {\n const val = style.padding\n delete style.padding\n style.paddingLeft = val\n style.paddingTop = val\n style.paddingRight = val\n style.paddingBottom = val\n }\n\n // fix flex to match web\n // see spec for flex shorthand https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n if (typeof style.flex === 'number') {\n const val = style.flex\n delete style.flex\n style.flexGrow = style.flexGrow ?? val\n style.flexShrink = style.flexShrink ?? 1\n }\n\n if (!isWeb) {\n fixNativeShadow(style)\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -52,6 +52,7 @@ __export(getStylesAtomic_exports, {
52
52
  });
53
53
  module.exports = __toCommonJS(getStylesAtomic_exports);
54
54
  var import_helpers = require("@tamagui/helpers");
55
+ var import_conf = require("../conf");
55
56
  var import_rnw = require("../constants/rnw");
56
57
  var import_createVariable = require("../createVariable");
57
58
  function getStylesAtomic(stylesIn, options = {}) {
@@ -80,6 +81,7 @@ __name(getStylesAtomic, "getStylesAtomic");
80
81
  const generateAtomicStyles = /* @__PURE__ */ __name((style) => {
81
82
  return import_rnw.rnw.atomic(import_rnw.rnw.createCompileableStyle(import_rnw.rnw.createReactDOMStyle(style)));
82
83
  }, "generateAtomicStyles");
84
+ let reversedShorthands = null;
83
85
  function getAtomicStyle(style, pseudo, options) {
84
86
  if (style == null || typeof style !== "object") {
85
87
  throw new Error(`Wrong style type: "${typeof style}": ${style}`);
@@ -105,11 +107,22 @@ function getAtomicStyle(style, pseudo, options) {
105
107
  } else {
106
108
  atomicStyles = generateAtomicStyles(style);
107
109
  }
110
+ if (!reversedShorthands) {
111
+ reversedShorthands = {};
112
+ const conf = (0, import_conf.getConfig)();
113
+ if (conf.shorthands) {
114
+ for (const key in conf.shorthands) {
115
+ reversedShorthands[conf.shorthands[key]] = key;
116
+ }
117
+ }
118
+ }
108
119
  return Object.keys(atomicStyles).map((key) => {
109
120
  const val = atomicStyles[key];
110
- const [_, ogProperty, hash] = val.identifier.split("-");
121
+ const [_, a, b] = val.identifier.split("-");
122
+ const hash = b || a;
111
123
  const psuedoPrefix = pseudo ? `0${pseudo.name}-` : "";
112
- const identifier = `_${ogProperty}-${psuedoPrefix}${hash}`;
124
+ const shortProp = reversedShorthands[val.property] || val.property;
125
+ const identifier = `_${shortProp}-${psuedoPrefix}${hash}`;
113
126
  const className = `.${identifier}`;
114
127
  const rules = val.rules.map((rule) => {
115
128
  if (pseudo) {
@@ -156,4 +169,9 @@ const pseudos = {
156
169
  }
157
170
  };
158
171
  const pseudosOrdered = Object.values(pseudos);
172
+ // Annotate the CommonJS export names for ESM import in node:
173
+ 0 && (module.exports = {
174
+ getStylesAtomic,
175
+ pseudos
176
+ });
159
177
  //# sourceMappingURL=getStylesAtomic.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/getStylesAtomic.ts"],
4
- "sourcesContent": ["import {\n StyleObject,\n invertMapTransformKeys,\n mergeTransform,\n stylePropsTransform,\n} from '@tamagui/helpers'\nimport { ViewStyle } from 'react-native'\n\nimport { rnw } from '../constants/rnw'\nimport { isVariable } from '../createVariable'\n\n// NOTE: going to refactor and merge getSplitStyles + getAtomicStyles into one\n// before i can do that need to not rely on rnw for generateAtomicStyles\n// will change that to not be external at all and just logically do it in the\n// merged getSplitStyles/getAtomicStyles file in one loop.\n\nexport type ViewStyleWithPseudos = ViewStyle & {\n hoverStyle?: ViewStyle\n pressStyle?: ViewStyle\n focusStyle?: ViewStyle\n}\n\ntype AtomicStyleOptions = {\n splitTransforms?: boolean\n}\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos, options: AtomicStyleOptions = {}) {\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style || !Object.keys(style).length) {\n continue\n }\n const pseudo = pseudosOrdered[index]\n for (const skey in style) {\n const val = style[skey]\n if (isVariable(val)) {\n style[skey] = val.toString()\n }\n if (stylePropsTransform[skey]) {\n delete style[skey]\n mergeTransform(style, skey, val)\n }\n }\n res = [...res, ...getAtomicStyle(style, pseudo, options)]\n }\n\n return res\n}\n\nconst generateAtomicStyles = (style: ViewStyle) => {\n return rnw.atomic(rnw.createCompileableStyle(rnw.createReactDOMStyle(style))) as {\n [key: string]: StyleObject\n }\n}\n\nfunction getAtomicStyle(\n style: ViewStyle,\n pseudo: { name: string; priority: number } | undefined,\n options: AtomicStyleOptions\n): StyleObject[] {\n if (style == null || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n\n // why is this diff from react-native-web!? need to figure out\n for (const key in borderDefaults) {\n if (key in style) {\n style[borderDefaults[key]] = style[borderDefaults[key]] ?? 'solid'\n }\n }\n\n let atomicStyles: { [key: string]: StyleObject & { transformProperty?: string } } = {}\n\n if (options.splitTransforms && style.transform) {\n let { transform, ...rest } = style\n Object.assign(atomicStyles, generateAtomicStyles(rest))\n for (const t of transform) {\n const tKey = Object.keys(t)[0]\n const transformProperty = invertMapTransformKeys[tKey] || tKey\n const out = generateAtomicStyles({ transform: [t] })\n const key = Object.keys(out)[0]\n atomicStyles[key] = {\n ...out[key],\n transformProperty,\n }\n }\n } else {\n // TODO we can do this all in one loop likely inside getSplitStyles in existing loop and avoid O(n^3)...\n atomicStyles = generateAtomicStyles(style)\n }\n\n // TODO ... and then also avoid this loop! n^4\n return Object.keys(atomicStyles).map((key) => {\n const val = atomicStyles[key]\n // r-transform-1ns13n\n const [_, ogProperty, hash] = val.identifier.split('-')\n // pseudos have a `--` to be easier to find with concatClassNames\n const psuedoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const identifier = `_${ogProperty}-${psuedoPrefix}${hash}`\n const className = `.${identifier}`\n const rules = val.rules.map((rule) => {\n if (pseudo) {\n const psuedoPrefixSelect = [...Array(pseudo.priority)].map(() => ':root').join('') + ' '\n let res = rule\n .replace(`.${val.identifier}`, `${psuedoPrefixSelect} ${className}`)\n .replace('{', `:${pseudo.name}{`)\n\n if (pseudo.name === 'hover') {\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n res = `@media not all and (hover: none) { ${res} }`\n }\n return res\n }\n return rule.replace(`.${val.identifier}`, className).replace(importantRegex, '')\n })\n\n const result: StyleObject = {\n property: val.transformProperty || val.property,\n value: val.value,\n identifier,\n className,\n rules,\n }\n\n return result\n })\n}\n\nconst importantRegex = /\\!important*/g\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\n// *0 order matches to *1\nexport const pseudos = {\n hoverStyle: {\n name: 'hover',\n priority: 1,\n },\n pressStyle: {\n name: 'active',\n priority: 2,\n },\n focusStyle: {\n name: 'focus',\n priority: 3,\n },\n}\n\nconst pseudosOrdered = Object.values(pseudos)\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n StyleObject,\n invertMapTransformKeys,\n mergeTransform,\n stylePropsTransform,\n} from '@tamagui/helpers'\nimport { ViewStyle } from 'react-native'\n\nimport { getConfig } from '../conf'\nimport { rnw } from '../constants/rnw'\nimport { isVariable } from '../createVariable'\n\n// NOTE: going to refactor and merge getSplitStyles + getAtomicStyles into one\n// before i can do that need to not rely on rnw for generateAtomicStyles\n// will change that to not be external at all and just logically do it in the\n// merged getSplitStyles/getAtomicStyles file in one loop.\n\nexport type ViewStyleWithPseudos = ViewStyle & {\n hoverStyle?: ViewStyle\n pressStyle?: ViewStyle\n focusStyle?: ViewStyle\n}\n\ntype AtomicStyleOptions = {\n splitTransforms?: boolean\n}\n\nexport function getStylesAtomic(stylesIn: ViewStyleWithPseudos, options: AtomicStyleOptions = {}) {\n const { hoverStyle, pressStyle, focusStyle, ...base } = stylesIn\n let res: StyleObject[] = []\n\n // *1 order matched to *0\n for (const [index, style] of [hoverStyle, pressStyle, focusStyle, base].entries()) {\n if (!style || !Object.keys(style).length) {\n continue\n }\n const pseudo = pseudosOrdered[index]\n for (const skey in style) {\n const val = style[skey]\n if (isVariable(val)) {\n style[skey] = val.toString()\n }\n if (stylePropsTransform[skey]) {\n delete style[skey]\n mergeTransform(style, skey, val)\n }\n }\n res = [...res, ...getAtomicStyle(style, pseudo, options)]\n }\n\n return res\n}\n\nconst generateAtomicStyles = (style: ViewStyle) => {\n return rnw.atomic(rnw.createCompileableStyle(rnw.createReactDOMStyle(style))) as {\n [key: string]: StyleObject\n }\n}\n\nlet reversedShorthands: Record<string, string> | null = null\n\nfunction getAtomicStyle(\n style: ViewStyle,\n pseudo: { name: string; priority: number } | undefined,\n options: AtomicStyleOptions\n): StyleObject[] {\n if (style == null || typeof style !== 'object') {\n throw new Error(`Wrong style type: \"${typeof style}\": ${style}`)\n }\n\n // why is this diff from react-native-web!? need to figure out\n for (const key in borderDefaults) {\n if (key in style) {\n style[borderDefaults[key]] = style[borderDefaults[key]] ?? 'solid'\n }\n }\n\n let atomicStyles: { [key: string]: StyleObject & { transformProperty?: string } } = {}\n\n if (options.splitTransforms && style.transform) {\n let { transform, ...rest } = style\n Object.assign(atomicStyles, generateAtomicStyles(rest))\n for (const t of transform) {\n const tKey = Object.keys(t)[0]\n const transformProperty = invertMapTransformKeys[tKey] || tKey\n const out = generateAtomicStyles({ transform: [t] })\n const key = Object.keys(out)[0]\n atomicStyles[key] = {\n ...out[key],\n transformProperty,\n }\n }\n } else {\n // TODO we can do this all in one loop likely inside getSplitStyles in existing loop and avoid O(n^3)...\n atomicStyles = generateAtomicStyles(style)\n }\n\n if (!reversedShorthands) {\n reversedShorthands = {}\n const conf = getConfig()\n if (conf.shorthands) {\n for (const key in conf.shorthands) {\n reversedShorthands[conf.shorthands[key]] = key\n }\n }\n }\n\n // TODO ... and then also avoid this loop! n^4\n return Object.keys(atomicStyles).map((key) => {\n const val = atomicStyles[key]\n // r-transform-1ns13n\n const [_, a, b] = val.identifier.split('-')\n // dev mode its \"r-transform-1ns13n\", prod its \"r-1ns13n\", normalize them\n const hash = b || a\n // pseudos have a `--` to be easier to find with concatClassNames\n const psuedoPrefix = pseudo ? `0${pseudo.name}-` : ''\n const shortProp = reversedShorthands![val.property] || val.property\n const identifier = `_${shortProp}-${psuedoPrefix}${hash}`\n const className = `.${identifier}`\n const rules = val.rules.map((rule) => {\n if (pseudo) {\n const psuedoPrefixSelect = [...Array(pseudo.priority)].map(() => ':root').join('') + ' '\n let res = rule\n .replace(`.${val.identifier}`, `${psuedoPrefixSelect} ${className}`)\n .replace('{', `:${pseudo.name}{`)\n\n if (pseudo.name === 'hover') {\n // hover styles need to be conditional\n // perhaps this can be generalized but for now lets just shortcut\n // and hardcode for hover styles, if we need to later we can\n // WEIRD SYNTAX, SEE:\n // https://stackoverflow.com/questions/40532204/media-query-for-devices-supporting-hover\n res = `@media not all and (hover: none) { ${res} }`\n }\n return res\n }\n return rule.replace(`.${val.identifier}`, className).replace(importantRegex, '')\n })\n\n const result: StyleObject = {\n property: val.transformProperty || val.property,\n value: val.value,\n identifier,\n className,\n rules,\n }\n\n return result\n })\n}\n\nconst importantRegex = /\\!important*/g\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\n// *0 order matches to *1\nexport const pseudos = {\n hoverStyle: {\n name: 'hover',\n priority: 1,\n },\n pressStyle: {\n name: 'active',\n priority: 2,\n },\n focusStyle: {\n name: 'focus',\n priority: 3,\n },\n}\n\nconst pseudosOrdered = Object.values(pseudos)\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -25,4 +25,8 @@ function getStylesAtomic() {
25
25
  console.warn("no-op native");
26
26
  }
27
27
  __name(getStylesAtomic, "getStylesAtomic");
28
+ // Annotate the CommonJS export names for ESM import in node:
29
+ 0 && (module.exports = {
30
+ getStylesAtomic
31
+ });
28
32
  //# sourceMappingURL=getStylesAtomic.native.js.map