@tamagui/core 1.0.0-beta.202 → 1.0.0-beta.203

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 (267) 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 +117 -112
  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 +55 -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 +4 -0
  27. package/dist/cjs/helpers/RNComponents.js.map +0 -0
  28. package/dist/cjs/helpers/addStylesUsingClassname.js +8 -0
  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 +4 -0
  35. package/dist/cjs/helpers/createShallowUpdate.js.map +0 -0
  36. package/dist/cjs/helpers/createTamaguiProvider.js +4 -0
  37. package/dist/cjs/helpers/extendStaticConfig.js +9 -6
  38. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  39. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  40. package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
  41. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  42. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  43. package/dist/cjs/{constants/pseudos.js → helpers/getSize.js} +17 -19
  44. package/dist/cjs/helpers/getSize.js.map +7 -0
  45. package/dist/cjs/helpers/getSplitStyles.js +114 -59
  46. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  47. package/dist/cjs/helpers/getStylesAtomic.js +20 -2
  48. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  49. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  50. package/dist/cjs/helpers/insertStyleRule.js +46 -26
  51. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  52. package/dist/cjs/helpers/isObj.js +4 -0
  53. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  54. package/dist/cjs/helpers/matchMedia.js +4 -0
  55. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  56. package/dist/cjs/helpers/proxyThemeVariables.js +40 -0
  57. package/dist/cjs/helpers/proxyThemeVariables.js.map +7 -0
  58. package/dist/cjs/helpers/themeable.js +7 -2
  59. package/dist/cjs/helpers/themeable.js.map +2 -2
  60. package/dist/cjs/helpers/validate.js +53 -11
  61. package/dist/cjs/helpers/validate.js.map +2 -2
  62. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  63. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  64. package/dist/cjs/hooks/useConstant.js +4 -0
  65. package/dist/cjs/hooks/useFeatures.js +101 -13
  66. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  67. package/dist/cjs/hooks/useIsMounted.js +4 -0
  68. package/dist/cjs/hooks/useIsTouchDevice.js +4 -0
  69. package/dist/cjs/hooks/useMedia.js +31 -12
  70. package/dist/cjs/hooks/useMedia.js.map +2 -2
  71. package/dist/cjs/hooks/usePressable.js +4 -0
  72. package/dist/cjs/hooks/useTheme.js +36 -23
  73. package/dist/cjs/hooks/useTheme.js.map +2 -2
  74. package/dist/cjs/hooks/useUnmountEffect.js +4 -0
  75. package/dist/cjs/index.js +15 -0
  76. package/dist/cjs/index.js.map +2 -2
  77. package/dist/cjs/static.js +3 -0
  78. package/dist/cjs/static.js.map +2 -2
  79. package/dist/cjs/styled.js +7 -4
  80. package/dist/cjs/styled.js.map +2 -2
  81. package/dist/cjs/types.js.map +1 -1
  82. package/dist/cjs/views/Stack.js +5 -0
  83. package/dist/cjs/views/Stack.js.map +2 -2
  84. package/dist/cjs/views/Text.js +5 -0
  85. package/dist/cjs/views/Text.js.map +2 -2
  86. package/dist/cjs/views/TextAncestorContext.js +6 -0
  87. package/dist/cjs/views/Theme.js +11 -4
  88. package/dist/cjs/views/Theme.js.map +2 -2
  89. package/dist/cjs/views/ThemeInverse.js +5 -0
  90. package/dist/cjs/views/ThemeProvider.js +6 -1
  91. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  92. package/dist/cjs/views/ThemeReset.js +4 -0
  93. package/dist/esm/Tamagui.js +10 -2
  94. package/dist/esm/Tamagui.js.map +2 -2
  95. package/dist/esm/ThemeManager.js +21 -11
  96. package/dist/esm/ThemeManager.js.map +2 -2
  97. package/dist/esm/conf.js +0 -1
  98. package/dist/esm/conf.js.map +2 -2
  99. package/dist/esm/constants/platform.js +2 -0
  100. package/dist/esm/constants/platform.js.map +2 -2
  101. package/dist/esm/createComponent.js +107 -115
  102. package/dist/esm/createComponent.js.map +2 -2
  103. package/dist/esm/createTamagui.js +51 -27
  104. package/dist/esm/createTamagui.js.map +2 -2
  105. package/dist/esm/createTokens.js +2 -6
  106. package/dist/esm/createTokens.js.map +2 -2
  107. package/dist/esm/createVariable.js +8 -2
  108. package/dist/esm/createVariable.js.map +2 -2
  109. package/dist/esm/defaultComponentState.js +0 -11
  110. package/dist/esm/defaultComponentState.js.map +3 -3
  111. package/dist/esm/helpers/RNComponents.js +0 -0
  112. package/dist/esm/helpers/RNComponents.js.map +0 -0
  113. package/dist/esm/helpers/addStylesUsingClassname.js +4 -1
  114. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  115. package/dist/esm/helpers/createPropMapper.js +59 -61
  116. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  117. package/dist/esm/helpers/createShallowUpdate.js +0 -0
  118. package/dist/esm/helpers/createShallowUpdate.js.map +0 -0
  119. package/dist/esm/helpers/extendStaticConfig.js +9 -6
  120. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  121. package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
  122. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  123. package/dist/esm/helpers/getSize.js +13 -0
  124. package/dist/esm/helpers/getSize.js.map +7 -0
  125. package/dist/esm/helpers/getSplitStyles.js +110 -61
  126. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  127. package/dist/esm/helpers/getStylesAtomic.js +15 -2
  128. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  129. package/dist/esm/helpers/insertStyleRule.js +36 -26
  130. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  131. package/dist/esm/helpers/proxyThemeVariables.js +18 -0
  132. package/dist/esm/helpers/proxyThemeVariables.js.map +7 -0
  133. package/dist/esm/helpers/themeable.js +3 -2
  134. package/dist/esm/helpers/themeable.js.map +2 -2
  135. package/dist/esm/helpers/validate.js +24 -11
  136. package/dist/esm/helpers/validate.js.map +2 -2
  137. package/dist/esm/hooks/useFeatures.js +96 -18
  138. package/dist/esm/hooks/useFeatures.js.map +2 -2
  139. package/dist/esm/hooks/useMedia.js +20 -12
  140. package/dist/esm/hooks/useMedia.js.map +2 -2
  141. package/dist/esm/hooks/useTheme.js +28 -23
  142. package/dist/esm/hooks/useTheme.js.map +2 -2
  143. package/dist/esm/index.js +4 -0
  144. package/dist/esm/index.js.map +2 -2
  145. package/dist/esm/static.js +3 -0
  146. package/dist/esm/static.js.map +2 -2
  147. package/dist/esm/styled.js +3 -4
  148. package/dist/esm/styled.js.map +2 -2
  149. package/dist/esm/views/Stack.js +1 -0
  150. package/dist/esm/views/Stack.js.map +2 -2
  151. package/dist/esm/views/Text.js +1 -0
  152. package/dist/esm/views/Text.js.map +2 -2
  153. package/dist/esm/views/Theme.js +7 -4
  154. package/dist/esm/views/Theme.js.map +2 -2
  155. package/dist/esm/views/ThemeProvider.js +2 -1
  156. package/dist/esm/views/ThemeProvider.js.map +2 -2
  157. package/dist/jsx/Tamagui.js +10 -2
  158. package/dist/jsx/ThemeManager.js +21 -11
  159. package/dist/jsx/conf.js +0 -1
  160. package/dist/jsx/constants/platform.js +2 -0
  161. package/dist/jsx/createComponent.js +105 -114
  162. package/dist/jsx/createTamagui.js +51 -27
  163. package/dist/jsx/createTokens.js +2 -6
  164. package/dist/jsx/createVariable.js +8 -2
  165. package/dist/jsx/defaultComponentState.js +0 -11
  166. package/dist/jsx/helpers/RNComponents.js +0 -0
  167. package/dist/jsx/helpers/addStylesUsingClassname.js +4 -1
  168. package/dist/jsx/helpers/createPropMapper.js +59 -61
  169. package/dist/jsx/helpers/createShallowUpdate.js +0 -0
  170. package/dist/jsx/helpers/extendStaticConfig.js +9 -6
  171. package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
  172. package/dist/jsx/helpers/getSize.js +12 -0
  173. package/dist/jsx/helpers/getSplitStyles.js +110 -61
  174. package/dist/jsx/helpers/getStylesAtomic.js +15 -2
  175. package/dist/jsx/helpers/insertStyleRule.js +36 -26
  176. package/dist/jsx/helpers/proxyThemeVariables.js +17 -0
  177. package/dist/jsx/helpers/themeable.js +3 -3
  178. package/dist/jsx/helpers/validate.js +24 -11
  179. package/dist/jsx/hooks/useFeatures.js +96 -18
  180. package/dist/jsx/hooks/useMedia.js +20 -12
  181. package/dist/jsx/hooks/useTheme.js +28 -23
  182. package/dist/jsx/index.js +4 -0
  183. package/dist/jsx/static.js +3 -0
  184. package/dist/jsx/styled.js +3 -4
  185. package/dist/jsx/views/Stack.js +1 -0
  186. package/dist/jsx/views/Text.js +1 -0
  187. package/dist/jsx/views/Theme.js +7 -4
  188. package/dist/jsx/views/ThemeProvider.js +2 -2
  189. package/package.json +6 -6
  190. package/types/Tamagui.d.ts +18 -1
  191. package/types/Tamagui.d.ts.map +1 -1
  192. package/types/ThemeManager.d.ts +3 -3
  193. package/types/ThemeManager.d.ts.map +1 -1
  194. package/types/conf.d.ts +2 -0
  195. package/types/conf.d.ts.map +1 -1
  196. package/types/constants/platform.d.ts +1 -0
  197. package/types/constants/platform.d.ts.map +1 -1
  198. package/types/createComponent.d.ts +3 -4
  199. package/types/createComponent.d.ts.map +1 -1
  200. package/types/createFont.d.ts +1 -1
  201. package/types/createFont.d.ts.map +1 -1
  202. package/types/createTamagui.d.ts +2 -1
  203. package/types/createTamagui.d.ts.map +1 -1
  204. package/types/createTokens.d.ts +0 -26
  205. package/types/createTokens.d.ts.map +1 -1
  206. package/types/createVariable.d.ts +1 -0
  207. package/types/createVariable.d.ts.map +1 -1
  208. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  209. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  210. package/types/helpers/createPropMapper.d.ts +1 -1
  211. package/types/helpers/createPropMapper.d.ts.map +1 -1
  212. package/types/helpers/extendStaticConfig.d.ts +2 -2
  213. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  214. package/types/helpers/getSize.d.ts +3 -0
  215. package/types/helpers/getSize.d.ts.map +1 -0
  216. package/types/helpers/getSplitStyles.d.ts +4 -1
  217. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  218. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  219. package/types/helpers/insertStyleRule.d.ts +2 -1
  220. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  221. package/types/helpers/proxyThemeVariables.d.ts +2 -0
  222. package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
  223. package/types/helpers/themeable.d.ts +3 -1
  224. package/types/helpers/themeable.d.ts.map +1 -1
  225. package/types/helpers/validate.d.ts.map +1 -1
  226. package/types/hooks/useMedia.d.ts +3 -3
  227. package/types/hooks/useMedia.d.ts.map +1 -1
  228. package/types/hooks/useTheme.d.ts +1 -1
  229. package/types/hooks/useTheme.d.ts.map +1 -1
  230. package/types/index.d.ts +2 -0
  231. package/types/index.d.ts.map +1 -1
  232. package/types/static.d.ts +3 -0
  233. package/types/static.d.ts.map +1 -1
  234. package/types/styled.d.ts +12 -3
  235. package/types/styled.d.ts.map +1 -1
  236. package/types/types.d.ts +73 -45
  237. package/types/types.d.ts.map +1 -1
  238. package/types/views/Theme.d.ts +1 -0
  239. package/types/views/Theme.d.ts.map +1 -1
  240. package/types/views/ThemeProvider.d.ts +1 -0
  241. package/types/views/ThemeProvider.d.ts.map +1 -1
  242. package/dist/cjs/constants/pseudos.js.map +0 -7
  243. package/dist/cjs/createShallowUpdate.js +0 -1
  244. package/dist/cjs/createShallowUpdate.js.map +0 -7
  245. package/dist/cjs/devtools.js +0 -32
  246. package/dist/cjs/devtools.js.map +0 -7
  247. package/dist/cjs/spacedChildren.js +0 -86
  248. package/dist/cjs/spacedChildren.js.map +0 -7
  249. package/dist/cjs/tamagui-base.css +0 -8
  250. package/dist/cjs/tamagui-base.css.map +0 -7
  251. package/dist/esm/constants/pseudos.js +0 -18
  252. package/dist/esm/constants/pseudos.js.map +0 -7
  253. package/dist/esm/createShallowUpdate.js +0 -1
  254. package/dist/esm/createShallowUpdate.js.map +0 -7
  255. package/dist/esm/devtools.js +0 -14
  256. package/dist/esm/devtools.js.map +0 -7
  257. package/dist/esm/spacedChildren.js +0 -52
  258. package/dist/esm/spacedChildren.js.map +0 -7
  259. package/dist/esm/tamagui-base.css +0 -8
  260. package/dist/esm/tamagui-base.css.map +0 -7
  261. package/dist/jsx/constants/pseudos.js +0 -17
  262. package/dist/jsx/createShallowUpdate.js +0 -0
  263. package/dist/jsx/devtools.js +0 -13
  264. package/dist/jsx/spacedChildren.js +0 -44
  265. package/dist/jsx/tamagui-base.css +0 -7
  266. package/types/spacedChildren.d.ts +0 -9
  267. package/types/spacedChildren.d.ts.map +0 -1
@@ -4,63 +4,67 @@ 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((c) => {
8
- const variants = c.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");
30
- const defaultProps = c.defaultProps || {};
31
- return (key, value, theme, props, staticConfig, returnVariablesAs = !!props.animation ? "value" : "auto", avoidDefaultProps = false) => {
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 || {};
33
+ const defaultProps = staticConfig.defaultProps || {};
34
+ return (key, value, theme, props, returnVariablesAs = !!props.animation ? "value" : "auto", avoidDefaultProps = false) => {
32
35
  const conf = getConfig();
33
36
  if (!conf) {
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
- if (!variantValue) {
42
- return value;
43
- }
44
- if (typeof variantValue === "function") {
45
- variantValue = variantValue(value, {
46
- tokens: conf.tokensParsed,
47
- theme,
48
- props: avoidDefaultProps ? props : new Proxy(props, {
49
- get(target, key2) {
50
- if (Reflect.has(target, key2)) {
51
- return Reflect.get(target, key2);
44
+ if (variantValue) {
45
+ if (typeof variantValue === "function") {
46
+ const fn = variantValue;
47
+ variantValue = fn(value, {
48
+ fonts: conf.fontsParsed,
49
+ tokens: conf.tokensParsed,
50
+ theme,
51
+ props: avoidDefaultProps ? props : new Proxy(props, {
52
+ get(target, key2) {
53
+ if (Reflect.has(target, key2)) {
54
+ return Reflect.get(target, key2);
55
+ }
56
+ if (defaultProps) {
57
+ return Reflect.get(defaultProps, key2);
58
+ }
52
59
  }
53
- if (staticConfig.defaultProps) {
54
- return Reflect.get(staticConfig.defaultProps, key2);
55
- }
56
- }
57
- })
58
- });
59
- }
60
- if (isObj(variantValue)) {
61
- variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs);
60
+ })
61
+ });
62
+ }
63
+ if (isObj(variantValue)) {
64
+ variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs);
65
+ }
66
+ return variantValue;
62
67
  }
63
- return variantValue;
64
68
  }
65
69
  let shouldReturn = false;
66
70
  if (conf.shorthands[key]) {
@@ -108,34 +112,28 @@ const resolveTokens = /* @__PURE__ */ __name((input, conf, theme, fontFamily, re
108
112
  }
109
113
  return res;
110
114
  }, "resolveTokens");
111
- const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed }, theme, fontFamily = "$body", resolveAs) => {
112
- 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;
113
121
  let valOrVar;
114
122
  let hasSet = false;
115
- const valueName = value[0] === "$" ? value.slice(1) : value;
116
- if (valueName in theme) {
117
- valOrVar = theme[valueName];
123
+ if (value in theme) {
124
+ valOrVar = theme[value];
118
125
  hasSet = true;
119
126
  } else {
120
127
  switch (key) {
121
128
  case "fontFamily":
122
- valOrVar = ((_a = tokensParsed.font[value]) == null ? void 0 : _a.family) || value;
129
+ valOrVar = ((_a = fontsParsed[value]) == null ? void 0 : _a.family) || value;
123
130
  hasSet = true;
124
131
  break;
125
132
  case "fontSize":
126
- valOrVar = ((_b = tokensParsed.font[fontFamily]) == null ? void 0 : _b.size[value]) || value;
127
- hasSet = true;
128
- break;
129
133
  case "lineHeight":
130
- valOrVar = ((_c = tokensParsed.font[fontFamily]) == null ? void 0 : _c.lineHeight[value]) || value;
131
- hasSet = true;
132
- break;
133
134
  case "letterSpacing":
134
- valOrVar = ((_d = tokensParsed.font[fontFamily]) == null ? void 0 : _d.letterSpacing[value]) || value;
135
- hasSet = true;
136
- break;
137
135
  case "fontWeight":
138
- 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;
139
137
  hasSet = true;
140
138
  break;
141
139
  }
@@ -161,7 +159,7 @@ const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed }, theme, fo
161
159
  }
162
160
  if (process.env.NODE_ENV === "development") {
163
161
  if (value && value[0] === "$") {
164
- console.warn(`\u26A0\uFE0F Missing token in theme:`, value, theme);
162
+ console.warn(`\u26A0\uFE0F Missing token:`, key, value, fontFamily, theme, fontsParsed);
165
163
  return null;
166
164
  }
167
165
  }
File without changes
@@ -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,25 @@ import {
7
7
  validPseudoKeys,
8
8
  validStyles
9
9
  } from "@tamagui/helpers";
10
- import { isWeb } from "../constants/platform";
10
+ import { getConfig } from "../conf";
11
+ import { isClient, isWeb } from "../constants/platform";
11
12
  import { mediaQueryConfig, mediaState } from "../hooks/useMedia";
12
13
  import { createMediaStyle } from "./createMediaStyle";
13
14
  import { fixNativeShadow } from "./fixNativeShadow";
14
15
  import { getStylesAtomic } from "./getStylesAtomic";
15
16
  import { insertStyleRule, insertedTransforms, updateInserted } from "./insertStyleRule";
16
- const skipKeys = {
17
+ const skipProps = {
17
18
  animation: true,
18
- animated: true,
19
- children: true,
20
- key: true,
21
- ref: true
19
+ animateOnly: true,
20
+ debug: true
22
21
  };
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");
22
+ let conf;
36
23
  const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state, defaultClassNames) => {
24
+ var _a;
25
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
26
+ console.log(" \xBB getSplitStyles", { props, state, defaultClassNames });
27
+ }
28
+ conf = conf || getConfig();
37
29
  const validStyleProps = staticConfig.isText ? stylePropsText : validStyles;
38
30
  const viewProps = {};
39
31
  const style = {};
@@ -45,20 +37,42 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
45
37
  let cur = null;
46
38
  let transforms = {};
47
39
  function mergeClassName(key, val) {
48
- if (!val)
40
+ if (!val) {
49
41
  return;
42
+ }
50
43
  if (val.startsWith("_transform-")) {
51
44
  const isMediaOrPseudo = key !== "transform";
52
45
  const isMedia = isMediaOrPseudo && key[11] === "_";
53
- const isPsuedo = isMediaOrPseudo && !isMedia;
46
+ const isPsuedo = isMediaOrPseudo && key[11] === "0" || key.endsWith("Style");
54
47
  const namespace = isMedia ? key.split("_")[2] : isPsuedo ? key.split("-")[1] : "transform";
55
- if (!insertedTransforms[val]) {
56
- updateInserted();
48
+ let transform = insertedTransforms[val];
49
+ if (isClient) {
50
+ if (!transform) {
51
+ updateInserted();
52
+ transform = insertedTransforms[val];
53
+ }
54
+ if (!transform) {
55
+ if (isWeb && val[0] !== "_") {
56
+ transform = val;
57
+ } else {
58
+ console.trace("?", key, val, cur, props, state);
59
+ }
60
+ }
61
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
62
+ console.log(" \xBB getSplitStyles mergeClassName transform", { key, val, namespace, transform, insertedTransforms });
63
+ }
64
+ if (process.env.NODE_ENV === "development") {
65
+ if (!transform) {
66
+ console.trace("NO TRANSFORM?", { key, val, transform });
67
+ }
68
+ }
57
69
  }
58
- const transform = insertedTransforms[val];
59
70
  transforms[namespace] = transforms[namespace] || ["", ""];
60
- transforms[namespace][0] += val.replace("_transform", "");
61
- transforms[namespace][1] += transform;
71
+ const identifier = val.replace("_transform", "");
72
+ transforms[namespace][0] += identifier;
73
+ if (transform) {
74
+ transforms[namespace][1] += transform;
75
+ }
62
76
  } else {
63
77
  classNames[key] = val;
64
78
  }
@@ -68,17 +82,21 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
68
82
  if (!cur)
69
83
  return;
70
84
  normalizeStyleObject(cur);
85
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
86
+ console.log(" \xBB getSplitStyles push", cur, state);
87
+ }
71
88
  if (isWeb && !state.noClassNames) {
72
89
  const atomic = getStylesAtomic(cur);
73
90
  for (const atomicStyle of atomic) {
74
91
  if (!state.noClassNames) {
75
- mergeClassName(atomicStyle.property, atomicStyle.identifier);
76
92
  insertStyleRule(atomicStyle.identifier, atomicStyle.rules[0]);
93
+ mergeClassName(atomicStyle.property, atomicStyle.identifier);
77
94
  } else {
78
95
  style[atomicStyle.property] = atomicStyle.value;
79
96
  }
80
97
  }
81
- } else {
98
+ }
99
+ if (!isWeb || state.noClassNames || state.resolveVariablesAs === "value" || state.resolveVariablesAs === "both") {
82
100
  for (const key in cur) {
83
101
  if (key in stylePropsTransform) {
84
102
  mergeTransform(style, key, cur[key]);
@@ -91,30 +109,40 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
91
109
  }
92
110
  __name(push, "push");
93
111
  for (const keyInit in props) {
112
+ if (skipProps[keyInit]) {
113
+ continue;
114
+ }
94
115
  const valInit = props[keyInit];
95
- if (skipKeys[keyInit]) {
96
- viewProps[keyInit] = valInit;
116
+ if (keyInit === "style" || keyInit.startsWith("_style")) {
117
+ push();
118
+ cur = valInit;
119
+ push();
97
120
  continue;
98
121
  }
99
122
  if (keyInit === "className" || validStyleProps[keyInit] && valInit && valInit[0] === "_") {
100
123
  push();
101
124
  mergeClassName(keyInit, valInit);
102
- if (cur) {
103
- if (cur[keyInit])
104
- console.warn("just want to see how used");
105
- delete cur[keyInit];
106
- }
107
125
  continue;
108
126
  }
127
+ if (state.keepVariantsAsProps && staticConfig.defaultVariants && keyInit in staticConfig.defaultVariants) {
128
+ viewProps[keyInit] = valInit;
129
+ }
109
130
  let isMedia = keyInit[0] === "$";
110
131
  let isPseudo = validPseudoKeys[keyInit];
111
- const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, props, staticConfig, state.resolveVariablesAs);
132
+ if (!isMedia && !isPseudo && !((_a = staticConfig.variants) == null ? void 0 : _a[keyInit]) && !validStyleProps[keyInit] && !conf.shorthands[keyInit]) {
133
+ viewProps[keyInit] = valInit;
134
+ continue;
135
+ }
136
+ const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, state.fallbackProps || props, state.resolveVariablesAs);
112
137
  const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
138
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
139
+ console.log(" \xBB getSplitStyles", keyInit, expanded);
140
+ }
113
141
  for (const [key, val] of expanded) {
114
142
  if (val === void 0) {
115
143
  continue;
116
144
  }
117
- if (val && val[0] === "_") {
145
+ if (key !== "target" && val && val[0] === "_") {
118
146
  mergeClassName(key, val);
119
147
  continue;
120
148
  }
@@ -130,45 +158,46 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
130
158
  continue;
131
159
  }
132
160
  pseudos[key] = pseudos[key] || {};
133
- pseudos[key] = getSubStyle(val, staticConfig, theme, props, state.resolveVariablesAs, true);
161
+ pseudos[key] = getSubStyle(val, staticConfig, theme, props, state, true);
134
162
  if (isWeb && !state.noClassNames) {
135
163
  const pseudoStyles = getStylesAtomic({ [key]: pseudos[key] });
136
164
  for (const style2 of pseudoStyles) {
137
- mergeClassName(`${style2.property}-${key}`, style2.identifier);
138
165
  insertStyleRule(style2.identifier, style2.rules[0]);
166
+ mergeClassName(`${style2.property}-${key}`, style2.identifier);
139
167
  }
140
168
  }
141
169
  continue;
142
170
  }
143
171
  if (isMedia) {
144
- const mediaKey = key.slice(1);
145
- if (!mediaQueryConfig[mediaKey]) {
146
- viewProps[key] = valInit;
172
+ const mediaKey = key;
173
+ const mediaKeyShort = mediaKey.slice(1);
174
+ if (!mediaQueryConfig[mediaKeyShort]) {
175
+ viewProps[key] = val;
147
176
  continue;
148
177
  }
149
- const mediaStyle = getSubStyle(valInit, staticConfig, theme, props, state.resolveVariablesAs, true);
150
- if (isWeb) {
178
+ const mediaStyle = getSubStyle(val, staticConfig, theme, props, state);
179
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
180
+ console.log(" \xBB getSplitStyles mediaStyle", mediaKey, mediaStyle, props);
181
+ }
182
+ const shouldDoClasses = isWeb && !state.noClassNames;
183
+ if (shouldDoClasses) {
151
184
  const mediaStyles = getStylesAtomic(mediaStyle);
152
185
  for (const style2 of mediaStyles) {
153
- const out2 = createMediaStyle(style2, mediaKey, mediaQueryConfig);
154
- mergeClassName(`${out2.identifier}-${mediaKey}`, out2.identifier);
186
+ const out2 = createMediaStyle(style2, mediaKeyShort, mediaQueryConfig);
155
187
  insertStyleRule(out2.identifier, out2.styleRule);
156
- }
157
- if (mediaState[mediaKey]) {
158
- Object.assign(medias, mediaStyle);
188
+ mergeClassName(`${out2.identifier}-${mediaKey}`, out2.identifier);
159
189
  }
160
190
  } else {
161
191
  if (mediaState[mediaKey]) {
162
- Object.assign(style, mediaStyle);
192
+ push();
193
+ if (process.env.NODE_ENV === "development" && props["debug"]) {
194
+ console.log("apply media style", mediaKey, mediaState);
195
+ }
196
+ Object.assign(shouldDoClasses ? medias : style, mediaStyle);
163
197
  }
164
198
  }
165
199
  continue;
166
200
  }
167
- if (key === "style" || key.startsWith("_style")) {
168
- push();
169
- Object.assign(style, val);
170
- continue;
171
- }
172
201
  if (!isWeb && key === "pointerEvents") {
173
202
  viewProps[key] = val;
174
203
  continue;
@@ -191,13 +220,18 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
191
220
  for (const namespace in transforms) {
192
221
  const [hash, val] = transforms[namespace];
193
222
  const identifier = `_transform${hash}`;
194
- if (!insertedTransforms[identifier]) {
195
- const rule = `.${identifier} { transform: ${val}; }`;
196
- insertStyleRule(identifier, rule);
223
+ if (isClient) {
224
+ if (!insertedTransforms[identifier]) {
225
+ const rule = `.${identifier} { transform: ${val}; }`;
226
+ insertStyleRule(identifier, rule);
227
+ }
197
228
  }
198
229
  classNames[namespace] = identifier;
199
230
  }
200
231
  }
232
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
233
+ console.log(" \xBB getSplitStyles out", { style, pseudos, medias, classNames, viewProps, state });
234
+ }
201
235
  return {
202
236
  viewProps,
203
237
  style,
@@ -206,11 +240,11 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
206
240
  classNames
207
241
  };
208
242
  }, "getSplitStyles");
209
- const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, resolveVariablesAs, avoidDefaultProps) => {
243
+ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, state, avoidDefaultProps) => {
210
244
  const styleOut = {};
211
245
  for (const key in styleIn) {
212
246
  const val = styleIn[key];
213
- const out = staticConfig.propMapper(key, val, theme, props, staticConfig, resolveVariablesAs, avoidDefaultProps);
247
+ const out = staticConfig.propMapper(key, val, theme, state.fallbackProps || props, state.resolveVariablesAs, avoidDefaultProps);
214
248
  const expanded = out === true || !out ? [[key, val]] : Object.entries(out);
215
249
  for (const [skey, sval] of expanded) {
216
250
  if (skey in stylePropsTransform) {
@@ -223,6 +257,21 @@ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props,
223
257
  normalizeStyleObject(styleOut);
224
258
  return styleOut;
225
259
  }, "getSubStyle");
260
+ function normalizeStyleObject(style) {
261
+ var _a, _b;
262
+ if (typeof style.flex === "number") {
263
+ const val = style.flex;
264
+ delete style.flex;
265
+ style.flexGrow = (_a = style.flexGrow) != null ? _a : val;
266
+ style.flexShrink = (_b = style.flexShrink) != null ? _b : 1;
267
+ }
268
+ if (!isWeb) {
269
+ fixNativeShadow(style);
270
+ }
271
+ }
272
+ __name(normalizeStyleObject, "normalizeStyleObject");
226
273
  export {
227
- getSplitStyles
274
+ getSplitStyles,
275
+ getSubStyle,
276
+ normalizeStyleObject
228
277
  };
@@ -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") {
@@ -60,11 +62,22 @@ function getAtomicStyle(style, pseudo, options) {
60
62
  } else {
61
63
  atomicStyles = generateAtomicStyles(style);
62
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
+ }
63
74
  return Object.keys(atomicStyles).map((key) => {
64
75
  const val = atomicStyles[key];
65
- const [_, ogProperty, hash] = val.identifier.split("-");
76
+ const [_, a, b] = val.identifier.split("-");
77
+ const hash = b || a;
66
78
  const psuedoPrefix = pseudo ? `0${pseudo.name}-` : "";
67
- const identifier = `_${ogProperty}-${psuedoPrefix}${hash}`;
79
+ const shortProp = reversedShorthands[val.property] || val.property;
80
+ const identifier = `_${shortProp}-${psuedoPrefix}${hash}`;
68
81
  const className = `.${identifier}`;
69
82
  const rules = val.rules.map((rule) => {
70
83
  if (pseudo) {
@@ -6,23 +6,30 @@ const insertedTransforms = {};
6
6
  const getAllSelectors = /* @__PURE__ */ __name(() => allSelectors, "getAllSelectors");
7
7
  const getInsertedRules = /* @__PURE__ */ __name(() => Object.values(insertedSelectors), "getInsertedRules");
8
8
  const getAllTransforms = /* @__PURE__ */ __name(() => insertedTransforms, "getAllTransforms");
9
- function addTransform(identifier, rule) {
10
- const s = rule.indexOf("transform:");
9
+ function addTransform(identifier, css, rule) {
10
+ const s = css.indexOf("transform:");
11
11
  if (s === -1) {
12
- console.error(`not a transform ${identifier} ${rule}`);
12
+ if (process.env.NODE_ENV === "development") {
13
+ console.groupCollapsed(`\u274C Invalid transform, likely used deg/% improperly ${identifier}`);
14
+ console.log("rule:", rule);
15
+ console.trace();
16
+ console.groupEnd();
17
+ } else {
18
+ console.error(`Missing transform`, identifier, css, rule);
19
+ }
13
20
  return;
14
21
  }
15
22
  const startI = s + "transform:".length;
16
- const endI = rule.indexOf(";");
17
- const value = rule.slice(startI, endI);
23
+ const endI = css.indexOf(";");
24
+ const value = css.slice(startI, endI);
18
25
  insertedTransforms[identifier] = value;
19
26
  }
20
27
  __name(addTransform, "addTransform");
28
+ const isClient = typeof document !== "undefined";
21
29
  let hasInsertedSinceUpdate = true;
22
30
  function updateInserted() {
23
- if (typeof document === "undefined") {
31
+ if (!isClient)
24
32
  return;
25
- }
26
33
  if (!hasInsertedSinceUpdate) {
27
34
  console.warn("hasnt inserted since");
28
35
  return;
@@ -33,19 +40,22 @@ function updateInserted() {
33
40
  for (let i = 0; i < sheets.length; i++) {
34
41
  const rules = sheets[i].cssRules;
35
42
  const firstRule = rules[0];
36
- if (!firstRule)
43
+ if (!(firstRule instanceof CSSStyleRule))
37
44
  continue;
38
- const firstSelector = firstRule["selectorText"];
45
+ const firstSelector = firstRule.selectorText;
39
46
  if (!firstSelector)
40
47
  continue;
41
48
  if (firstSelector === ":root" || firstSelector.startsWith("._")) {
42
- for (const rule of rules) {
43
- if (!rule.selectorText)
49
+ for (let i2 = 0; i2 < rules.length; i2++) {
50
+ const rule = rules.item(i2);
51
+ if (!(rule instanceof CSSStyleRule))
44
52
  continue;
45
53
  const identifier = rule.selectorText.slice(1);
46
- allSelectors[identifier] = true;
47
- if (identifier.startsWith("_transform")) {
48
- addTransform(identifier, rule.cssText);
54
+ if (!allSelectors[identifier]) {
55
+ allSelectors[identifier] = process.env.NODE_ENV === "development" ? rule.cssText : true;
56
+ if (identifier.startsWith("_transform")) {
57
+ addTransform(identifier, rule.cssText, rule);
58
+ }
49
59
  }
50
60
  }
51
61
  }
@@ -54,23 +64,22 @@ function updateInserted() {
54
64
  }
55
65
  __name(updateInserted, "updateInserted");
56
66
  updateInserted();
57
- const newRulesStyleTag = typeof document !== "undefined" ? document.head.appendChild(document.createElement("style")) : null;
58
- function insertStyleRule(identifier, rule) {
59
- if (allSelectors[identifier]) {
67
+ const sheet = isClient ? document.head.appendChild(document.createElement("style")).sheet : null;
68
+ function updateInsertedCache(identifier, rule) {
69
+ if (insertedSelectors[identifier])
60
70
  return;
61
- }
62
- hasInsertedSinceUpdate = true;
63
71
  insertedSelectors[identifier] = rule;
64
- allSelectors[identifier] = process.env.NODE_ENV === "development" ? rule : true;
65
72
  if (identifier.startsWith("_transform")) {
66
73
  addTransform(identifier, rule);
67
74
  }
68
- if (!newRulesStyleTag) {
75
+ }
76
+ __name(updateInsertedCache, "updateInsertedCache");
77
+ function insertStyleRule(identifier, rule) {
78
+ if (allSelectors[identifier])
69
79
  return;
70
- }
71
- const sheet = newRulesStyleTag.sheet;
72
- sheet.insertRule(rule, sheet.cssRules.length);
73
- return identifier;
80
+ hasInsertedSinceUpdate = true;
81
+ updateInsertedCache(identifier, rule);
82
+ sheet == null ? void 0 : sheet.insertRule(rule, sheet.cssRules.length);
74
83
  }
75
84
  __name(insertStyleRule, "insertStyleRule");
76
85
  export {
@@ -79,5 +88,6 @@ export {
79
88
  getInsertedRules,
80
89
  insertStyleRule,
81
90
  insertedTransforms,
82
- updateInserted
91
+ updateInserted,
92
+ updateInsertedCache
83
93
  };