@tamagui/core 1.0.0-beta.179 → 1.0.0-beta.181

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 (244) 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 +12 -0
  10. package/dist/cjs/constants/pseudos.js +37 -0
  11. package/dist/cjs/constants/pseudos.js.map +7 -0
  12. package/dist/cjs/constants/rnw.js +4 -0
  13. package/dist/cjs/contexts/ButtonInsideButtonContext.js +4 -0
  14. package/dist/cjs/createComponent.js +132 -126
  15. package/dist/cjs/createComponent.js.map +2 -2
  16. package/dist/cjs/createFont.js +4 -0
  17. package/dist/cjs/createShallowUpdate.js +1 -0
  18. package/dist/cjs/createShallowUpdate.js.map +7 -0
  19. package/dist/cjs/createShorthands.js +4 -0
  20. package/dist/cjs/createTamagui.js +12 -0
  21. package/dist/cjs/createTamagui.js.map +2 -2
  22. package/dist/cjs/createTheme.js +4 -0
  23. package/dist/cjs/createTokens.js +5 -0
  24. package/dist/cjs/createTokens.js.map +1 -1
  25. package/dist/cjs/createVariable.js +9 -0
  26. package/dist/cjs/defaultComponentState.js +0 -30
  27. package/dist/cjs/defaultComponentState.js.map +3 -3
  28. package/dist/cjs/devtools.js +32 -0
  29. package/dist/cjs/devtools.js.map +7 -0
  30. package/dist/cjs/helpers/RNComponents.js +38 -0
  31. package/dist/cjs/helpers/RNComponents.js.map +7 -0
  32. package/dist/cjs/helpers/addStylesUsingClassname.js +8 -0
  33. package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
  34. package/dist/cjs/helpers/areEqualSets.js +4 -0
  35. package/dist/cjs/helpers/createMediaStyle.js +8 -6
  36. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  37. package/dist/cjs/helpers/createPropMapper.js +57 -56
  38. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  39. package/dist/cjs/helpers/createShallowUpdate.js +55 -0
  40. package/dist/cjs/helpers/createShallowUpdate.js.map +7 -0
  41. package/dist/cjs/helpers/createTamaguiProvider.js +5 -5
  42. package/dist/cjs/helpers/createTamaguiProvider.js.map +2 -2
  43. package/dist/cjs/helpers/extendStaticConfig.js +8 -6
  44. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  45. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  46. package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
  47. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  48. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  49. package/dist/cjs/helpers/getSplitStyles.js +94 -47
  50. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  51. package/dist/cjs/helpers/getStylesAtomic.js +20 -2
  52. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  53. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  54. package/dist/cjs/helpers/insertStyleRule.js +46 -26
  55. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  56. package/dist/cjs/helpers/isObj.js +4 -0
  57. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  58. package/dist/cjs/helpers/matchMedia.js +4 -0
  59. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  60. package/dist/cjs/helpers/themeable.js +8 -2
  61. package/dist/cjs/helpers/themeable.js.map +2 -2
  62. package/dist/cjs/helpers/validate.js +46 -5
  63. package/dist/cjs/helpers/validate.js.map +2 -2
  64. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  65. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  66. package/dist/cjs/hooks/useConstant.js +4 -0
  67. package/dist/cjs/hooks/useFeatures.js +101 -12
  68. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  69. package/dist/cjs/hooks/useIsMounted.js +4 -0
  70. package/dist/cjs/hooks/useIsTouchDevice.js +4 -0
  71. package/dist/cjs/hooks/useMedia.js +36 -43
  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 +28 -13
  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 +14 -0
  78. package/dist/cjs/index.js.map +2 -2
  79. package/dist/cjs/styled.js +8 -15
  80. package/dist/cjs/styled.js.map +2 -2
  81. package/dist/cjs/tamagui-base.css +8 -0
  82. package/dist/cjs/tamagui-base.css.map +7 -0
  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 +17 -19
  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 +4 -0
  94. package/dist/cjs/views/ThemeReset.js +4 -0
  95. package/dist/esm/Tamagui.js +10 -2
  96. package/dist/esm/Tamagui.js.map +2 -2
  97. package/dist/esm/ThemeManager.js +21 -11
  98. package/dist/esm/ThemeManager.js.map +2 -2
  99. package/dist/esm/conf.js +0 -1
  100. package/dist/esm/conf.js.map +2 -2
  101. package/dist/esm/constants/pseudos.js +18 -0
  102. package/dist/esm/constants/pseudos.js.map +7 -0
  103. package/dist/esm/createComponent.js +122 -129
  104. package/dist/esm/createComponent.js.map +2 -2
  105. package/dist/esm/createShallowUpdate.js +1 -0
  106. package/dist/esm/createShallowUpdate.js.map +7 -0
  107. package/dist/esm/createTamagui.js +8 -0
  108. package/dist/esm/createTamagui.js.map +2 -2
  109. package/dist/esm/createTokens.js.map +1 -1
  110. package/dist/esm/defaultComponentState.js +0 -11
  111. package/dist/esm/defaultComponentState.js.map +3 -3
  112. package/dist/esm/devtools.js +14 -0
  113. package/dist/esm/devtools.js.map +7 -0
  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 +4 -1
  117. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  118. package/dist/esm/helpers/createMediaStyle.js +3 -6
  119. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  120. package/dist/esm/helpers/createPropMapper.js +53 -56
  121. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  122. package/dist/esm/helpers/createShallowUpdate.js +19 -0
  123. package/dist/esm/helpers/createShallowUpdate.js.map +7 -0
  124. package/dist/esm/helpers/createTamaguiProvider.js +1 -4
  125. package/dist/esm/helpers/createTamaguiProvider.js.map +2 -2
  126. package/dist/esm/helpers/extendStaticConfig.js +5 -6
  127. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  128. package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
  129. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  130. package/dist/esm/helpers/getSplitStyles.js +89 -48
  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/themeable.js +4 -2
  137. package/dist/esm/helpers/themeable.js.map +2 -2
  138. package/dist/esm/helpers/validate.js +17 -5
  139. package/dist/esm/helpers/validate.js.map +2 -2
  140. package/dist/esm/hooks/useFeatures.js +96 -17
  141. package/dist/esm/hooks/useFeatures.js.map +2 -2
  142. package/dist/esm/hooks/useMedia.js +25 -43
  143. package/dist/esm/hooks/useMedia.js.map +2 -2
  144. package/dist/esm/hooks/useTheme.js +20 -13
  145. package/dist/esm/hooks/useTheme.js.map +2 -2
  146. package/dist/esm/index.js +3 -0
  147. package/dist/esm/index.js.map +2 -2
  148. package/dist/esm/styled.js +4 -12
  149. package/dist/esm/styled.js.map +2 -2
  150. package/dist/esm/tamagui-base.css +8 -0
  151. package/dist/esm/tamagui-base.css.map +7 -0
  152. package/dist/esm/views/Stack.js +1 -0
  153. package/dist/esm/views/Stack.js.map +2 -2
  154. package/dist/esm/views/Text.js +1 -0
  155. package/dist/esm/views/Text.js.map +2 -2
  156. package/dist/esm/views/Theme.js +13 -19
  157. package/dist/esm/views/Theme.js.map +2 -2
  158. package/dist/jsx/Tamagui.js +10 -2
  159. package/dist/jsx/ThemeManager.js +21 -11
  160. package/dist/jsx/conf.js +0 -1
  161. package/dist/jsx/constants/pseudos.js +17 -0
  162. package/dist/jsx/createComponent.js +115 -123
  163. package/dist/jsx/createShallowUpdate.js +0 -0
  164. package/dist/jsx/createTamagui.js +8 -0
  165. package/dist/jsx/defaultComponentState.js +0 -11
  166. package/dist/jsx/devtools.js +13 -0
  167. package/dist/jsx/helpers/RNComponents.js +11 -0
  168. package/dist/jsx/helpers/addStylesUsingClassname.js +4 -1
  169. package/dist/jsx/helpers/createMediaStyle.js +3 -6
  170. package/dist/jsx/helpers/createPropMapper.js +53 -56
  171. package/dist/jsx/helpers/createShallowUpdate.js +18 -0
  172. package/dist/jsx/helpers/createTamaguiProvider.js +1 -2
  173. package/dist/jsx/helpers/extendStaticConfig.js +5 -6
  174. package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
  175. package/dist/jsx/helpers/getSplitStyles.js +89 -48
  176. package/dist/jsx/helpers/getStylesAtomic.js +15 -2
  177. package/dist/jsx/helpers/insertStyleRule.js +36 -26
  178. package/dist/jsx/helpers/themeable.js +4 -3
  179. package/dist/jsx/helpers/validate.js +17 -5
  180. package/dist/jsx/hooks/useFeatures.js +96 -17
  181. package/dist/jsx/hooks/useMedia.js +25 -43
  182. package/dist/jsx/hooks/useTheme.js +20 -13
  183. package/dist/jsx/index.js +3 -0
  184. package/dist/jsx/styled.js +4 -12
  185. package/dist/jsx/tamagui-base.css +7 -0
  186. package/dist/jsx/views/Stack.js +1 -0
  187. package/dist/jsx/views/Text.js +1 -0
  188. package/dist/jsx/views/Theme.js +13 -19
  189. package/package.json +6 -6
  190. package/types/Tamagui.d.ts +16 -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.map +1 -1
  195. package/types/createComponent.d.ts +5 -7
  196. package/types/createComponent.d.ts.map +1 -1
  197. package/types/createFont.d.ts +1 -1
  198. package/types/createFont.d.ts.map +1 -1
  199. package/types/createTamagui.d.ts.map +1 -1
  200. package/types/createTokens.d.ts +8 -0
  201. package/types/createTokens.d.ts.map +1 -1
  202. package/types/defaultComponentState.d.ts +0 -12
  203. package/types/defaultComponentState.d.ts.map +1 -1
  204. package/types/helpers/RNComponents.d.ts +2 -0
  205. package/types/helpers/RNComponents.d.ts.map +1 -0
  206. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  207. package/types/helpers/createMediaStyle.d.ts +1 -1
  208. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  209. package/types/helpers/createPropMapper.d.ts +2 -2
  210. package/types/helpers/createPropMapper.d.ts.map +1 -1
  211. package/types/helpers/createShallowUpdate.d.ts +4 -0
  212. package/types/helpers/createShallowUpdate.d.ts.map +1 -0
  213. package/types/helpers/createTamaguiProvider.d.ts +1 -1
  214. package/types/helpers/createTamaguiProvider.d.ts.map +1 -1
  215. package/types/helpers/extendStaticConfig.d.ts +2 -2
  216. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  217. package/types/helpers/getSplitStyles.d.ts +4 -14
  218. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  219. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  220. package/types/helpers/insertStyleRule.d.ts +2 -1
  221. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  222. package/types/helpers/themeable.d.ts +3 -1
  223. package/types/helpers/themeable.d.ts.map +1 -1
  224. package/types/helpers/validate.d.ts.map +1 -1
  225. package/types/hooks/useFeatures.d.ts +7 -5
  226. package/types/hooks/useFeatures.d.ts.map +1 -1
  227. package/types/hooks/useMedia.d.ts +3 -3
  228. package/types/hooks/useMedia.d.ts.map +1 -1
  229. package/types/hooks/useTheme.d.ts +1 -1
  230. package/types/hooks/useTheme.d.ts.map +1 -1
  231. package/types/index.d.ts +1 -0
  232. package/types/index.d.ts.map +1 -1
  233. package/types/styled.d.ts +13 -8
  234. package/types/styled.d.ts.map +1 -1
  235. package/types/types-rnw.d.ts +0 -5
  236. package/types/types-rnw.d.ts.map +1 -1
  237. package/types/types.d.ts +124 -90
  238. package/types/types.d.ts.map +1 -1
  239. package/types/views/Stack.d.ts +2 -2
  240. package/types/views/Stack.d.ts.map +1 -1
  241. package/types/views/Text.d.ts +2 -2
  242. package/types/views/Text.d.ts.map +1 -1
  243. package/types/views/Theme.d.ts +1 -0
  244. package/types/views/Theme.d.ts.map +1 -1
@@ -4,63 +4,65 @@ 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
+ variantValue = variantValue(value, {
47
+ tokens: conf.tokensParsed,
48
+ theme,
49
+ props: avoidDefaultProps ? props : new Proxy(props, {
50
+ get(target, key2) {
51
+ if (Reflect.has(target, key2)) {
52
+ return Reflect.get(target, key2);
53
+ }
54
+ if (defaultProps) {
55
+ return Reflect.get(defaultProps, key2);
56
+ }
52
57
  }
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);
58
+ })
59
+ });
60
+ }
61
+ if (isObj(variantValue)) {
62
+ variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs);
63
+ }
64
+ return variantValue;
62
65
  }
63
- return variantValue;
64
66
  }
65
67
  let shouldReturn = false;
66
68
  if (conf.shorthands[key]) {
@@ -108,8 +110,12 @@ const resolveTokens = /* @__PURE__ */ __name((input, conf, theme, fontFamily, re
108
110
  }
109
111
  return res;
110
112
  }, "resolveTokens");
113
+ const fontShorthand = {
114
+ fontSize: "size",
115
+ fontWeight: "weight"
116
+ };
111
117
  const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed }, theme, fontFamily = "$body", resolveAs) => {
112
- var _a, _b, _c, _d, _e;
118
+ var _a, _b, _c;
113
119
  let valOrVar;
114
120
  let hasSet = false;
115
121
  const valueName = value[0] === "$" ? value.slice(1) : value;
@@ -123,19 +129,10 @@ const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed }, theme, fo
123
129
  hasSet = true;
124
130
  break;
125
131
  case "fontSize":
126
- valOrVar = ((_b = tokensParsed.font[fontFamily]) == null ? void 0 : _b.size[value]) || value;
127
- hasSet = true;
128
- break;
129
132
  case "lineHeight":
130
- valOrVar = ((_c = tokensParsed.font[fontFamily]) == null ? void 0 : _c.lineHeight[value]) || value;
131
- hasSet = true;
132
- break;
133
133
  case "letterSpacing":
134
- valOrVar = ((_d = tokensParsed.font[fontFamily]) == null ? void 0 : _d.letterSpacing[value]) || value;
135
- hasSet = true;
136
- break;
137
134
  case "fontWeight":
138
- valOrVar = ((_e = tokensParsed.font[fontFamily]) == null ? void 0 : _e.weight[value]) || value;
135
+ valOrVar = ((_c = (_b = tokensParsed.font[fontFamily]) == null ? void 0 : _b[fontShorthand[key] || key]) == null ? void 0 : _c[value]) || value;
139
136
  hasSet = true;
140
137
  break;
141
138
  }
@@ -161,7 +158,7 @@ const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed }, theme, fo
161
158
  }
162
159
  if (process.env.NODE_ENV === "development") {
163
160
  if (value && value[0] === "$") {
164
- console.warn(`\u26A0\uFE0F Missing token in theme:`, value, theme);
161
+ console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, value);
165
162
  return null;
166
163
  }
167
164
  }
@@ -0,0 +1,18 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ function createShallowUpdate(setter) {
4
+ return (next) => {
5
+ setter((prev) => {
6
+ for (const key in next) {
7
+ if (prev[key] !== next[key]) {
8
+ return { ...prev, ...next };
9
+ }
10
+ }
11
+ return prev;
12
+ });
13
+ };
14
+ }
15
+ __name(createShallowUpdate, "createShallowUpdate");
16
+ export {
17
+ createShallowUpdate
18
+ };
@@ -10,7 +10,6 @@ function createTamaguiProvider({
10
10
  }) {
11
11
  return /* @__PURE__ */ __name(function TamaguiProvider({
12
12
  injectCSS,
13
- fallback,
14
13
  children,
15
14
  ...themePropsProvider
16
15
  }) {
@@ -26,7 +25,7 @@ function createTamaguiProvider({
26
25
  };
27
26
  }, []);
28
27
  }
29
- return <ButtonInsideButtonContext.Provider value={false}><TextAncestorProvider><ThemeProvider {...themeProps} {...themePropsProvider}><React.Suspense fallback={fallback || null}>{children}</React.Suspense></ThemeProvider></TextAncestorProvider></ButtonInsideButtonContext.Provider>;
28
+ return <ButtonInsideButtonContext.Provider value={false}><TextAncestorProvider><ThemeProvider {...themeProps} {...themePropsProvider}>{children}</ThemeProvider></TextAncestorProvider></ButtonInsideButtonContext.Provider>;
30
29
  }, "TamaguiProvider");
31
30
  }
32
31
  __name(createTamaguiProvider, "createTamaguiProvider");
@@ -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 = {
@@ -40,7 +37,9 @@ function extendStaticConfig(parent, config = {}) {
40
37
  } : parent.staticConfig.validStyles || stylePropsView,
41
38
  defaultProps: {
42
39
  ...parent.staticConfig.defaultProps,
43
- ...config.defaultProps
40
+ ...parent.staticConfig.defaultVariants,
41
+ ...config.defaultProps,
42
+ ...config.defaultVariants
44
43
  }
45
44
  });
46
45
  }
@@ -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;
@@ -7,34 +7,25 @@ import {
7
7
  validPseudoKeys,
8
8
  validStyles
9
9
  } from "@tamagui/helpers";
10
+ import { getConfig } from "../conf";
10
11
  import { 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) => {
37
- var _a, _b, _c;
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();
38
29
  const validStyleProps = staticConfig.isText ? stylePropsText : validStyles;
39
30
  const viewProps = {};
40
31
  const style = {};
@@ -51,14 +42,32 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
51
42
  if (val.startsWith("_transform-")) {
52
43
  const isMediaOrPseudo = key !== "transform";
53
44
  const isMedia = isMediaOrPseudo && key[11] === "_";
54
- const isPsuedo = isMediaOrPseudo && !isMedia;
45
+ const isPsuedo = isMediaOrPseudo && key[11] === "0" || key.endsWith("Style");
55
46
  const namespace = isMedia ? key.split("_")[2] : isPsuedo ? key.split("-")[1] : "transform";
56
- if (!insertedTransforms[val]) {
47
+ let transform = insertedTransforms[val];
48
+ if (!transform) {
57
49
  updateInserted();
50
+ transform = insertedTransforms[val];
51
+ }
52
+ if (!transform) {
53
+ if (isWeb && val[0] !== "_") {
54
+ transform = val;
55
+ } else {
56
+ console.log("?", key, val);
57
+ }
58
+ }
59
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
60
+ console.log(" \xBB getSplitStyles mergeClassName transform", { key, val, namespace, transform, insertedTransforms });
61
+ }
62
+ if (process.env.NODE_ENV === "development") {
63
+ if (!transform) {
64
+ console.log("NO TRANSFORM?", { key, val, transform });
65
+ }
58
66
  }
59
- const transform = insertedTransforms[val];
60
67
  transforms[namespace] = transforms[namespace] || ["", ""];
61
- transforms[namespace][0] += val.replace("_transform", "");
68
+ const identifier = val.replace("_transform", "");
69
+ console.warn("?bug2", key, val, transform, insertedTransforms[val]);
70
+ transforms[namespace][0] += identifier;
62
71
  transforms[namespace][1] += transform;
63
72
  } else {
64
73
  classNames[key] = val;
@@ -69,6 +78,9 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
69
78
  if (!cur)
70
79
  return;
71
80
  normalizeStyleObject(cur);
81
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
82
+ console.log(" \xBB getSplitStyles push", cur, state);
83
+ }
72
84
  if (isWeb && !state.noClassNames) {
73
85
  const atomic = getStylesAtomic(cur);
74
86
  for (const atomicStyle of atomic) {
@@ -79,7 +91,8 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
79
91
  style[atomicStyle.property] = atomicStyle.value;
80
92
  }
81
93
  }
82
- } else {
94
+ }
95
+ if (!isWeb || state.noClassNames || state.resolveVariablesAs === "value" || state.resolveVariablesAs === "both") {
83
96
  for (const key in cur) {
84
97
  if (key in stylePropsTransform) {
85
98
  mergeTransform(style, key, cur[key]);
@@ -92,11 +105,12 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
92
105
  }
93
106
  __name(push, "push");
94
107
  for (const keyInit in props) {
95
- const valInit = props[keyInit];
96
- if (skipKeys[keyInit]) {
97
- viewProps[keyInit] = valInit;
108
+ if (skipProps[keyInit]) {
98
109
  continue;
99
110
  }
111
+ const valInit = props[keyInit];
112
+ let isMedia = keyInit[0] === "$";
113
+ let isPseudo = validPseudoKeys[keyInit];
100
114
  if (keyInit === "className" || validStyleProps[keyInit] && valInit && valInit[0] === "_") {
101
115
  push();
102
116
  mergeClassName(keyInit, valInit);
@@ -107,15 +121,20 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
107
121
  }
108
122
  continue;
109
123
  }
110
- let isMedia = keyInit[0] === "$";
111
- let isPseudo = validPseudoKeys[keyInit];
112
- const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, props, staticConfig, state.resolveVariablesAs);
124
+ if (!isMedia && !isPseudo && !((_a = staticConfig.variants) == null ? void 0 : _a[keyInit]) && !validStyleProps[keyInit] && !conf.shorthands[keyInit]) {
125
+ viewProps[keyInit] = valInit;
126
+ continue;
127
+ }
128
+ const out = isMedia || isPseudo ? true : staticConfig.propMapper(keyInit, valInit, theme, state.fallbackProps || props, state.resolveVariablesAs);
113
129
  const expanded = out === true || !out ? [[keyInit, valInit]] : Object.entries(out);
130
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
131
+ console.log(" \xBB getSplitStyles", keyInit, expanded);
132
+ }
114
133
  for (const [key, val] of expanded) {
115
134
  if (val === void 0) {
116
135
  continue;
117
136
  }
118
- if (val && val[0] === "_") {
137
+ if (key !== "target" && val && val[0] === "_") {
119
138
  mergeClassName(key, val);
120
139
  continue;
121
140
  }
@@ -131,12 +150,9 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
131
150
  continue;
132
151
  }
133
152
  pseudos[key] = pseudos[key] || {};
134
- pseudos[key] = getSubStyle(val, staticConfig, theme, props, state.resolveVariablesAs, true);
153
+ pseudos[key] = getSubStyle(val, staticConfig, theme, props, state, true);
135
154
  if (isWeb && !state.noClassNames) {
136
155
  const pseudoStyles = getStylesAtomic({ [key]: pseudos[key] });
137
- if ((_b = (_a = pseudoStyles[0]) == null ? void 0 : _a.identifier) == null ? void 0 : _b.includes("undefined")) {
138
- console.warn("undefined bug?", (_c = pseudoStyles[0]) == null ? void 0 : _c.identifier);
139
- }
140
156
  for (const style2 of pseudoStyles) {
141
157
  mergeClassName(`${style2.property}-${key}`, style2.identifier);
142
158
  insertStyleRule(style2.identifier, style2.rules[0]);
@@ -145,25 +161,31 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
145
161
  continue;
146
162
  }
147
163
  if (isMedia) {
148
- const mediaKey = key.slice(1);
149
- if (!mediaQueryConfig[mediaKey]) {
150
- viewProps[key] = valInit;
164
+ const mediaKey = key;
165
+ const mediaKeyShort = mediaKey.slice(1);
166
+ if (!mediaQueryConfig[mediaKeyShort]) {
167
+ viewProps[key] = val;
151
168
  continue;
152
169
  }
153
- const mediaStyle = getSubStyle(valInit, staticConfig, theme, props, state.resolveVariablesAs, true);
154
- if (isWeb) {
170
+ const mediaStyle = getSubStyle(val, staticConfig, theme, props, state);
171
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
172
+ console.log(" \xBB getSplitStyles mediaStyle", mediaKey, mediaStyle, props);
173
+ }
174
+ const shouldDoClasses = isWeb && !state.noClassNames;
175
+ if (shouldDoClasses) {
155
176
  const mediaStyles = getStylesAtomic(mediaStyle);
156
177
  for (const style2 of mediaStyles) {
157
- const out2 = createMediaStyle(style2, mediaKey, mediaQueryConfig);
178
+ const out2 = createMediaStyle(style2, mediaKeyShort, mediaQueryConfig);
158
179
  mergeClassName(`${out2.identifier}-${mediaKey}`, out2.identifier);
159
180
  insertStyleRule(out2.identifier, out2.styleRule);
160
181
  }
161
- if (mediaState[mediaKey]) {
162
- Object.assign(medias, mediaStyle);
163
- }
164
182
  } else {
165
183
  if (mediaState[mediaKey]) {
166
- Object.assign(style, mediaStyle);
184
+ push();
185
+ if (process.env.NODE_ENV === "development" && props["debug"]) {
186
+ console.log("apply media style", mediaKey, mediaState);
187
+ }
188
+ Object.assign(shouldDoClasses ? medias : style, mediaStyle);
167
189
  }
168
190
  }
169
191
  continue;
@@ -197,11 +219,15 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
197
219
  const identifier = `_transform${hash}`;
198
220
  if (!insertedTransforms[identifier]) {
199
221
  const rule = `.${identifier} { transform: ${val}; }`;
222
+ console.log("insert", rule);
200
223
  insertStyleRule(identifier, rule);
201
224
  }
202
225
  classNames[namespace] = identifier;
203
226
  }
204
227
  }
228
+ if (process.env.NODE_ENV === "development" && props["debug"] === "verbose") {
229
+ console.log(" \xBB getSplitStyles out", { style, pseudos, medias, classNames, viewProps, state });
230
+ }
205
231
  return {
206
232
  viewProps,
207
233
  style,
@@ -210,11 +236,11 @@ const getSplitStyles = /* @__PURE__ */ __name((props, staticConfig, theme, state
210
236
  classNames
211
237
  };
212
238
  }, "getSplitStyles");
213
- const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, resolveVariablesAs, avoidDefaultProps) => {
239
+ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props, state, avoidDefaultProps) => {
214
240
  const styleOut = {};
215
241
  for (const key in styleIn) {
216
242
  const val = styleIn[key];
217
- const out = staticConfig.propMapper(key, val, theme, props, staticConfig, resolveVariablesAs, avoidDefaultProps);
243
+ const out = staticConfig.propMapper(key, val, theme, state.fallbackProps || props, state.resolveVariablesAs, avoidDefaultProps);
218
244
  const expanded = out === true || !out ? [[key, val]] : Object.entries(out);
219
245
  for (const [skey, sval] of expanded) {
220
246
  if (skey in stylePropsTransform) {
@@ -227,6 +253,21 @@ const getSubStyle = /* @__PURE__ */ __name((styleIn, staticConfig, theme, props,
227
253
  normalizeStyleObject(styleOut);
228
254
  return styleOut;
229
255
  }, "getSubStyle");
256
+ function normalizeStyleObject(style) {
257
+ var _a, _b;
258
+ if (typeof style.flex === "number") {
259
+ const val = style.flex;
260
+ delete style.flex;
261
+ style.flexGrow = (_a = style.flexGrow) != null ? _a : val;
262
+ style.flexShrink = (_b = style.flexShrink) != null ? _b : 1;
263
+ }
264
+ if (!isWeb) {
265
+ fixNativeShadow(style);
266
+ }
267
+ }
268
+ __name(normalizeStyleObject, "normalizeStyleObject");
230
269
  export {
231
- getSplitStyles
270
+ getSplitStyles,
271
+ getSubStyle,
272
+ normalizeStyleObject
232
273
  };
@@ -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);
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
  };
@@ -3,14 +3,15 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
3
3
  import React, { forwardRef } from "react";
4
4
  import { Theme } from "../views/Theme";
5
5
  import { ThemeInverse } from "../views/ThemeInverse";
6
- function themeable(component) {
6
+ function themeable(component, opts) {
7
7
  const withThemeComponent = forwardRef(/* @__PURE__ */ __name(function WithTheme({ themeInverse, theme, ...rest }, ref) {
8
8
  const element = React.createElement(component, { ...rest, ref });
9
9
  if (themeInverse) {
10
10
  return <ThemeInverse>{element}</ThemeInverse>;
11
11
  }
12
- if (theme) {
13
- return <Theme name={theme || null}>{element}</Theme>;
12
+ if (theme || opts) {
13
+ console.log("WHAT", opts == null ? void 0 : opts.componentName);
14
+ return <Theme componentName={opts == null ? void 0 : opts.componentName} name={theme || null}>{element}</Theme>;
14
15
  }
15
16
  return element;
16
17
  }, "WithTheme"));