@tamagui/core 1.0.0-beta.222 → 1.0.0-beta.3

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 (253) hide show
  1. package/dist/cjs/Tamagui.js +13 -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 +112 -64
  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/helpers/RNComponents.js +4 -0
  25. package/dist/cjs/helpers/addStylesUsingClassname.js +19 -16
  26. package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
  27. package/dist/cjs/helpers/areEqualSets.js +4 -0
  28. package/dist/cjs/helpers/createMediaStyle.js +5 -2
  29. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  30. package/dist/cjs/helpers/createPropMapper.js +44 -41
  31. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  32. package/dist/cjs/helpers/createShallowUpdate.js +4 -0
  33. package/dist/cjs/helpers/createTamaguiProvider.js +4 -0
  34. package/dist/cjs/helpers/extendStaticConfig.js +9 -6
  35. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  36. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  37. package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
  38. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  39. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  40. package/dist/cjs/{constants/pseudos.js → helpers/getSize.js} +17 -19
  41. package/dist/cjs/helpers/getSize.js.map +7 -0
  42. package/dist/cjs/helpers/getSplitStyles.js +165 -62
  43. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  44. package/dist/cjs/helpers/getStylesAtomic.js +20 -3
  45. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  46. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  47. package/dist/cjs/helpers/insertStyleRule.js +41 -26
  48. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  49. package/dist/cjs/helpers/isObj.js +4 -0
  50. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  51. package/dist/cjs/helpers/matchMedia.js +4 -0
  52. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  53. package/dist/cjs/helpers/proxyThemeVariables.js +40 -0
  54. package/dist/cjs/helpers/proxyThemeVariables.js.map +7 -0
  55. package/dist/cjs/helpers/themeable.js +7 -2
  56. package/dist/cjs/helpers/themeable.js.map +2 -2
  57. package/dist/cjs/helpers/validate.js +53 -11
  58. package/dist/cjs/helpers/validate.js.map +2 -2
  59. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  60. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  61. package/dist/cjs/hooks/useConstant.js +4 -0
  62. package/dist/cjs/hooks/useFeatures.js +8 -5
  63. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  64. package/dist/cjs/hooks/useIsMounted.js +4 -0
  65. package/dist/cjs/hooks/useIsTouchDevice.js +8 -4
  66. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  67. package/dist/cjs/hooks/useMedia.js +30 -12
  68. package/dist/cjs/hooks/useMedia.js.map +2 -2
  69. package/dist/cjs/hooks/usePressable.js +4 -0
  70. package/dist/cjs/hooks/useTheme.js +30 -16
  71. package/dist/cjs/hooks/useTheme.js.map +2 -2
  72. package/dist/cjs/hooks/useUnmountEffect.js +4 -0
  73. package/dist/cjs/index.js +15 -0
  74. package/dist/cjs/index.js.map +2 -2
  75. package/dist/cjs/static.js +3 -0
  76. package/dist/cjs/static.js.map +2 -2
  77. package/dist/cjs/styled.js +7 -4
  78. package/dist/cjs/styled.js.map +2 -2
  79. package/dist/cjs/types.js.map +1 -1
  80. package/dist/cjs/views/Stack.js +4 -0
  81. package/dist/cjs/views/Text.js +4 -0
  82. package/dist/cjs/views/TextAncestorContext.js +6 -0
  83. package/dist/cjs/views/Theme.js +7 -3
  84. package/dist/cjs/views/Theme.js.map +2 -2
  85. package/dist/cjs/views/ThemeInverse.js +5 -0
  86. package/dist/cjs/views/ThemeProvider.js +6 -1
  87. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  88. package/dist/cjs/views/ThemeReset.js +4 -0
  89. package/dist/esm/Tamagui.js +8 -2
  90. package/dist/esm/Tamagui.js.map +2 -2
  91. package/dist/esm/ThemeManager.js +21 -11
  92. package/dist/esm/ThemeManager.js.map +2 -2
  93. package/dist/esm/conf.js +0 -1
  94. package/dist/esm/conf.js.map +2 -2
  95. package/dist/esm/constants/platform.js +2 -0
  96. package/dist/esm/constants/platform.js.map +2 -2
  97. package/dist/esm/createComponent.js +104 -66
  98. package/dist/esm/createComponent.js.map +2 -2
  99. package/dist/esm/createTamagui.js +53 -28
  100. package/dist/esm/createTamagui.js.map +2 -2
  101. package/dist/esm/createTokens.js +2 -6
  102. package/dist/esm/createTokens.js.map +2 -2
  103. package/dist/esm/createVariable.js +8 -2
  104. package/dist/esm/createVariable.js.map +2 -2
  105. package/dist/esm/helpers/addStylesUsingClassname.js +16 -18
  106. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  107. package/dist/esm/helpers/createMediaStyle.js +0 -2
  108. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  109. package/dist/esm/helpers/createPropMapper.js +40 -41
  110. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  111. package/dist/esm/helpers/extendStaticConfig.js +9 -6
  112. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  113. package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
  114. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  115. package/dist/esm/helpers/getSize.js +13 -0
  116. package/dist/esm/helpers/getSize.js.map +7 -0
  117. package/dist/esm/helpers/getSplitStyles.js +165 -65
  118. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  119. package/dist/esm/helpers/getStylesAtomic.js +15 -3
  120. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  121. package/dist/esm/helpers/insertStyleRule.js +31 -26
  122. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  123. package/dist/esm/helpers/proxyThemeVariables.js +18 -0
  124. package/dist/esm/helpers/proxyThemeVariables.js.map +7 -0
  125. package/dist/esm/helpers/themeable.js +3 -2
  126. package/dist/esm/helpers/themeable.js.map +2 -2
  127. package/dist/esm/helpers/validate.js +24 -11
  128. package/dist/esm/helpers/validate.js.map +2 -2
  129. package/dist/esm/hooks/useFeatures.js +3 -5
  130. package/dist/esm/hooks/useFeatures.js.map +2 -2
  131. package/dist/esm/hooks/useIsTouchDevice.js +6 -6
  132. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  133. package/dist/esm/hooks/useMedia.js +19 -12
  134. package/dist/esm/hooks/useMedia.js.map +2 -2
  135. package/dist/esm/hooks/useTheme.js +22 -16
  136. package/dist/esm/hooks/useTheme.js.map +2 -2
  137. package/dist/esm/index.js +4 -0
  138. package/dist/esm/index.js.map +2 -2
  139. package/dist/esm/static.js +3 -0
  140. package/dist/esm/static.js.map +2 -2
  141. package/dist/esm/styled.js +3 -4
  142. package/dist/esm/styled.js.map +2 -2
  143. package/dist/esm/views/Theme.js +3 -3
  144. package/dist/esm/views/Theme.js.map +2 -2
  145. package/dist/esm/views/ThemeProvider.js +2 -1
  146. package/dist/esm/views/ThemeProvider.js.map +2 -2
  147. package/dist/jsx/Tamagui.js +8 -2
  148. package/dist/jsx/ThemeManager.js +21 -11
  149. package/dist/jsx/conf.js +0 -1
  150. package/dist/jsx/constants/platform.js +2 -0
  151. package/dist/jsx/createComponent.js +100 -62
  152. package/dist/jsx/createTamagui.js +53 -28
  153. package/dist/jsx/createTokens.js +2 -6
  154. package/dist/jsx/createVariable.js +8 -2
  155. package/dist/jsx/helpers/addStylesUsingClassname.js +16 -18
  156. package/dist/jsx/helpers/createMediaStyle.js +0 -2
  157. package/dist/jsx/helpers/createPropMapper.js +40 -41
  158. package/dist/jsx/helpers/extendStaticConfig.js +9 -6
  159. package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
  160. package/dist/jsx/helpers/getSize.js +12 -0
  161. package/dist/jsx/helpers/getSplitStyles.js +165 -65
  162. package/dist/jsx/helpers/getStylesAtomic.js +15 -3
  163. package/dist/jsx/helpers/insertStyleRule.js +31 -26
  164. package/dist/jsx/helpers/proxyThemeVariables.js +17 -0
  165. package/dist/jsx/helpers/themeable.js +3 -3
  166. package/dist/jsx/helpers/validate.js +24 -11
  167. package/dist/jsx/hooks/useFeatures.js +3 -5
  168. package/dist/jsx/hooks/useIsTouchDevice.js +6 -6
  169. package/dist/jsx/hooks/useMedia.js +19 -12
  170. package/dist/jsx/hooks/useTheme.js +22 -16
  171. package/dist/jsx/index.js +4 -0
  172. package/dist/jsx/static.js +3 -0
  173. package/dist/jsx/styled.js +3 -4
  174. package/dist/jsx/views/Theme.js +4 -4
  175. package/dist/jsx/views/ThemeProvider.js +2 -2
  176. package/package.json +6 -6
  177. package/types/Tamagui.d.ts +16 -1
  178. package/types/Tamagui.d.ts.map +1 -1
  179. package/types/ThemeManager.d.ts +3 -3
  180. package/types/ThemeManager.d.ts.map +1 -1
  181. package/types/conf.d.ts +2 -0
  182. package/types/conf.d.ts.map +1 -1
  183. package/types/constants/platform.d.ts +1 -0
  184. package/types/constants/platform.d.ts.map +1 -1
  185. package/types/createComponent.d.ts +3 -4
  186. package/types/createComponent.d.ts.map +1 -1
  187. package/types/createTamagui.d.ts +3 -1
  188. package/types/createTamagui.d.ts.map +1 -1
  189. package/types/createTokens.d.ts +0 -26
  190. package/types/createTokens.d.ts.map +1 -1
  191. package/types/createVariable.d.ts +1 -0
  192. package/types/createVariable.d.ts.map +1 -1
  193. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  194. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  195. package/types/helpers/createPropMapper.d.ts +1 -1
  196. package/types/helpers/createPropMapper.d.ts.map +1 -1
  197. package/types/helpers/extendStaticConfig.d.ts +2 -2
  198. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  199. package/types/helpers/getSize.d.ts +3 -0
  200. package/types/helpers/getSize.d.ts.map +1 -0
  201. package/types/helpers/getSplitStyles.d.ts +14 -6
  202. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  203. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  204. package/types/helpers/insertStyleRule.d.ts +2 -1
  205. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  206. package/types/helpers/proxyThemeVariables.d.ts +2 -0
  207. package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
  208. package/types/helpers/themeable.d.ts +3 -1
  209. package/types/helpers/themeable.d.ts.map +1 -1
  210. package/types/helpers/validate.d.ts.map +1 -1
  211. package/types/hooks/useMedia.d.ts +2 -6
  212. package/types/hooks/useMedia.d.ts.map +1 -1
  213. package/types/hooks/useTheme.d.ts +1 -1
  214. package/types/hooks/useTheme.d.ts.map +1 -1
  215. package/types/index.d.ts +2 -0
  216. package/types/index.d.ts.map +1 -1
  217. package/types/static.d.ts +3 -0
  218. package/types/static.d.ts.map +1 -1
  219. package/types/styled.d.ts +12 -3
  220. package/types/styled.d.ts.map +1 -1
  221. package/types/types.d.ts +69 -43
  222. package/types/types.d.ts.map +1 -1
  223. package/types/views/Theme.d.ts +1 -0
  224. package/types/views/Theme.d.ts.map +1 -1
  225. package/types/views/ThemeProvider.d.ts +1 -0
  226. package/types/views/ThemeProvider.d.ts.map +1 -1
  227. package/LICENSE +0 -21
  228. package/dist/cjs/constants/pseudos.js.map +0 -7
  229. package/dist/cjs/createShallowUpdate.js +0 -1
  230. package/dist/cjs/createShallowUpdate.js.map +0 -7
  231. package/dist/cjs/devtools.js +0 -32
  232. package/dist/cjs/devtools.js.map +0 -7
  233. package/dist/cjs/spacedChildren.js +0 -86
  234. package/dist/cjs/spacedChildren.js.map +0 -7
  235. package/dist/cjs/tamagui-base.css +0 -8
  236. package/dist/cjs/tamagui-base.css.map +0 -7
  237. package/dist/esm/constants/pseudos.js +0 -18
  238. package/dist/esm/constants/pseudos.js.map +0 -7
  239. package/dist/esm/createShallowUpdate.js +0 -1
  240. package/dist/esm/createShallowUpdate.js.map +0 -7
  241. package/dist/esm/devtools.js +0 -14
  242. package/dist/esm/devtools.js.map +0 -7
  243. package/dist/esm/spacedChildren.js +0 -52
  244. package/dist/esm/spacedChildren.js.map +0 -7
  245. package/dist/esm/tamagui-base.css +0 -8
  246. package/dist/esm/tamagui-base.css.map +0 -7
  247. package/dist/jsx/constants/pseudos.js +0 -17
  248. package/dist/jsx/createShallowUpdate.js +0 -0
  249. package/dist/jsx/devtools.js +0 -13
  250. package/dist/jsx/spacedChildren.js +0 -44
  251. package/dist/jsx/tamagui-base.css +0 -7
  252. package/types/spacedChildren.d.ts +0 -9
  253. package/types/spacedChildren.d.ts.map +0 -1
@@ -4,29 +4,32 @@ import { getConfig } from "../conf";
4
4
  import { isWeb } from "../constants/platform";
5
5
  import { isVariable } from "../createVariable";
6
6
  import { isObj } from "./isObj";
7
- const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
8
- const variants = staticConfig.variants || {};
9
- function getVariantFunction(variant, key, value) {
10
- for (const cat in tokenCategories) {
11
- if (key in tokenCategories[cat]) {
12
- const spreadVariant = variant[`...${cat}`];
13
- if (spreadVariant) {
14
- return spreadVariant;
15
- }
7
+ function getVariantFunction(variant, key, value) {
8
+ if (typeof variant === "function") {
9
+ return variant;
10
+ }
11
+ for (const cat in tokenCategories) {
12
+ if (key in tokenCategories[cat]) {
13
+ const spreadVariant = variant[`...${cat}`];
14
+ if (spreadVariant) {
15
+ return spreadVariant;
16
16
  }
17
17
  }
18
- let fn;
19
- if (typeof value === "number") {
20
- fn = variant[":number"];
21
- } else if (typeof value === "string") {
22
- fn = variant[":string"];
23
- } else if (value === true || value === false) {
24
- fn = variant[":boolean"];
25
- }
26
- fn = fn || variant[value];
27
- return fn || variant["..."] || variant["...size"];
28
18
  }
29
- __name(getVariantFunction, "getVariantFunction");
19
+ let fn;
20
+ if (typeof value === "number") {
21
+ fn = variant[":number"];
22
+ } else if (typeof value === "string") {
23
+ fn = variant[":string"];
24
+ } else if (value === true || value === false) {
25
+ fn = variant[":boolean"];
26
+ }
27
+ fn = fn || variant[value];
28
+ return fn || variant["..."] || variant["...size"];
29
+ }
30
+ __name(getVariantFunction, "getVariantFunction");
31
+ const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
32
+ const variants = staticConfig.variants || {};
30
33
  const defaultProps = staticConfig.defaultProps || {};
31
34
  return (key, value, theme, props, returnVariablesAs = !!props.animation ? "value" : "auto", avoidDefaultProps = false) => {
32
35
  const conf = getConfig();
@@ -34,13 +37,15 @@ const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
34
37
  console.trace("no conf! err");
35
38
  return;
36
39
  }
37
- let fontFamily = props.fontFamily || defaultProps.fontFamily || "$body";
40
+ const fontFamily = props.fontFamily || defaultProps.fontFamily || "$body";
38
41
  const variant = variants && variants[key];
39
42
  if (variant && value !== void 0) {
40
43
  let variantValue = getVariantFunction(variant, key, value);
41
44
  if (variantValue) {
42
45
  if (typeof variantValue === "function") {
43
- variantValue = variantValue(value, {
46
+ const fn = variantValue;
47
+ variantValue = fn(value, {
48
+ fonts: conf.fontsParsed,
44
49
  tokens: conf.tokensParsed,
45
50
  theme,
46
51
  props: avoidDefaultProps ? props : new Proxy(props, {
@@ -48,8 +53,8 @@ const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
48
53
  if (Reflect.has(target, key2)) {
49
54
  return Reflect.get(target, key2);
50
55
  }
51
- if (staticConfig.defaultProps) {
52
- return Reflect.get(staticConfig.defaultProps, key2);
56
+ if (defaultProps) {
57
+ return Reflect.get(defaultProps, key2);
53
58
  }
54
59
  }
55
60
  })
@@ -107,34 +112,28 @@ const resolveTokens = /* @__PURE__ */ __name((input, conf, theme, fontFamily, re
107
112
  }
108
113
  return res;
109
114
  }, "resolveTokens");
110
- const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed }, theme, fontFamily = "$body", resolveAs) => {
111
- var _a, _b, _c, _d, _e;
115
+ const fontShorthand = {
116
+ fontSize: "size",
117
+ fontWeight: "weight"
118
+ };
119
+ const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed, fontsParsed }, theme, fontFamily = "$body", resolveAs) => {
120
+ var _a, _b, _c;
112
121
  let valOrVar;
113
122
  let hasSet = false;
114
- const valueName = value[0] === "$" ? value.slice(1) : value;
115
- if (valueName in theme) {
116
- valOrVar = theme[valueName];
123
+ if (value in theme) {
124
+ valOrVar = theme[value];
117
125
  hasSet = true;
118
126
  } else {
119
127
  switch (key) {
120
128
  case "fontFamily":
121
- valOrVar = ((_a = tokensParsed.font[value]) == null ? void 0 : _a.family) || value;
129
+ valOrVar = ((_a = fontsParsed[value]) == null ? void 0 : _a.family) || value;
122
130
  hasSet = true;
123
131
  break;
124
132
  case "fontSize":
125
- valOrVar = ((_b = tokensParsed.font[fontFamily]) == null ? void 0 : _b.size[value]) || value;
126
- hasSet = true;
127
- break;
128
133
  case "lineHeight":
129
- valOrVar = ((_c = tokensParsed.font[fontFamily]) == null ? void 0 : _c.lineHeight[value]) || value;
130
- hasSet = true;
131
- break;
132
134
  case "letterSpacing":
133
- valOrVar = ((_d = tokensParsed.font[fontFamily]) == null ? void 0 : _d.letterSpacing[value]) || value;
134
- hasSet = true;
135
- break;
136
135
  case "fontWeight":
137
- valOrVar = ((_e = tokensParsed.font[fontFamily]) == null ? void 0 : _e.weight[value]) || value;
136
+ valOrVar = ((_c = (_b = fontsParsed[fontFamily]) == null ? void 0 : _b[fontShorthand[key] || key]) == null ? void 0 : _c[value]) || value;
138
137
  hasSet = true;
139
138
  break;
140
139
  }
@@ -160,7 +159,7 @@ const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed }, theme, fo
160
159
  }
161
160
  if (process.env.NODE_ENV === "development") {
162
161
  if (value && value[0] === "$") {
163
- console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, value);
162
+ console.warn(`\u26A0\uFE0F Missing token:`, key, value, fontFamily, theme, fontsParsed);
164
163
  return null;
165
164
  }
166
165
  }
@@ -2,12 +2,9 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import { stylePropsView } from "@tamagui/helpers";
4
4
  import { createPropMapper } from "./createPropMapper";
5
- function extendStaticConfig(parent, config = {}) {
5
+ function extendStaticConfig(config, parent) {
6
6
  var _a;
7
- if (!parent) {
8
- throw new Error("no parent");
9
- }
10
- if (!("staticConfig" in parent)) {
7
+ if (!parent || !("staticConfig" in parent)) {
11
8
  return parseStaticConfig(config);
12
9
  }
13
10
  const variants = {
@@ -38,9 +35,15 @@ function extendStaticConfig(parent, config = {}) {
38
35
  ...parent.staticConfig.validStyles,
39
36
  ...config.validStyles
40
37
  } : parent.staticConfig.validStyles || stylePropsView,
38
+ defaultVariants: {
39
+ ...parent.staticConfig.defaultVariants,
40
+ ...config.defaultVariants
41
+ },
41
42
  defaultProps: {
42
43
  ...parent.staticConfig.defaultProps,
43
- ...config.defaultProps
44
+ ...parent.staticConfig.defaultVariants,
45
+ ...config.defaultProps,
46
+ ...config.defaultVariants
44
47
  }
45
48
  });
46
49
  }
@@ -18,8 +18,8 @@ function fixNativeShadow(props) {
18
18
  if ((c[0] === "r" || c[0] === "h") && c[3] === "a") {
19
19
  const [_, type, _1, _2, _3, a] = c.match(matchRgbaHsla) || [];
20
20
  if (typeof a !== "string") {
21
- console.warn("invalid", c, type);
22
- return;
21
+ console.trace("invalid", c, type);
22
+ throw new Error(`invalid style`);
23
23
  }
24
24
  props.shadowColor = `${type.replace("a", "")}(${_1},${_2},${_3})`;
25
25
  props.shadowOpacity = +a;
@@ -0,0 +1,12 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { getTokens } from "../conf";
4
+ const getSize = /* @__PURE__ */ __name((size, sizeUpOrDownBy = 0) => {
5
+ const sizes = getTokens().size;
6
+ const sizeNames = Object.keys(sizes);
7
+ const key = sizeNames[Math.max(0, sizeNames.indexOf(String(size || "$4")) + sizeUpOrDownBy)];
8
+ return sizes[key] || sizes["$4"];
9
+ }, "getSize");
10
+ export {
11
+ getSize
12
+ };
@@ -7,33 +7,31 @@ import {
7
7
  validPseudoKeys,
8
8
  validStyles
9
9
  } from "@tamagui/helpers";
10
- import { isWeb } from "../constants/platform";
10
+ import { useInsertionEffect } from "react";
11
+ import { getConfig } from "../conf";
12
+ import { isClient, isWeb, useIsomorphicLayoutEffect } from "../constants/platform";
11
13
  import { mediaQueryConfig, mediaState } from "../hooks/useMedia";
12
14
  import { createMediaStyle } from "./createMediaStyle";
13
15
  import { fixNativeShadow } from "./fixNativeShadow";
14
16
  import { getStylesAtomic } from "./getStylesAtomic";
15
- import { insertStyleRule, insertedTransforms, updateInserted } from "./insertStyleRule";
16
- const skipKeys = {
17
+ import {
18
+ insertStyleRule,
19
+ insertedTransforms,
20
+ updateInserted,
21
+ updateInsertedCache
22
+ } from "./insertStyleRule";
23
+ const skipProps = {
17
24
  animation: true,
18
- animated: true,
19
- children: true,
20
- key: true,
21
- ref: true
25
+ animateOnly: true,
26
+ debug: true
22
27
  };
23
- function normalizeStyleObject(style) {
24
- var _a, _b;
25
- if (typeof style.flex === "number") {
26
- const val = style.flex;
27
- delete style.flex;
28
- style.flexGrow = (_a = style.flexGrow) != null ? _a : val;
29
- style.flexShrink = (_b = style.flexShrink) != null ? _b : 1;
30
- }
31
- if (!isWeb) {
32
- fixNativeShadow(style);
33
- }
34
- }
35
- __name(normalizeStyleObject, "normalizeStyleObject");
28
+ let conf;
36
29
  const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state, defaultClassNames) => {
30
+ var _a;
31
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
32
+ console.log(" \xBB getSplitStyles", { props, state, defaultClassNames });
33
+ }
34
+ conf = conf || getConfig();
37
35
  const validStyleProps = staticConfig.isText ? stylePropsText : validStyles;
38
36
  const viewProps = {};
39
37
  const style = {};
@@ -42,27 +40,51 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
42
40
  };
43
41
  const pseudos = {};
44
42
  const medias = {};
43
+ const rulesToInsert = [];
44
+ function addStyle(prop, rule) {
45
+ rulesToInsert.push([prop, rule]);
46
+ updateInsertedCache(prop, rule);
47
+ }
48
+ __name(addStyle, "addStyle");
45
49
  let cur = null;
46
50
  let transforms = {};
47
51
  function mergeClassName(key, val) {
48
- if (!val)
52
+ if (!val) {
49
53
  return;
54
+ }
50
55
  if (val.startsWith("_transform-")) {
51
56
  const isMediaOrPseudo = key !== "transform";
52
57
  const isMedia = isMediaOrPseudo && key[11] === "_";
53
- const isPsuedo = isMediaOrPseudo && key[11] === "0";
58
+ const isPsuedo = isMediaOrPseudo && key[11] === "0" || key.endsWith("Style");
54
59
  const namespace = isMedia ? key.split("_")[2] : isPsuedo ? key.split("-")[1] : "transform";
55
- if (!insertedTransforms[val]) {
56
- updateInserted();
57
- }
58
- const transform = insertedTransforms[val];
59
- if (!transform || transform === "undefined") {
60
- console.trace("NO TRANSFORM", { key, val }, state);
61
- return;
60
+ let transform = insertedTransforms[val];
61
+ if (isClient) {
62
+ if (!transform) {
63
+ updateInserted();
64
+ transform = insertedTransforms[val];
65
+ }
66
+ if (!transform) {
67
+ if (isWeb && val[0] !== "_") {
68
+ transform = val;
69
+ } else {
70
+ console.trace("?", key, val, cur, props, state);
71
+ }
72
+ }
73
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
74
+ console.log(" \xBB getSplitStyles mergeClassName transform", { key, val, namespace, transform, insertedTransforms });
75
+ }
76
+ if (process.env.NODE_ENV === "development") {
77
+ if (!transform) {
78
+ console.trace("NO TRANSFORM?", { key, val, transform });
79
+ }
80
+ }
62
81
  }
63
82
  transforms[namespace] = transforms[namespace] || ["", ""];
64
- transforms[namespace][0] += val.replace("_transform", "");
65
- transforms[namespace][1] += transform;
83
+ const identifier = val.replace("_transform", "");
84
+ transforms[namespace][0] += identifier;
85
+ if (transform) {
86
+ transforms[namespace][1] += transform;
87
+ }
66
88
  } else {
67
89
  classNames[key] = val;
68
90
  }
@@ -72,12 +94,15 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
72
94
  if (!cur)
73
95
  return;
74
96
  normalizeStyleObject(cur);
97
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
98
+ console.log(" \xBB getSplitStyles push", cur, state);
99
+ }
75
100
  if (isWeb && !state.noClassNames) {
76
101
  const atomic = getStylesAtomic(cur);
77
102
  for (const atomicStyle of atomic) {
78
103
  if (!state.noClassNames) {
104
+ addStyle(atomicStyle.identifier, atomicStyle.rules[0]);
79
105
  mergeClassName(atomicStyle.property, atomicStyle.identifier);
80
- insertStyleRule(atomicStyle.identifier, atomicStyle.rules[0]);
81
106
  } else {
82
107
  style[atomicStyle.property] = atomicStyle.value;
83
108
  }
@@ -92,34 +117,38 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
92
117
  }
93
118
  }
94
119
  }
95
- if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
96
- console.log("getSplitStyles.push", { state, cur });
97
- }
98
120
  cur = null;
99
121
  }
100
122
  __name(push, "push");
101
123
  for (const keyInit in props) {
124
+ if (skipProps[keyInit]) {
125
+ continue;
126
+ }
102
127
  const valInit = props[keyInit];
103
- if (skipKeys[keyInit]) {
104
- viewProps[keyInit] = valInit;
128
+ if (keyInit === "style" || keyInit.startsWith("_style")) {
129
+ push();
130
+ cur = valInit;
131
+ push();
105
132
  continue;
106
133
  }
107
134
  if (keyInit === "className" || validStyleProps[keyInit] && valInit && valInit[0] === "_") {
108
135
  push();
109
136
  mergeClassName(keyInit, valInit);
110
- if (cur) {
111
- if (cur[keyInit])
112
- console.warn("just want to see how used");
113
- delete cur[keyInit];
114
- }
115
137
  continue;
116
138
  }
139
+ if (state.keepVariantsAsProps && staticConfig.defaultVariants && keyInit in staticConfig.defaultVariants) {
140
+ viewProps[keyInit] = valInit;
141
+ }
117
142
  let isMedia = keyInit[0] === "$";
118
143
  let isPseudo = validPseudoKeys[keyInit];
144
+ if (!isMedia && !isPseudo && !((_a = staticConfig.variants) == null ? void 0 : _a[keyInit]) && !validStyleProps[keyInit] && !conf.shorthands[keyInit]) {
145
+ viewProps[keyInit] = valInit;
146
+ continue;
147
+ }
119
148
  const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, state.fallbackProps || props, state.resolveVariablesAs);
120
149
  const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
121
150
  if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
122
- console.log("split style", keyInit, expanded);
151
+ console.log(" \xBB getSplitStyles", keyInit, expanded);
123
152
  }
124
153
  for (const [key, val] of expanded) {
125
154
  if (val === void 0) {
@@ -145,41 +174,42 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
145
174
  if (isWeb && !state.noClassNames) {
146
175
  const pseudoStyles = getStylesAtomic({ [key]: pseudos[key] });
147
176
  for (const style2 of pseudoStyles) {
177
+ addStyle(style2.identifier, style2.rules[0]);
148
178
  mergeClassName(`${style2.property}-${key}`, style2.identifier);
149
- insertStyleRule(style2.identifier, style2.rules[0]);
150
179
  }
151
180
  }
152
181
  continue;
153
182
  }
154
183
  if (isMedia) {
155
- const mediaKey = key.slice(1);
156
- if (!mediaQueryConfig[mediaKey]) {
184
+ const mediaKey = key;
185
+ const mediaKeyShort = mediaKey.slice(1);
186
+ if (!mediaQueryConfig[mediaKeyShort]) {
157
187
  viewProps[key] = val;
158
188
  continue;
159
189
  }
160
- const mediaStyle = getSubStyle(val, staticConfig, theme, props, state, true);
161
- if (isWeb) {
190
+ const mediaStyle = getSubStyle(val, staticConfig, theme, props, state);
191
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
192
+ console.log(" \xBB getSplitStyles mediaStyle", mediaKey, mediaStyle, props);
193
+ }
194
+ const shouldDoClasses = isWeb && !state.noClassNames;
195
+ if (shouldDoClasses) {
162
196
  const mediaStyles = getStylesAtomic(mediaStyle);
163
197
  for (const style2 of mediaStyles) {
164
- const out2 = createMediaStyle(style2, mediaKey, mediaQueryConfig);
198
+ const out2 = createMediaStyle(style2, mediaKeyShort, mediaQueryConfig);
199
+ addStyle(out2.identifier, out2.styleRule);
165
200
  mergeClassName(`${out2.identifier}-${mediaKey}`, out2.identifier);
166
- insertStyleRule(out2.identifier, out2.styleRule);
167
- }
168
- if (mediaState[mediaKey]) {
169
- Object.assign(medias, mediaStyle);
170
201
  }
171
202
  } else {
172
203
  if (mediaState[mediaKey]) {
173
- Object.assign(style, mediaStyle);
204
+ push();
205
+ if (process.env.NODE_ENV === "development" && props["debug"]) {
206
+ console.log("apply media style", mediaKey, mediaState);
207
+ }
208
+ Object.assign(shouldDoClasses ? medias : style, mediaStyle);
174
209
  }
175
210
  }
176
211
  continue;
177
212
  }
178
- if (key === "style" || key.startsWith("_style")) {
179
- push();
180
- Object.assign(style, val);
181
- continue;
182
- }
183
213
  if (!isWeb && key === "pointerEvents") {
184
214
  viewProps[key] = val;
185
215
  continue;
@@ -202,24 +232,44 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
202
232
  for (const namespace in transforms) {
203
233
  const [hash, val] = transforms[namespace];
204
234
  const identifier = `_transform${hash}`;
205
- if (!insertedTransforms[identifier]) {
206
- const rule = `.${identifier} { transform: ${val}; }`;
207
- insertStyleRule(identifier, rule);
235
+ if (isClient) {
236
+ if (!insertedTransforms[identifier]) {
237
+ const rule = `.${identifier} { transform: ${val}; }`;
238
+ addStyle(identifier, rule);
239
+ }
208
240
  }
209
241
  classNames[namespace] = identifier;
210
242
  }
211
243
  }
212
244
  if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
213
- console.log("out", { style, pseudos, medias, classNames, viewProps });
245
+ console.log(" \xBB getSplitStyles out", { style, pseudos, medias, classNames, viewProps, state });
214
246
  }
215
247
  return {
216
248
  viewProps,
217
249
  style,
218
250
  medias,
219
251
  pseudos,
220
- classNames
252
+ classNames,
253
+ rulesToInsert
221
254
  };
222
255
  }, "getSplitStyles");
256
+ const insertSplitStyles = /* @__PURE__ */ __name((...args) => {
257
+ const res = getSplitStyles(...args);
258
+ for (const [prop, rule] of res.rulesToInsert) {
259
+ insertStyleRule(prop, rule);
260
+ }
261
+ return res;
262
+ }, "insertSplitStyles");
263
+ const effect = useInsertionEffect || useIsomorphicLayoutEffect;
264
+ const useSplitStyles = /* @__PURE__ */ __name((...args) => {
265
+ const res = getSplitStyles(...args);
266
+ effect(() => {
267
+ for (const [prop, rule] of res.rulesToInsert) {
268
+ insertStyleRule(prop, rule);
269
+ }
270
+ });
271
+ return res;
272
+ }, "useSplitStyles");
223
273
  const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, state, avoidDefaultProps) => {
224
274
  const styleOut = {};
225
275
  for (const key in styleIn) {
@@ -237,7 +287,57 @@ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props,
237
287
  normalizeStyleObject(styleOut);
238
288
  return styleOut;
239
289
  }, "getSubStyle");
290
+ function normalizeStyleObject(style) {
291
+ var _a, _b;
292
+ if (style.padding) {
293
+ style.paddingLeft = style.padding;
294
+ style.paddingTop = style.padding;
295
+ style.paddingRight = style.padding;
296
+ style.paddingBottom = style.padding;
297
+ delete style.padding;
298
+ }
299
+ if (style.paddingHorizontal) {
300
+ style.paddingLeft = style.paddingHorizontal;
301
+ style.paddingRight = style.paddingHorizontal;
302
+ delete style.paddingHorizontal;
303
+ }
304
+ if (style.paddingVertical) {
305
+ style.paddingLeft = style.paddingVertical;
306
+ style.paddingRight = style.paddingVertical;
307
+ delete style.paddingVertical;
308
+ }
309
+ if (style.margin) {
310
+ style.marginLeft = style.margin;
311
+ style.marginTop = style.margin;
312
+ style.marginRight = style.margin;
313
+ style.marginBottom = style.margin;
314
+ delete style.margin;
315
+ }
316
+ if (style.marginHorizontal) {
317
+ style.marginLeft = style.marginHorizontal;
318
+ style.marginRight = style.marginHorizontal;
319
+ delete style.marginHorizontal;
320
+ }
321
+ if (style.marginVertical) {
322
+ style.marginLeft = style.marginVertical;
323
+ style.marginRight = style.marginVertical;
324
+ delete style.marginVertical;
325
+ }
326
+ if (typeof style.flex === "number") {
327
+ const val = style.flex;
328
+ delete style.flex;
329
+ style.flexGrow = (_a = style.flexGrow) != null ? _a : val;
330
+ style.flexShrink = (_b = style.flexShrink) != null ? _b : 1;
331
+ }
332
+ if (!isWeb) {
333
+ fixNativeShadow(style);
334
+ }
335
+ }
336
+ __name(normalizeStyleObject, "normalizeStyleObject");
240
337
  export {
241
338
  getSplitStyles,
242
- getSubStyle
339
+ getSubStyle,
340
+ insertSplitStyles,
341
+ normalizeStyleObject,
342
+ useSplitStyles
243
343
  };
@@ -5,6 +5,7 @@ import {
5
5
  mergeTransform,
6
6
  stylePropsTransform
7
7
  } from "@tamagui/helpers";
8
+ import { getConfig } from "../conf";
8
9
  import { rnw } from "../constants/rnw";
9
10
  import { isVariable } from "../createVariable";
10
11
  function getStylesAtomic(stylesIn, options = {}) {
@@ -33,6 +34,7 @@ __name(getStylesAtomic, "getStylesAtomic");
33
34
  const generateAtomicStyles = /* @__PURE__ */ __name((style) => {
34
35
  return rnw.atomic(rnw.createCompileableStyle(rnw.createReactDOMStyle(style)));
35
36
  }, "generateAtomicStyles");
37
+ let reversedShorthands = null;
36
38
  function getAtomicStyle(style, pseudo, options) {
37
39
  var _a;
38
40
  if (style == null || typeof style !== "object") {
@@ -56,16 +58,26 @@ function getAtomicStyle(style, pseudo, options) {
56
58
  ...out[key],
57
59
  transformProperty
58
60
  };
59
- console.log("got", JSON.stringify({ t, tKey, out, key, atomicStyles }, null, 2));
60
61
  }
61
62
  } else {
62
63
  atomicStyles = generateAtomicStyles(style);
63
64
  }
65
+ if (!reversedShorthands) {
66
+ reversedShorthands = {};
67
+ const conf = getConfig();
68
+ if (conf.shorthands) {
69
+ for (const key in conf.shorthands) {
70
+ reversedShorthands[conf.shorthands[key]] = key;
71
+ }
72
+ }
73
+ }
64
74
  return Object.keys(atomicStyles).map((key) => {
65
75
  const val = atomicStyles[key];
66
- const [_, ogProperty, hash] = val.identifier.split("-");
76
+ const [_, a, b] = val.identifier.split("-");
77
+ const hash = b || a;
67
78
  const psuedoPrefix = pseudo ? `0${pseudo.name}-` : "";
68
- const identifier = `_${ogProperty}-${psuedoPrefix}${hash}`;
79
+ const shortProp = reversedShorthands[val.property] || val.property;
80
+ const identifier = `_${shortProp}-${psuedoPrefix}${hash}`;
69
81
  const className = `.${identifier}`;
70
82
  const rules = val.rules.map((rule) => {
71
83
  if (pseudo) {