@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
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/createPropMapper.ts"],
4
- "sourcesContent": ["import { getConfig } from '../conf'\nimport { isWeb } from '../constants/platform'\nimport { Variable, isVariable } from '../createVariable'\nimport { StaticConfig, TamaguiInternalConfig } from '../types'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable'\n\nexport const createPropMapper = (c: StaticConfig) => {\n const variants = c.variants || {}\n\n // goes through specificity finding best matching variant function\n function getVariantFunction(variant: any, key: string, value: any) {\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const spreadVariant = variant[`...${cat}`]\n if (spreadVariant) {\n return spreadVariant\n }\n }\n }\n let fn: any\n if (typeof value === 'number') {\n fn = variant[':number']\n } else if (typeof value === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n fn = fn || variant[value]\n // fallback to size ultimately - could do token level detection\n return fn || variant['...'] || variant['...size']\n }\n\n const defaultProps = c.defaultProps || {}\n\n return (\n key: string,\n value: any,\n theme: any,\n props: any,\n staticConfig: StaticConfig,\n returnVariablesAs: ResolveVariableTypes = !!props.animation ? 'value' : 'auto',\n avoidDefaultProps = false\n ) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n let fontFamily = props.fontFamily || defaultProps.fontFamily || '$body'\n\n // expand variants\n const variant = variants && variants[key]\n\n if (variant && value !== undefined) {\n let variantValue = getVariantFunction(variant, key, value)\n\n if (!variantValue) {\n return value\n }\n\n if (typeof variantValue === 'function') {\n variantValue = variantValue(value, {\n tokens: conf.tokensParsed,\n theme,\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n props: avoidDefaultProps\n ? props\n : new Proxy(props, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n // these props may be extracted into classNames, but we still want to access them\n // at runtime, so we proxy back to defaultProps but don't pass them\n if (staticConfig.defaultProps) {\n return Reflect.get(staticConfig.defaultProps, key)\n }\n },\n }),\n })\n }\n\n // console.log(\n // 'GOGO',\n // variantValue,\n // 'now',\n // resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs)\n // )\n\n if (isObj(variantValue)) {\n variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs)\n }\n\n return variantValue\n }\n\n let shouldReturn = false\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n shouldReturn = true\n if (value[0] === '$') {\n value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs)\n } else if (isVariable(value)) {\n value = getVariableValue(value, returnVariablesAs)\n }\n }\n\n if (shouldReturn) {\n return {\n [key]: value,\n }\n }\n }\n}\n\nconst resolveTokens = (\n input: Object,\n conf: TamaguiInternalConfig,\n theme: any,\n fontFamily: any,\n resolveAs?: ResolveVariableTypes\n) => {\n let res = {}\n for (const rKey in input) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = input[rKey]\n if (isVariable(val)) {\n res[fKey] =\n resolveAs === 'variable' ? val : !isWeb || resolveAs === 'value' ? val.val : val.variable\n } else if (typeof val === 'string') {\n const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily, resolveAs) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // for things like shadowOffset, hoverStyle which is a sub-object\n res[fKey] = resolveTokens(val, conf, theme, fontFamily, resolveAs)\n } else {\n // nullish values cant be tokens so need no exrta parsing\n res[fKey] = input[fKey]\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (res[fKey]?.[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey])\n }\n }\n }\n return res\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes\n) => {\n let valOrVar: any\n let hasSet = false\n const valueName = value[0] === '$' ? value.slice(1) : value\n if (valueName in theme) {\n valOrVar = theme[valueName]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = tokensParsed.font[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n valOrVar = tokensParsed.font[fontFamily]?.size[value] || value\n hasSet = true\n break\n case 'lineHeight':\n valOrVar = tokensParsed.font[fontFamily]?.lineHeight[value] || value\n hasSet = true\n break\n case 'letterSpacing':\n valOrVar = tokensParsed.font[fontFamily]?.letterSpacing[value] || value\n hasSet = true\n break\n case 'fontWeight':\n valOrVar = tokensParsed.font[fontFamily]?.weight[value] || value\n hasSet = true\n break\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const res = tokensParsed[cat][value]\n if (res) {\n valOrVar = res\n hasSet = true\n }\n }\n }\n if (!hasSet) {\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n valOrVar = spaceVar\n hasSet = true\n }\n }\n }\n if (hasSet) {\n return getVariableValue(valOrVar, resolveAs)\n }\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme:`, value, theme)\n return null\n }\n }\n return value\n}\n\nfunction getVariableValue(valOrVar: Variable | any, resolveAs: ResolveVariableTypes = 'auto') {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n radius: {\n borderRadius: true,\n },\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { getConfig } from '../conf'\nimport { isWeb } from '../constants/platform'\nimport { Variable, isVariable } from '../createVariable'\nimport { StaticConfig, TamaguiInternalConfig } from '../types'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable' | 'both'\n\n// goes through specificity finding best matching variant function\nfunction getVariantFunction(variant: any, key: string, value: any) {\n if (typeof variant === 'function') {\n return variant\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const spreadVariant = variant[`...${cat}`]\n if (spreadVariant) {\n return spreadVariant\n }\n }\n }\n let fn: any\n if (typeof value === 'number') {\n fn = variant[':number']\n } else if (typeof value === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n fn = fn || variant[value]\n // fallback to size ultimately - could do token level detection\n return fn || variant['...'] || variant['...size']\n}\n\nexport const createPropMapper = (staticConfig: Partial<StaticConfig>) => {\n const variants = staticConfig.variants || {}\n const defaultProps = staticConfig.defaultProps || {}\n\n return (\n key: string,\n value: any,\n theme: any,\n props: any,\n returnVariablesAs: ResolveVariableTypes = !!props.animation ? 'value' : 'auto',\n avoidDefaultProps = false\n ) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n const fontFamily = props.fontFamily || defaultProps.fontFamily || '$body'\n const variant = variants && variants[key]\n\n if (variant && value !== undefined) {\n let variantValue = getVariantFunction(variant, key, value)\n\n if (variantValue) {\n if (typeof variantValue === 'function') {\n variantValue = variantValue(value, {\n tokens: conf.tokensParsed,\n theme,\n // TODO do this in splitstlye\n // we avoid passing in default props for media queries because that would confuse things like SizableText.size:\n props: avoidDefaultProps\n ? props\n : new Proxy(props, {\n get(target, key) {\n if (Reflect.has(target, key)) {\n return Reflect.get(target, key)\n }\n // these props may be extracted into classNames, but we still want to access them\n // at runtime, so we proxy back to defaultProps but don't pass them\n if (defaultProps) {\n return Reflect.get(defaultProps, key)\n }\n },\n }),\n })\n }\n\n if (isObj(variantValue)) {\n variantValue = resolveTokens(variantValue, conf, theme, fontFamily, returnVariablesAs)\n }\n\n return variantValue\n }\n }\n\n let shouldReturn = false\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n shouldReturn = true\n if (value[0] === '$') {\n value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs)\n } else if (isVariable(value)) {\n value = getVariableValue(value, returnVariablesAs)\n }\n }\n\n if (shouldReturn) {\n return {\n [key]: value,\n }\n }\n }\n}\n\nconst resolveTokens = (\n input: Object,\n conf: TamaguiInternalConfig,\n theme: any,\n fontFamily: any,\n resolveAs?: ResolveVariableTypes\n) => {\n let res = {}\n for (const rKey in input) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = input[rKey]\n if (isVariable(val)) {\n res[fKey] =\n resolveAs === 'variable' ? val : !isWeb || resolveAs === 'value' ? val.val : val.variable\n } else if (typeof val === 'string') {\n const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily, resolveAs) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // for things like shadowOffset, hoverStyle which is a sub-object\n res[fKey] = resolveTokens(val, conf, theme, fontFamily, resolveAs)\n } else {\n // nullish values cant be tokens so need no exrta parsing\n res[fKey] = input[fKey]\n }\n }\n if (process.env.NODE_ENV === 'development') {\n if (res[fKey]?.[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey])\n }\n }\n }\n return res\n}\n\nconst fontShorthand = {\n fontSize: 'size',\n fontWeight: 'weight',\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes\n) => {\n let valOrVar: any\n let hasSet = false\n const valueName = value[0] === '$' ? value.slice(1) : value\n if (valueName in theme) {\n valOrVar = theme[valueName]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = tokensParsed.font[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n case 'lineHeight':\n case 'letterSpacing':\n case 'fontWeight':\n valOrVar = tokensParsed.font[fontFamily]?.[fontShorthand[key] || key]?.[value] || value\n hasSet = true\n break\n }\n for (const cat in tokenCategories) {\n if (key in tokenCategories[cat]) {\n const res = tokensParsed[cat][value]\n if (res) {\n valOrVar = res\n hasSet = true\n }\n }\n }\n if (!hasSet) {\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n valOrVar = spaceVar\n hasSet = true\n }\n }\n }\n if (hasSet) {\n return getVariableValue(valOrVar, resolveAs)\n }\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, value)\n return null\n }\n }\n return value\n}\n\nfunction getVariableValue(valOrVar: Variable | any, resolveAs: ResolveVariableTypes = 'auto') {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (!isWeb || resolveAs === 'value') {\n return valOrVar.val\n }\n return valOrVar.variable\n }\n return valOrVar\n}\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n radius: {\n borderRadius: true,\n },\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,19 @@
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
+ };
19
+ //# sourceMappingURL=createShallowUpdate.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/createShallowUpdate.tsx"],
4
+ "sourcesContent": ["import React from 'react'\n\nimport { TamaguiComponentState } from '../types'\n\nexport function createShallowUpdate(\n setter: React.Dispatch<React.SetStateAction<TamaguiComponentState>>\n) {\n return (next: Partial<TamaguiComponentState>) => {\n setter((prev) => {\n for (const key in next) {\n if (prev[key] !== next[key]) {\n return { ...prev, ...next }\n }\n }\n return prev\n })\n }\n}\n"],
5
+ "mappings": ";;AAIO,6BACL,QACA;AACA,SAAO,CAAC,SAAyC;AAC/C,WAAO,CAAC,SAAS;AACf,iBAAW,OAAO,MAAM;AACtB,YAAI,KAAK,SAAS,KAAK,MAAM;AAC3B,iBAAO,KAAK,SAAS,KAAK;AAAA,QAC5B;AAAA,MACF;AACA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AACF;AAbgB;",
6
+ "names": []
7
+ }
@@ -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
  }) {
@@ -31,9 +30,7 @@ function createTamaguiProvider({
31
30
  }, /* @__PURE__ */ React.createElement(TextAncestorProvider, null, /* @__PURE__ */ React.createElement(ThemeProvider, {
32
31
  ...themeProps,
33
32
  ...themePropsProvider
34
- }, /* @__PURE__ */ React.createElement(React.Suspense, {
35
- fallback: fallback || null
36
- }, children))));
33
+ }, children)));
37
34
  }, "TamaguiProvider");
38
35
  }
39
36
  __name(createTamaguiProvider, "createTamaguiProvider");
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/createTamaguiProvider.tsx"],
4
- "sourcesContent": ["import * as React from 'react'\n\nimport { ButtonInsideButtonContext } from '../contexts/ButtonInsideButtonContext'\nimport { TamaguiProviderProps } from '../types'\nimport { TextAncestorProvider } from '../views/TextAncestorContext'\nimport { ThemeProvider, ThemeProviderProps } from '../views/ThemeProvider'\n\nexport function createTamaguiProvider({\n getCSS,\n ...themeProps\n}: ThemeProviderProps & {\n getCSS: () => string\n}) {\n return function TamaguiProvider({\n injectCSS,\n fallback,\n children,\n ...themePropsProvider\n }: TamaguiProviderProps) {\n // inject CSS if asked to (not SSR compliant)\n if (typeof document !== 'undefined') {\n React.useLayoutEffect(() => {\n if (!injectCSS) return\n const style = document.createElement('style')\n style.appendChild(document.createTextNode(getCSS()))\n document.head.appendChild(style)\n return () => {\n document.head.removeChild(style)\n }\n }, [])\n }\n\n return (\n <ButtonInsideButtonContext.Provider value={false}>\n <TextAncestorProvider>\n <ThemeProvider {...themeProps} {...themePropsProvider}>\n <React.Suspense fallback={fallback || null}>{children}</React.Suspense>\n </ThemeProvider>\n </TextAncestorProvider>\n </ButtonInsideButtonContext.Provider>\n )\n }\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AAEA;AACA;AAEO,+BAA+B;AAAA,EACpC;AAAA,KACG;AAAA,GAGF;AACD,SAAO,gDAAyB;AAAA,IAC9B;AAAA,IACA;AAAA,IACA;AAAA,OACG;AAAA,KACoB;AAEvB,QAAI,OAAO,aAAa,aAAa;AACnC,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC;AAAW;AAChB,cAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,YAAY,SAAS,eAAe,OAAO,CAAC,CAAC;AACnD,iBAAS,KAAK,YAAY,KAAK;AAC/B,eAAO,MAAM;AACX,mBAAS,KAAK,YAAY,KAAK;AAAA,QACjC;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAEA,WACE,oCAAC,0BAA0B,UAA1B;AAAA,MAAmC,OAAO;AAAA,OACzC,oCAAC,4BACC,oCAAC;AAAA,SAAkB;AAAA,SAAgB;AAAA,OACjC,oCAAC,MAAM,UAAN;AAAA,MAAe,UAAU,YAAY;AAAA,OAAO,QAAS,CACxD,CACF,CACF;AAAA,EAEJ,GA5BO;AA6BT;AAnCgB;",
4
+ "sourcesContent": ["import * as React from 'react'\n\nimport { ButtonInsideButtonContext } from '../contexts/ButtonInsideButtonContext'\nimport { TamaguiProviderProps } from '../types'\nimport { TextAncestorProvider } from '../views/TextAncestorContext'\nimport { ThemeProvider, ThemeProviderProps } from '../views/ThemeProvider'\n\nexport function createTamaguiProvider({\n getCSS,\n ...themeProps\n}: ThemeProviderProps & {\n getCSS: () => string\n}) {\n return function TamaguiProvider({\n injectCSS,\n children,\n ...themePropsProvider\n }: TamaguiProviderProps) {\n // inject CSS if asked to (not SSR compliant)\n if (typeof document !== 'undefined') {\n React.useLayoutEffect(() => {\n if (!injectCSS) return\n const style = document.createElement('style')\n style.appendChild(document.createTextNode(getCSS()))\n document.head.appendChild(style)\n return () => {\n document.head.removeChild(style)\n }\n }, [])\n }\n\n return (\n <ButtonInsideButtonContext.Provider value={false}>\n <TextAncestorProvider>\n <ThemeProvider {...themeProps} {...themePropsProvider}>\n {children}\n </ThemeProvider>\n </TextAncestorProvider>\n </ButtonInsideButtonContext.Provider>\n )\n }\n}\n"],
5
+ "mappings": ";;AAAA;AAEA;AAEA;AACA;AAEO,+BAA+B;AAAA,EACpC;AAAA,KACG;AAAA,GAGF;AACD,SAAO,gDAAyB;AAAA,IAC9B;AAAA,IACA;AAAA,OACG;AAAA,KACoB;AAEvB,QAAI,OAAO,aAAa,aAAa;AACnC,YAAM,gBAAgB,MAAM;AAC1B,YAAI,CAAC;AAAW;AAChB,cAAM,QAAQ,SAAS,cAAc,OAAO;AAC5C,cAAM,YAAY,SAAS,eAAe,OAAO,CAAC,CAAC;AACnD,iBAAS,KAAK,YAAY,KAAK;AAC/B,eAAO,MAAM;AACX,mBAAS,KAAK,YAAY,KAAK;AAAA,QACjC;AAAA,MACF,GAAG,CAAC,CAAC;AAAA,IACP;AAEA,WACE,oCAAC,0BAA0B,UAA1B;AAAA,MAAmC,OAAO;AAAA,OACzC,oCAAC,4BACC,oCAAC;AAAA,SAAkB;AAAA,SAAgB;AAAA,OAChC,QACH,CACF,CACF;AAAA,EAEJ,GA3BO;AA4BT;AAlCgB;",
6
6
  "names": []
7
7
  }
@@ -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
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/extendStaticConfig.ts"],
4
- "sourcesContent": ["import { stylePropsView } from '@tamagui/helpers'\n\nimport { StaticConfig, StaticConfigParsed, StylableComponent } from '../types'\nimport { createPropMapper } from './createPropMapper'\n\nexport function extendStaticConfig(\n // can be undefined when loading with @tamagui/fake-react-native\n // could be fixed a bit cleaner\n parent?: StylableComponent,\n config: StaticConfig = {}\n): StaticConfigParsed | null {\n if (!parent) {\n throw new Error('no parent')\n }\n\n if (!('staticConfig' in parent)) {\n return parseStaticConfig(config)\n }\n\n const variants = {\n ...parent.staticConfig.variants,\n }\n\n // merge variants... can we type this?\n if (config.variants) {\n for (const key in config.variants) {\n if (variants[key]) {\n variants[key] = {\n ...variants[key],\n ...config.variants[key],\n }\n } else {\n variants[key] = config.variants[key]\n }\n }\n }\n\n return parseStaticConfig({\n ...parent.staticConfig,\n ...config,\n variants,\n isZStack: config.isZStack || parent.staticConfig.isZStack,\n isText: config.isText || parent.staticConfig.isText || false,\n isInput: config.isInput || parent.staticConfig.isInput || false,\n neverFlatten: config.neverFlatten || parent.staticConfig.neverFlatten,\n ensureOverriddenProp: config.ensureOverriddenProp ?? parent.staticConfig.ensureOverriddenProp,\n validStyles: config.validStyles\n ? {\n ...parent.staticConfig.validStyles,\n ...config.validStyles,\n }\n : parent.staticConfig.validStyles || stylePropsView,\n defaultProps: {\n ...parent.staticConfig.defaultProps,\n ...config.defaultProps,\n },\n })\n}\n\nexport const parseStaticConfig = (config: StaticConfig): StaticConfigParsed => {\n return {\n ...config,\n parsed: true,\n propMapper: createPropMapper(config),\n }\n}\n"],
5
- "mappings": ";;AAAA;AAGA;AAEO,4BAGL,QACA,SAAuB,CAAC,GACG;AAV7B;AAWE,MAAI,CAAC,QAAQ;AACX,UAAM,IAAI,MAAM,WAAW;AAAA,EAC7B;AAEA,MAAI,CAAE,mBAAkB,SAAS;AAC/B,WAAO,kBAAkB,MAAM;AAAA,EACjC;AAEA,QAAM,WAAW;AAAA,OACZ,OAAO,aAAa;AAAA,EACzB;AAGA,MAAI,OAAO,UAAU;AACnB,eAAW,OAAO,OAAO,UAAU;AACjC,UAAI,SAAS,MAAM;AACjB,iBAAS,OAAO;AAAA,aACX,SAAS;AAAA,aACT,OAAO,SAAS;AAAA,QACrB;AAAA,MACF,OAAO;AACL,iBAAS,OAAO,OAAO,SAAS;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,kBAAkB;AAAA,OACpB,OAAO;AAAA,OACP;AAAA,IACH;AAAA,IACA,UAAU,OAAO,YAAY,OAAO,aAAa;AAAA,IACjD,QAAQ,OAAO,UAAU,OAAO,aAAa,UAAU;AAAA,IACvD,SAAS,OAAO,WAAW,OAAO,aAAa,WAAW;AAAA,IAC1D,cAAc,OAAO,gBAAgB,OAAO,aAAa;AAAA,IACzD,sBAAsB,aAAO,yBAAP,YAA+B,OAAO,aAAa;AAAA,IACzE,aAAa,OAAO,cAChB;AAAA,SACK,OAAO,aAAa;AAAA,SACpB,OAAO;AAAA,IACZ,IACA,OAAO,aAAa,eAAe;AAAA,IACvC,cAAc;AAAA,SACT,OAAO,aAAa;AAAA,SACpB,OAAO;AAAA,IACZ;AAAA,EACF,CAAC;AACH;AApDgB;AAsDT,MAAM,oBAAoB,wBAAC,WAA6C;AAC7E,SAAO;AAAA,OACF;AAAA,IACH,QAAQ;AAAA,IACR,YAAY,iBAAiB,MAAM;AAAA,EACrC;AACF,GANiC;",
4
+ "sourcesContent": ["import { stylePropsView } from '@tamagui/helpers'\n\nimport { StaticConfig, StaticConfigParsed, StylableComponent } from '../types'\nimport { createPropMapper } from './createPropMapper'\n\nexport function extendStaticConfig(config: Partial<StaticConfig>, parent?: StylableComponent) {\n if (!parent || !('staticConfig' in parent)) {\n return parseStaticConfig(config)\n }\n\n const variants = {\n ...parent.staticConfig.variants,\n }\n\n // merge variants... can we type this?\n if (config.variants) {\n for (const key in config.variants) {\n if (variants[key]) {\n variants[key] = {\n ...variants[key],\n ...config.variants[key],\n }\n } else {\n variants[key] = config.variants[key]\n }\n }\n }\n\n return parseStaticConfig({\n ...parent.staticConfig,\n ...config,\n variants,\n isZStack: config.isZStack || parent.staticConfig.isZStack,\n isText: config.isText || parent.staticConfig.isText || false,\n isInput: config.isInput || parent.staticConfig.isInput || false,\n neverFlatten: config.neverFlatten || parent.staticConfig.neverFlatten,\n ensureOverriddenProp: config.ensureOverriddenProp ?? parent.staticConfig.ensureOverriddenProp,\n validStyles: config.validStyles\n ? {\n ...parent.staticConfig.validStyles,\n ...config.validStyles,\n }\n : parent.staticConfig.validStyles || stylePropsView,\n defaultProps: {\n ...parent.staticConfig.defaultProps,\n ...parent.staticConfig.defaultVariants,\n ...config.defaultProps,\n ...config.defaultVariants,\n },\n })\n}\n\nexport const parseStaticConfig = (config: Partial<StaticConfig>): StaticConfigParsed => {\n return {\n ...config,\n parsed: true,\n propMapper: createPropMapper(config),\n }\n}\n"],
5
+ "mappings": ";;AAAA;AAGA;AAEO,4BAA4B,QAA+B,QAA4B;AAL9F;AAME,MAAI,CAAC,UAAU,CAAE,mBAAkB,SAAS;AAC1C,WAAO,kBAAkB,MAAM;AAAA,EACjC;AAEA,QAAM,WAAW;AAAA,OACZ,OAAO,aAAa;AAAA,EACzB;AAGA,MAAI,OAAO,UAAU;AACnB,eAAW,OAAO,OAAO,UAAU;AACjC,UAAI,SAAS,MAAM;AACjB,iBAAS,OAAO;AAAA,aACX,SAAS;AAAA,aACT,OAAO,SAAS;AAAA,QACrB;AAAA,MACF,OAAO;AACL,iBAAS,OAAO,OAAO,SAAS;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,kBAAkB;AAAA,OACpB,OAAO;AAAA,OACP;AAAA,IACH;AAAA,IACA,UAAU,OAAO,YAAY,OAAO,aAAa;AAAA,IACjD,QAAQ,OAAO,UAAU,OAAO,aAAa,UAAU;AAAA,IACvD,SAAS,OAAO,WAAW,OAAO,aAAa,WAAW;AAAA,IAC1D,cAAc,OAAO,gBAAgB,OAAO,aAAa;AAAA,IACzD,sBAAsB,aAAO,yBAAP,YAA+B,OAAO,aAAa;AAAA,IACzE,aAAa,OAAO,cAChB;AAAA,SACK,OAAO,aAAa;AAAA,SACpB,OAAO;AAAA,IACZ,IACA,OAAO,aAAa,eAAe;AAAA,IACvC,cAAc;AAAA,SACT,OAAO,aAAa;AAAA,SACpB,OAAO,aAAa;AAAA,SACpB,OAAO;AAAA,SACP,OAAO;AAAA,IACZ;AAAA,EACF,CAAC;AACH;AA7CgB;AA+CT,MAAM,oBAAoB,wBAAC,WAAsD;AACtF,SAAO;AAAA,OACF;AAAA,IACH,QAAQ;AAAA,IACR,YAAY,iBAAiB,MAAM;AAAA,EACrC;AACF,GANiC;",
6
6
  "names": []
7
7
  }
@@ -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;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/fixNativeShadow.native.tsx"],
4
- "sourcesContent": ["const matchRgbaHsla =\n /(rgba|hsla)\\(\\s*([\\d\\.]{1,}%?)\\s*,\\s*([\\d\\.]{1,}%?)\\s*,\\s*([\\d\\.]{1,}%?)\\s*,\\s*([\\d\\.]{1,})\\s*\\)$/\n\nexport function fixNativeShadow(props: any) {\n if (!props.shadowColor) {\n return\n }\n if (!props.shadowOffset) {\n // fixes some broken shadows\n props.shadowOffset = {\n width: 0,\n height: 0,\n }\n }\n if ('shadowOpacity' in props) {\n return\n }\n const c = `${props.shadowColor}`\n // react native has issues sometimes with rgba()\n // supports rgba + hsla\n if ((c[0] === 'r' || c[0] === 'h') && c[3] === 'a') {\n const [_, type, _1, _2, _3, a] = c.match(matchRgbaHsla) || []\n if (typeof a !== 'string') {\n console.warn('invalid', c, type)\n return\n }\n props.shadowColor = `${type.replace('a', '')}(${_1},${_2},${_3})`\n props.shadowOpacity = +a\n } else {\n props.shadowOpacity = 1\n }\n}\n"],
5
- "mappings": ";;AAAA,MAAM,gBACJ;AAEK,yBAAyB,OAAY;AAC1C,MAAI,CAAC,MAAM,aAAa;AACtB;AAAA,EACF;AACA,MAAI,CAAC,MAAM,cAAc;AAEvB,UAAM,eAAe;AAAA,MACnB,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AACA,MAAI,mBAAmB,OAAO;AAC5B;AAAA,EACF;AACA,QAAM,IAAI,GAAG,MAAM;AAGnB,MAAK,GAAE,OAAO,OAAO,EAAE,OAAO,QAAQ,EAAE,OAAO,KAAK;AAClD,UAAM,CAAC,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,EAAE,MAAM,aAAa,KAAK,CAAC;AAC5D,QAAI,OAAO,MAAM,UAAU;AACzB,cAAQ,KAAK,WAAW,GAAG,IAAI;AAC/B;AAAA,IACF;AACA,UAAM,cAAc,GAAG,KAAK,QAAQ,KAAK,EAAE,KAAK,MAAM,MAAM;AAC5D,UAAM,gBAAgB,CAAC;AAAA,EACzB,OAAO;AACL,UAAM,gBAAgB;AAAA,EACxB;AACF;AA5BgB;",
4
+ "sourcesContent": ["const matchRgbaHsla =\n /(rgba|hsla)\\(\\s*([\\d\\.]{1,}%?)\\s*,\\s*([\\d\\.]{1,}%?)\\s*,\\s*([\\d\\.]{1,}%?)\\s*,\\s*([\\d\\.]{1,})\\s*\\)$/\n\nexport function fixNativeShadow(props: any) {\n if (!props.shadowColor) {\n return\n }\n if (!props.shadowOffset) {\n // fixes some broken shadows\n props.shadowOffset = {\n width: 0,\n height: 0,\n }\n }\n if ('shadowOpacity' in props) {\n return\n }\n const c = `${props.shadowColor}`\n // react native has issues sometimes with rgba()\n // supports rgba + hsla\n if ((c[0] === 'r' || c[0] === 'h') && c[3] === 'a') {\n const [_, type, _1, _2, _3, a] = c.match(matchRgbaHsla) || []\n if (typeof a !== 'string') {\n console.trace('invalid', c, type)\n throw new Error(`invalid style`)\n }\n props.shadowColor = `${type.replace('a', '')}(${_1},${_2},${_3})`\n props.shadowOpacity = +a\n } else {\n props.shadowOpacity = 1\n }\n}\n"],
5
+ "mappings": ";;AAAA,MAAM,gBACJ;AAEK,yBAAyB,OAAY;AAC1C,MAAI,CAAC,MAAM,aAAa;AACtB;AAAA,EACF;AACA,MAAI,CAAC,MAAM,cAAc;AAEvB,UAAM,eAAe;AAAA,MACnB,OAAO;AAAA,MACP,QAAQ;AAAA,IACV;AAAA,EACF;AACA,MAAI,mBAAmB,OAAO;AAC5B;AAAA,EACF;AACA,QAAM,IAAI,GAAG,MAAM;AAGnB,MAAK,GAAE,OAAO,OAAO,EAAE,OAAO,QAAQ,EAAE,OAAO,KAAK;AAClD,UAAM,CAAC,GAAG,MAAM,IAAI,IAAI,IAAI,KAAK,EAAE,MAAM,aAAa,KAAK,CAAC;AAC5D,QAAI,OAAO,MAAM,UAAU;AACzB,cAAQ,MAAM,WAAW,GAAG,IAAI;AAChC,YAAM,IAAI,MAAM,eAAe;AAAA,IACjC;AACA,UAAM,cAAc,GAAG,KAAK,QAAQ,KAAK,EAAE,KAAK,MAAM,MAAM;AAC5D,UAAM,gBAAgB,CAAC;AAAA,EACzB,OAAO;AACL,UAAM,gBAAgB;AAAA,EACxB;AACF;AA5BgB;",
6
6
  "names": []
7
7
  }
@@ -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,7 +253,22 @@ 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
  };
233
274
  //# sourceMappingURL=getSplitStyles.js.map