@tamagui/core 1.0.1-beta.59 → 1.0.1-beta.62

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 (134) hide show
  1. package/dist/cjs/Pressability.js +28 -0
  2. package/dist/cjs/Pressability.js.map +7 -0
  3. package/dist/cjs/Pressability.native.js +28 -0
  4. package/dist/cjs/Pressability.native.js.map +7 -0
  5. package/dist/cjs/createComponent.js +53 -15
  6. package/dist/cjs/createComponent.js.map +2 -2
  7. package/dist/cjs/helpers/createMediaStyle.js +1 -1
  8. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  9. package/dist/cjs/helpers/createPropMapper.js +34 -15
  10. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  11. package/dist/cjs/helpers/createTamaguiProvider.js +3 -3
  12. package/dist/cjs/helpers/createTamaguiProvider.js.map +2 -2
  13. package/dist/cjs/helpers/extendStaticConfig.js +2 -1
  14. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  15. package/dist/cjs/helpers/generateAtomicStyles.js +79 -121
  16. package/dist/cjs/helpers/generateAtomicStyles.js.map +2 -2
  17. package/dist/cjs/helpers/getSplitStyles.js +29 -15
  18. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  19. package/dist/cjs/helpers/getStylesAtomic.js +8 -22
  20. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  21. package/dist/cjs/helpers/insertStyleRule.js +2 -1
  22. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  23. package/dist/cjs/helpers/isTamaguiComponent.js +38 -0
  24. package/dist/cjs/helpers/isTamaguiComponent.js.map +7 -0
  25. package/dist/cjs/helpers/isTamaguiElement.js +2 -8
  26. package/dist/cjs/helpers/isTamaguiElement.js.map +2 -2
  27. package/dist/cjs/helpers/mergeProps.js +40 -0
  28. package/dist/cjs/helpers/mergeProps.js.map +7 -0
  29. package/dist/cjs/helpers/pseudos.js +41 -0
  30. package/dist/cjs/helpers/pseudos.js.map +7 -0
  31. package/dist/cjs/helpers/themeable.js +2 -2
  32. package/dist/cjs/helpers/themeable.js.map +2 -2
  33. package/dist/cjs/hooks/useTheme.js +1 -1
  34. package/dist/cjs/hooks/useTheme.js.map +2 -2
  35. package/dist/cjs/index.js +6 -0
  36. package/dist/cjs/index.js.map +2 -2
  37. package/dist/cjs/static.js +2 -0
  38. package/dist/cjs/static.js.map +2 -2
  39. package/dist/cjs/types.js.map +1 -1
  40. package/dist/cjs/views/Slot.js +2 -1
  41. package/dist/cjs/views/Slot.js.map +2 -2
  42. package/dist/esm/Pressability.js +5 -0
  43. package/dist/esm/Pressability.js.map +7 -0
  44. package/dist/esm/Pressability.native.js +5 -0
  45. package/dist/esm/Pressability.native.js.map +7 -0
  46. package/dist/esm/createComponent.js +57 -20
  47. package/dist/esm/createComponent.js.map +2 -2
  48. package/dist/esm/helpers/createMediaStyle.js +1 -1
  49. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  50. package/dist/esm/helpers/createPropMapper.js +34 -15
  51. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  52. package/dist/esm/helpers/createTamaguiProvider.js +2 -2
  53. package/dist/esm/helpers/createTamaguiProvider.js.map +2 -2
  54. package/dist/esm/helpers/extendStaticConfig.js +5 -3
  55. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  56. package/dist/esm/helpers/generateAtomicStyles.js +65 -119
  57. package/dist/esm/helpers/generateAtomicStyles.js.map +2 -2
  58. package/dist/esm/helpers/getSplitStyles.js +29 -15
  59. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  60. package/dist/esm/helpers/getStylesAtomic.js +7 -20
  61. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  62. package/dist/esm/helpers/insertStyleRule.js +2 -1
  63. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  64. package/dist/esm/helpers/isTamaguiComponent.js +16 -0
  65. package/dist/esm/helpers/isTamaguiComponent.js.map +7 -0
  66. package/dist/esm/helpers/isTamaguiElement.js +2 -8
  67. package/dist/esm/helpers/isTamaguiElement.js.map +2 -2
  68. package/dist/esm/helpers/mergeProps.js +18 -0
  69. package/dist/esm/helpers/mergeProps.js.map +7 -0
  70. package/dist/esm/helpers/pseudos.js +18 -0
  71. package/dist/esm/helpers/pseudos.js.map +7 -0
  72. package/dist/esm/helpers/themeable.js +2 -1
  73. package/dist/esm/helpers/themeable.js.map +2 -2
  74. package/dist/esm/hooks/useTheme.js +2 -2
  75. package/dist/esm/hooks/useTheme.js.map +2 -2
  76. package/dist/esm/index.js +5 -0
  77. package/dist/esm/index.js.map +2 -2
  78. package/dist/esm/static.js +2 -0
  79. package/dist/esm/static.js.map +2 -2
  80. package/dist/esm/views/Slot.js +2 -1
  81. package/dist/esm/views/Slot.js.map +2 -2
  82. package/dist/jsx/Pressability.js +4 -0
  83. package/dist/jsx/Pressability.native.js +4 -0
  84. package/dist/jsx/createComponent.js +57 -16
  85. package/dist/jsx/helpers/createMediaStyle.js +1 -1
  86. package/dist/jsx/helpers/createPropMapper.js +34 -15
  87. package/dist/jsx/helpers/createTamaguiProvider.js +2 -2
  88. package/dist/jsx/helpers/extendStaticConfig.js +5 -3
  89. package/dist/jsx/helpers/generateAtomicStyles.js +65 -119
  90. package/dist/jsx/helpers/getSplitStyles.js +29 -15
  91. package/dist/jsx/helpers/getStylesAtomic.js +7 -20
  92. package/dist/jsx/helpers/insertStyleRule.js +2 -1
  93. package/dist/jsx/helpers/isTamaguiComponent.js +15 -0
  94. package/dist/jsx/helpers/isTamaguiElement.js +2 -8
  95. package/dist/jsx/helpers/mergeProps.js +17 -0
  96. package/dist/jsx/helpers/pseudos.js +17 -0
  97. package/dist/jsx/helpers/themeable.js +2 -1
  98. package/dist/jsx/hooks/useTheme.js +2 -2
  99. package/dist/jsx/index.js +5 -0
  100. package/dist/jsx/static.js +2 -0
  101. package/dist/jsx/views/Slot.js +2 -1
  102. package/package.json +5 -6
  103. package/types/Pressability.d.ts +2 -0
  104. package/types/Pressability.d.ts.map +1 -0
  105. package/types/Pressability.native.d.ts +2 -0
  106. package/types/Pressability.native.d.ts.map +1 -0
  107. package/types/createComponent.d.ts.map +1 -1
  108. package/types/helpers/createPropMapper.d.ts +1 -1
  109. package/types/helpers/createPropMapper.d.ts.map +1 -1
  110. package/types/helpers/createTamaguiProvider.d.ts +1 -1
  111. package/types/helpers/createTamaguiProvider.d.ts.map +1 -1
  112. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  113. package/types/helpers/generateAtomicStyles.d.ts +5 -6
  114. package/types/helpers/generateAtomicStyles.d.ts.map +1 -1
  115. package/types/helpers/getSplitStyles.d.ts +2 -2
  116. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  117. package/types/helpers/getStylesAtomic.d.ts +0 -14
  118. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  119. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  120. package/types/helpers/isTamaguiComponent.d.ts +5 -0
  121. package/types/helpers/isTamaguiComponent.d.ts.map +1 -0
  122. package/types/helpers/isTamaguiElement.d.ts.map +1 -1
  123. package/types/helpers/mergeProps.d.ts +2 -0
  124. package/types/helpers/mergeProps.d.ts.map +1 -0
  125. package/types/helpers/pseudos.d.ts +15 -0
  126. package/types/helpers/pseudos.d.ts.map +1 -0
  127. package/types/helpers/themeable.d.ts.map +1 -1
  128. package/types/index.d.ts +4 -0
  129. package/types/index.d.ts.map +1 -1
  130. package/types/static.d.ts +2 -0
  131. package/types/static.d.ts.map +1 -1
  132. package/types/types.d.ts +4 -3
  133. package/types/types.d.ts.map +1 -1
  134. package/types/views/Slot.d.ts.map +1 -1
@@ -9,14 +9,14 @@ import { isObj } from "./isObj";
9
9
  const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
10
10
  const variants = staticConfig.variants || {};
11
11
  const defaultProps = staticConfig.defaultProps || {};
12
- const mapper = /* @__PURE__ */ __name((key, value, theme, propsIn, state, avoidDefaultProps = false) => {
12
+ const mapper = /* @__PURE__ */ __name((key, value, theme, propsIn, state, avoidDefaultProps = false, debug) => {
13
13
  const conf = getConfig();
14
14
  if (!conf) {
15
15
  console.trace("no conf! err");
16
16
  return;
17
17
  }
18
18
  const props = state.fallbackProps || propsIn;
19
- const returnVariablesAs = state.resolveVariablesAs === "value" || !!props.animation ? "value" : "auto";
19
+ const returnVariablesAs = state.resolveVariablesAs === "value" || !!props.animation ? "non-color-value" : "auto";
20
20
  const fontFamily = props.fontFamily || defaultProps.fontFamily || "$body";
21
21
  const variantValue = resolveVariants(key, value, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, "", avoidDefaultProps);
22
22
  if (variantValue) {
@@ -29,9 +29,9 @@ const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
29
29
  }
30
30
  if (value) {
31
31
  if (value[0] === "$") {
32
- value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs);
32
+ value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs, debug);
33
33
  } else if (isVariable(value)) {
34
- value = getVariableValue(value, returnVariablesAs);
34
+ value = getVariableValue(key, value, returnVariablesAs);
35
35
  }
36
36
  }
37
37
  if (shouldReturn) {
@@ -40,7 +40,7 @@ const createPropMapper = /* @__PURE__ */ __name((staticConfig) => {
40
40
  }, "mapper");
41
41
  return mapper;
42
42
  }, "createPropMapper");
43
- const resolveVariants = /* @__PURE__ */ __name((key, value, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, avoidDefaultProps = false) => {
43
+ const resolveVariants = /* @__PURE__ */ __name((key, value, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, avoidDefaultProps = false, debug) => {
44
44
  var _a;
45
45
  const variant = variants && variants[key];
46
46
  if (variant && value !== void 0) {
@@ -51,7 +51,7 @@ const resolveVariants = /* @__PURE__ */ __name((key, value, props, defaultProps,
51
51
  variantValue = fn(value, getVariantExtras(props, theme, defaultProps, avoidDefaultProps));
52
52
  }
53
53
  if (isObj(variantValue)) {
54
- variantValue = resolveTokensAndVariants(key, variantValue, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, avoidDefaultProps);
54
+ variantValue = resolveTokensAndVariants(key, variantValue, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, avoidDefaultProps, debug);
55
55
  }
56
56
  return Object.entries(expandStyles(variantValue));
57
57
  } else {
@@ -59,13 +59,14 @@ const resolveVariants = /* @__PURE__ */ __name((key, value, props, defaultProps,
59
59
  if ((_a = staticConfig.validStyles) == null ? void 0 : _a[key]) {
60
60
  return null;
61
61
  }
62
- console.warn(`No variant found: ${staticConfig.componentName || "[UnnamedComponent]"} has variant "${key}", but no matching value "${value}"`);
62
+ const name = staticConfig.componentName || "[UnnamedComponent]";
63
+ console.warn(`No variant found: ${name} has variant "${key}", but no matching value "${value}"`);
63
64
  }
64
65
  return null;
65
66
  }
66
67
  }
67
68
  }, "resolveVariants");
68
- const resolveTokensAndVariants = /* @__PURE__ */ __name((key, value, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, avoidDefaultProps) => {
69
+ const resolveTokensAndVariants = /* @__PURE__ */ __name((key, value, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, avoidDefaultProps, debug) => {
69
70
  var _a;
70
71
  let res = {};
71
72
  for (const rKey in value) {
@@ -79,15 +80,15 @@ const resolveTokensAndVariants = /* @__PURE__ */ __name((key, value, props, defa
79
80
  } else {
80
81
  res = {
81
82
  ...res,
82
- ...Object.fromEntries(resolveVariants(fKey, val, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, key, avoidDefaultProps))
83
+ ...Object.fromEntries(resolveVariants(fKey, val, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, key, avoidDefaultProps, debug))
83
84
  };
84
85
  }
85
86
  } else if (typeof val === "string") {
86
- const fVal = val[0] === "$" ? getToken(fKey, val, conf, theme, fontFamily, returnVariablesAs) : val;
87
+ const fVal = val[0] === "$" ? getToken(fKey, val, conf, theme, fontFamily, returnVariablesAs, debug) : val;
87
88
  res[fKey] = fVal;
88
89
  } else {
89
90
  if (isObj(val)) {
90
- res[fKey] = resolveTokensAndVariants(fKey, val, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, key, avoidDefaultProps);
91
+ res[fKey] = resolveTokensAndVariants(fKey, val, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, key, avoidDefaultProps, debug);
91
92
  } else {
92
93
  res[fKey] = value[fKey];
93
94
  }
@@ -128,7 +129,7 @@ const fontShorthand = {
128
129
  fontSize: "size",
129
130
  fontWeight: "weight"
130
131
  };
131
- const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed, fontsParsed }, theme, fontFamily = "$body", resolveAs) => {
132
+ const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed, fontsParsed }, theme, fontFamily = "$body", resolveAs, debug) => {
132
133
  var _a, _b, _c;
133
134
  let valOrVar;
134
135
  let hasSet = false;
@@ -167,21 +168,39 @@ const getToken = /* @__PURE__ */ __name((key, value, { tokensParsed, fontsParsed
167
168
  }
168
169
  }
169
170
  if (hasSet) {
170
- return getVariableValue(valOrVar, resolveAs);
171
+ return getVariableValue(key, valOrVar, resolveAs);
171
172
  }
172
173
  if (process.env.NODE_ENV === "development") {
173
174
  if (value && value[0] === "$") {
174
- console.warn(`\u26A0\uFE0F Missing token:`, key, value, fontFamily, theme, fontsParsed);
175
+ console.warn(`\u26A0\uFE0F You've passed the value "${value}" to the style property "${key}", but there's no theme or token with the key "${value}". Using theme "${theme.name}".
176
+
177
+ Set the debug prop to true to see more detailed debug information.`);
178
+ if (debug) {
179
+ if (typeof window !== "undefined") {
180
+ console.log("Looked in:");
181
+ console.log("Theme:", theme);
182
+ console.log("Tokens:", tokensParsed);
183
+ console.log("Fonts:", fontsParsed);
184
+ }
185
+ }
175
186
  return null;
176
187
  }
177
188
  }
178
189
  return value;
179
190
  }, "getToken");
180
- function getVariableValue(valOrVar, resolveAs = "auto") {
191
+ function getVariableValue(key, valOrVar, resolveAs = "auto") {
181
192
  if (isVariable(valOrVar)) {
182
193
  if (resolveAs === "variable") {
183
194
  return valOrVar;
184
195
  }
196
+ if (resolveAs === "non-color-value") {
197
+ if (isWeb) {
198
+ if (key in tokenCategories.color) {
199
+ return valOrVar.variable;
200
+ }
201
+ }
202
+ return valOrVar.val;
203
+ }
185
204
  if (!isWeb || resolveAs === "value") {
186
205
  return valOrVar.val;
187
206
  }
@@ -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 {\n GenericVariantDefinitions,\n PropMapper,\n StaticConfig,\n TamaguiInternalConfig,\n VariantSpreadFunction,\n} from '../types'\nimport { expandStyle, expandStyles } from './generateAtomicStyles'\nimport { getVariantExtras } from './getVariantExtras'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable' | 'both'\n\nexport const createPropMapper = (staticConfig: Partial<StaticConfig>) => {\n const variants = staticConfig.variants || {}\n const defaultProps = staticConfig.defaultProps || {}\n\n const mapper: PropMapper = (key, value, theme, propsIn, state, avoidDefaultProps = false) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n const props = state.fallbackProps || propsIn\n const returnVariablesAs =\n state.resolveVariablesAs === 'value' || !!props.animation ? 'value' : 'auto'\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\n const variantValue = resolveVariants(\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n '',\n avoidDefaultProps\n )\n if (variantValue) {\n return variantValue\n }\n\n let shouldReturn = value !== undefined && value !== null\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n if (value[0] === '$') {\n // prettier-ignore\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 expandStyle(key, value) || [[key, value]]\n }\n }\n\n return mapper\n}\n\ntype StyleResolver = (\n key: string,\n value: any,\n props: Record<string, any>,\n defaultProps: any,\n theme: any,\n variants: GenericVariantDefinitions,\n fontFamily: string,\n conf: TamaguiInternalConfig,\n returnVariablesAs: 'auto' | 'value',\n staticConfig: Partial<StaticConfig>,\n parentVariantKey: string,\n avoidDefaultProps?: boolean\n) => any\n\nconst resolveVariants: StyleResolver = (\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps = false\n) => {\n const variant = variants && variants[key]\n if (variant && value !== undefined) {\n let variantValue = getVariantDefinition(variant, key, value)\n\n if (variantValue) {\n if (typeof variantValue === 'function') {\n const fn = variantValue as VariantSpreadFunction<any>\n variantValue = fn(value, getVariantExtras(props, theme, defaultProps, avoidDefaultProps))\n }\n\n if (isObj(variantValue)) {\n variantValue = resolveTokensAndVariants(\n key,\n variantValue,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps\n )\n }\n\n return Object.entries(expandStyles(variantValue))\n } else {\n // variant at key exists, but no matching variant value, return nothing\n if (process.env.NODE_ENV === 'development') {\n if (staticConfig.validStyles?.[key]) {\n return null\n }\n console.warn(\n `No variant found: ${\n staticConfig.componentName || '[UnnamedComponent]'\n } has variant \"${key}\", but no matching value \"${value}\"`\n )\n }\n return null\n }\n }\n}\n\nconst resolveTokensAndVariants: StyleResolver = (\n key, // we dont use key assume value is object instead\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps\n) => {\n let res = {}\n for (const rKey in value) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = value[rKey]\n if (isVariable(val)) {\n res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable\n // res[fKey] =\n // resolveAs === 'variable' ? val : !isWeb || resolveAs === 'value' ? val.val : val.variable\n } else if (variants[fKey]) {\n // avoids infinite loop if variant is matching a style prop\n // eg: { variants: { flex: { true: { flex: 2 } } } }\n if (parentVariantKey === key) {\n res[fKey] = val\n } else {\n res = {\n ...res,\n ...Object.fromEntries(\n resolveVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps\n )\n ),\n }\n }\n } else if (typeof val === 'string') {\n const fVal =\n val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily, returnVariablesAs) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // sub-objects: media queries, pseudos, shadowOffset\n res[fKey] = resolveTokensAndVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps\n )\n } else {\n // nullish values cant be tokens, need no extra parsing\n res[fKey] = value[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\n// goes through specificity finding best matching variant function\nfunction getVariantDefinition(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\nconst fontShorthand = {\n fontSize: 'size',\n fontWeight: 'weight',\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed, fontsParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes\n) => {\n let valOrVar: any\n let hasSet = false\n if (theme[value]) {\n valOrVar = theme[value]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = fontsParsed[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n case 'lineHeight':\n case 'letterSpacing':\n case 'fontWeight':\n valOrVar = fontsParsed[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:`, key, value, fontFamily, theme, fontsParsed)\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 {\n DebugProp,\n GenericVariantDefinitions,\n PropMapper,\n StaticConfig,\n TamaguiInternalConfig,\n VariantSpreadFunction,\n} from '../types'\nimport { expandStyle, expandStyles } from './generateAtomicStyles'\nimport { getVariantExtras } from './getVariantExtras'\nimport { isObj } from './isObj'\n\nexport type ResolveVariableTypes = 'auto' | 'value' | 'variable' | 'both' | 'non-color-value'\n\nexport const createPropMapper = (staticConfig: Partial<StaticConfig>) => {\n const variants = staticConfig.variants || {}\n const defaultProps = staticConfig.defaultProps || {}\n\n const mapper: PropMapper = (\n key,\n value,\n theme,\n propsIn,\n state,\n avoidDefaultProps = false,\n debug\n ) => {\n const conf = getConfig()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n\n const props = state.fallbackProps || propsIn\n const returnVariablesAs =\n state.resolveVariablesAs === 'value' || !!props.animation ? 'non-color-value' : 'auto'\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\n const variantValue = resolveVariants(\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n '',\n avoidDefaultProps\n )\n if (variantValue) {\n return variantValue\n }\n\n let shouldReturn = value !== undefined && value !== null\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n if (value[0] === '$') {\n // prettier-ignore\n value = getToken(key, value, conf, theme, fontFamily, returnVariablesAs, debug)\n } else if (isVariable(value)) {\n value = getVariableValue(key, value, returnVariablesAs)\n }\n }\n\n if (shouldReturn) {\n return expandStyle(key, value) || [[key, value]]\n }\n }\n\n return mapper\n}\n\ntype StyleResolver = (\n key: string,\n value: any,\n props: Record<string, any>,\n defaultProps: any,\n theme: any,\n variants: GenericVariantDefinitions,\n fontFamily: string,\n conf: TamaguiInternalConfig,\n returnVariablesAs: 'auto' | 'value' | 'non-color-value',\n staticConfig: Partial<StaticConfig>,\n parentVariantKey: string,\n avoidDefaultProps?: boolean,\n debug?: DebugProp\n) => any\n\nconst resolveVariants: StyleResolver = (\n key,\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps = false,\n debug\n) => {\n const variant = variants && variants[key]\n if (variant && value !== undefined) {\n let variantValue = getVariantDefinition(variant, key, value)\n\n if (variantValue) {\n if (typeof variantValue === 'function') {\n const fn = variantValue as VariantSpreadFunction<any>\n variantValue = fn(value, getVariantExtras(props, theme, defaultProps, avoidDefaultProps))\n }\n\n if (isObj(variantValue)) {\n variantValue = resolveTokensAndVariants(\n key,\n variantValue,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps,\n debug\n )\n }\n\n return Object.entries(expandStyles(variantValue))\n } else {\n // variant at key exists, but no matching variant value, return nothing\n if (process.env.NODE_ENV === 'development') {\n if (staticConfig.validStyles?.[key]) {\n return null\n }\n const name = staticConfig.componentName || '[UnnamedComponent]'\n console.warn(\n `No variant found: ${name} has variant \"${key}\", but no matching value \"${value}\"`\n )\n }\n return null\n }\n }\n}\n\nconst resolveTokensAndVariants: StyleResolver = (\n key, // we dont use key assume value is object instead\n value,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n avoidDefaultProps,\n debug\n) => {\n let res = {}\n for (const rKey in value) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = value[rKey]\n if (isVariable(val)) {\n res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable\n } else if (variants[fKey]) {\n // avoids infinite loop if variant is matching a style prop\n // eg: { variants: { flex: { true: { flex: 2 } } } }\n if (parentVariantKey === key) {\n res[fKey] = val\n } else {\n res = {\n ...res,\n ...Object.fromEntries(\n resolveVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps,\n debug\n )\n ),\n }\n }\n } else if (typeof val === 'string') {\n const fVal =\n val[0] === '$'\n ? getToken(fKey, val, conf, theme, fontFamily, returnVariablesAs, debug)\n : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // sub-objects: media queries, pseudos, shadowOffset\n res[fKey] = resolveTokensAndVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n avoidDefaultProps,\n debug\n )\n } else {\n // nullish values cant be tokens, need no extra parsing\n res[fKey] = value[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\n// goes through specificity finding best matching variant function\nfunction getVariantDefinition(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\nconst fontShorthand = {\n fontSize: 'size',\n fontWeight: 'weight',\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed, fontsParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n resolveAs?: ResolveVariableTypes,\n debug?: DebugProp\n) => {\n let valOrVar: any\n let hasSet = false\n if (theme[value]) {\n valOrVar = theme[value]\n hasSet = true\n } else {\n switch (key) {\n case 'fontFamily':\n valOrVar = fontsParsed[value]?.family || value\n hasSet = true\n break\n case 'fontSize':\n case 'lineHeight':\n case 'letterSpacing':\n case 'fontWeight':\n valOrVar = fontsParsed[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(key, valOrVar, resolveAs)\n }\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n console.warn(\n `\u26A0\uFE0F You've passed the value \"${value}\" to the style property \"${key}\", but there's no theme or token with the key \"${value}\". Using theme \"${theme.name}\".\n\nSet the debug prop to true to see more detailed debug information.`\n )\n if (debug) {\n if (typeof window !== 'undefined') {\n console.log('Looked in:')\n console.log('Theme:', theme)\n console.log('Tokens:', tokensParsed)\n console.log('Fonts:', fontsParsed)\n }\n }\n return null\n }\n }\n return value\n}\n\nfunction getVariableValue(\n key: string,\n valOrVar: Variable | any,\n resolveAs: ResolveVariableTypes = 'auto'\n) {\n if (isVariable(valOrVar)) {\n if (resolveAs === 'variable') {\n return valOrVar\n }\n if (resolveAs === 'non-color-value') {\n if (isWeb) {\n if (key in tokenCategories.color) {\n return valOrVar.variable\n }\n }\n return valOrVar.val\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
  }
@@ -9,13 +9,13 @@ function createTamaguiProvider({
9
9
  ...themeProps
10
10
  }) {
11
11
  return /* @__PURE__ */ __name(function TamaguiProvider({
12
- injectCSS,
12
+ disableInjectCSS,
13
13
  children,
14
14
  ...themePropsProvider
15
15
  }) {
16
16
  if (typeof document !== "undefined") {
17
17
  React.useLayoutEffect(() => {
18
- if (!injectCSS)
18
+ if (disableInjectCSS)
19
19
  return;
20
20
  const style = document.createElement("style");
21
21
  style.appendChild(document.createTextNode(getCSS()));
@@ -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 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,MAAe,GAAG;AAAA,MAAa,GAAG;AAAA,OAChC,QACH,CACF,CACF;AAAA,EAEJ,GA3BO;AA4BT;AAlCgB;",
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 disableInjectCSS,\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 (disableInjectCSS) 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;AAAkB;AACtB,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,MAAe,GAAG;AAAA,MAAa,GAAG;AAAA,OAChC,QACH,CACF,CACF;AAAA,EAEJ,GA3BO;AA4BT;AAlCgB;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,7 @@ 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
+ import { mergeProps } from "./mergeProps";
5
6
  function extendStaticConfig(config, parent) {
6
7
  var _a;
7
8
  if (!parent || !("staticConfig" in parent)) {
@@ -35,12 +36,13 @@ function extendStaticConfig(config, parent) {
35
36
  ...parent.staticConfig.validStyles,
36
37
  ...config.validStyles
37
38
  } : parent.staticConfig.validStyles || stylePropsView,
38
- defaultProps: {
39
+ defaultProps: mergeProps({
39
40
  ...parent.staticConfig.defaultProps,
40
- ...parent.staticConfig.defaultVariants,
41
+ ...parent.staticConfig.defaultVariants
42
+ }, {
41
43
  ...config.defaultProps,
42
44
  ...config.defaultVariants
43
- }
45
+ })
44
46
  });
45
47
  }
46
48
  __name(extendStaticConfig, "extendStaticConfig");
@@ -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(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,IACf,GAAG,OAAO,aAAa;AAAA,EACzB;AAGA,MAAI,OAAO,UAAU;AACnB,eAAW,OAAO,OAAO,UAAU;AACjC,UAAI,SAAS,MAAM;AACjB,iBAAS,OAAO;AAAA,UACd,GAAG,SAAS;AAAA,UACZ,GAAG,OAAO,SAAS;AAAA,QACrB;AAAA,MACF,OAAO;AACL,iBAAS,OAAO,OAAO,SAAS;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,kBAAkB;AAAA,IACvB,GAAG,OAAO;AAAA,IACV,GAAG;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,MACE,GAAG,OAAO,aAAa;AAAA,MACvB,GAAG,OAAO;AAAA,IACZ,IACA,OAAO,aAAa,eAAe;AAAA,IACvC,cAAc;AAAA,MACZ,GAAG,OAAO,aAAa;AAAA,MACvB,GAAG,OAAO,aAAa;AAAA,MACvB,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ;AAAA,EACF,CAAC;AACH;AA7CgB;AA+CT,MAAM,oBAAoB,wBAAC,WAAsD;AACtF,SAAO;AAAA,IACL,GAAG;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'\nimport { mergeProps } from './mergeProps'\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: mergeProps(\n {\n ...parent.staticConfig.defaultProps,\n ...parent.staticConfig.defaultVariants,\n },\n {\n ...config.defaultProps,\n ...config.defaultVariants,\n }\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;AACA;AAEO,4BAA4B,QAA+B,QAA4B;AAN9F;AAOE,MAAI,CAAC,UAAU,CAAE,mBAAkB,SAAS;AAC1C,WAAO,kBAAkB,MAAM;AAAA,EACjC;AAEA,QAAM,WAAW;AAAA,IACf,GAAG,OAAO,aAAa;AAAA,EACzB;AAGA,MAAI,OAAO,UAAU;AACnB,eAAW,OAAO,OAAO,UAAU;AACjC,UAAI,SAAS,MAAM;AACjB,iBAAS,OAAO;AAAA,UACd,GAAG,SAAS;AAAA,UACZ,GAAG,OAAO,SAAS;AAAA,QACrB;AAAA,MACF,OAAO;AACL,iBAAS,OAAO,OAAO,SAAS;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AAEA,SAAO,kBAAkB;AAAA,IACvB,GAAG,OAAO;AAAA,IACV,GAAG;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,MACE,GAAG,OAAO,aAAa;AAAA,MACvB,GAAG,OAAO;AAAA,IACZ,IACA,OAAO,aAAa,eAAe;AAAA,IACvC,cAAc,WACZ;AAAA,MACE,GAAG,OAAO,aAAa;AAAA,MACvB,GAAG,OAAO,aAAa;AAAA,IACzB,GACA;AAAA,MACE,GAAG,OAAO;AAAA,MACV,GAAG,OAAO;AAAA,IACZ,CACF;AAAA,EACF,CAAC;AACH;AAjDgB;AAmDT,MAAM,oBAAoB,wBAAC,WAAsD;AACtF,SAAO;AAAA,IACL,GAAG;AAAA,IACH,QAAQ;AAAA,IACR,YAAY,iBAAiB,MAAM;AAAA,EACrC;AACF,GANiC;",
6
6
  "names": []
7
7
  }
@@ -4,53 +4,44 @@ import { simpleHash } from "@tamagui/helpers";
4
4
  import hyphenateStyleName from "hyphenate-style-name";
5
5
  import normalizeCSSColor from "normalize-css-color";
6
6
  import { isWeb } from "../constants/platform";
7
- import { prefixInlineStyles, prefixStyles } from "./prefixStyles";
7
+ import { pseudos } from "./pseudos";
8
+ const reducedStyleKeys = {
9
+ shadowColor: true,
10
+ shadowOffset: true,
11
+ shadowOpacity: true,
12
+ shadowRadius: true,
13
+ textShadowColor: true,
14
+ textShadowOffset: true,
15
+ textShadowRadius: true
16
+ };
8
17
  function expandStyles(style) {
9
18
  const res = {};
19
+ boxShadowReducer(res, style);
20
+ textShadowReducer(res, style);
10
21
  for (const key in style) {
11
- updateReactDOMStyle(res, key, style[key]);
22
+ if (reducedStyleKeys[key])
23
+ continue;
24
+ if (key in pseudos) {
25
+ res[key] = expandStyles(style[key]);
26
+ } else {
27
+ updateReactDOMStyle(res, key, style[key]);
28
+ }
12
29
  }
13
30
  return res;
14
31
  }
15
32
  __name(expandStyles, "expandStyles");
16
- function inline(style) {
17
- return prefixInlineStyles(expandStyles(style));
33
+ function updateReactDOMStyle(style, key, value) {
34
+ value = normalizeValueWithProperty(value, key);
35
+ const out = expandStyle(key, value);
36
+ if (out) {
37
+ Object.assign(style, Object.fromEntries(out));
38
+ } else {
39
+ style[key] = value;
40
+ }
18
41
  }
19
- __name(inline, "inline");
20
- const STYLE_SHORT_FORM_EXPANSIONS = {
21
- borderColor: ["borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor"],
22
- borderRadius: [
23
- "borderTopLeftRadius",
24
- "borderTopRightRadius",
25
- "borderBottomRightRadius",
26
- "borderBottomLeftRadius"
27
- ],
28
- borderStyle: ["borderTopStyle", "borderRightStyle", "borderBottomStyle", "borderLeftStyle"],
29
- borderWidth: ["borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth"],
30
- margin: ["marginTop", "marginRight", "marginBottom", "marginLeft"],
31
- marginHorizontal: ["marginRight", "marginLeft"],
32
- marginVertical: ["marginTop", "marginBottom"],
33
- overflow: ["overflowX", "overflowY"],
34
- overscrollBehavior: ["overscrollBehaviorX", "overscrollBehaviorY"],
35
- padding: ["paddingTop", "paddingRight", "paddingBottom", "paddingLeft"],
36
- paddingHorizontal: ["paddingRight", "paddingLeft"],
37
- paddingVertical: ["paddingTop", "paddingBottom"]
38
- };
42
+ __name(updateReactDOMStyle, "updateReactDOMStyle");
39
43
  const generateAtomicStyles = /* @__PURE__ */ __name((style) => {
40
44
  const res = expandStyles(style);
41
- if (style.shadowColor != null || style.shadowOffset != null || style.shadowOpacity != null || style.shadowRadius != null) {
42
- boxShadowReducer(res, style);
43
- delete res["shadowColor"];
44
- delete res["shadowOffset"];
45
- delete res["shadowOpacity"];
46
- delete res["shadowRadius"];
47
- }
48
- if (style.textShadowColor != null || style.textShadowOffset != null || style.textShadowRadius != null) {
49
- textShadowReducer(res, style);
50
- delete res["textShadowColor"];
51
- delete res["textShadowOffset"];
52
- delete res["textShadowRadius"];
53
- }
54
45
  const out = {};
55
46
  for (const key in res) {
56
47
  const value = res[key];
@@ -61,11 +52,11 @@ const generateAtomicStyles = /* @__PURE__ */ __name((style) => {
61
52
  const { identifier } = cachedResult;
62
53
  out[identifier] = cachedResult;
63
54
  } else {
64
- const identifier = createIdentifier("r", key, value);
65
- const rules = createAtomicRules(identifier, key, value);
55
+ const identifier = simpleHash(key + valueString);
56
+ const rules = createAtomicRules(identifier, key, valueString);
66
57
  const cachedResult2 = cache.set(key, valueString, {
67
58
  property: key,
68
- value: stringifyValueWithProperty(value, key),
59
+ value: valueString,
69
60
  identifier,
70
61
  rules
71
62
  });
@@ -75,16 +66,6 @@ const generateAtomicStyles = /* @__PURE__ */ __name((style) => {
75
66
  }
76
67
  return out;
77
68
  }, "generateAtomicStyles");
78
- function updateReactDOMStyle(style, key, value) {
79
- value = normalizeValueWithProperty(value, key);
80
- const out = expandStyle(key, value);
81
- if (out) {
82
- Object.assign(style, Object.fromEntries(out));
83
- } else {
84
- style[key] = value;
85
- }
86
- }
87
- __name(updateReactDOMStyle, "updateReactDOMStyle");
88
69
  function expandStyle(key, value) {
89
70
  if (key === "flex") {
90
71
  if (value <= -1) {
@@ -153,15 +134,9 @@ function createAtomicRules(identifier, property, value) {
153
134
  const rules = [];
154
135
  const selector = `.${identifier}`;
155
136
  switch (property) {
156
- case "animationKeyframes": {
157
- const { animationNames, rules: keyframesRules } = processKeyframesValue(value);
158
- const block = createDeclarationBlock({ animationName: animationNames.join(",") });
159
- rules.push(`${selector}${block}`, ...keyframesRules);
160
- break;
161
- }
162
137
  case "placeholderTextColor": {
163
138
  const block = createDeclarationBlock({ color: value, opacity: 1 });
164
- rules.push(`${selector}::-webkit-input-placeholder${block}`, `${selector}::-moz-placeholder${block}`, `${selector}:-ms-input-placeholder${block}`, `${selector}::placeholder${block}`);
139
+ rules.push(`${selector}::placeholder${block}`);
165
140
  break;
166
141
  }
167
142
  case "pointerEvents": {
@@ -200,58 +175,16 @@ function createAtomicRules(identifier, property, value) {
200
175
  return rules;
201
176
  }
202
177
  __name(createAtomicRules, "createAtomicRules");
203
- function processKeyframesValue(keyframesValue) {
204
- if (typeof keyframesValue === "number") {
205
- throw new Error(`Invalid CSS keyframes type: ${typeof keyframesValue}`);
206
- }
207
- const animationNames = [];
208
- const rules = [];
209
- const value = Array.isArray(keyframesValue) ? keyframesValue : [keyframesValue];
210
- for (const keyframes of value) {
211
- if (typeof keyframes === "string") {
212
- animationNames.push(keyframes);
213
- } else {
214
- const { identifier, rules: keyframesRules } = createKeyframes(keyframes);
215
- animationNames.push(identifier);
216
- rules.push(...keyframesRules);
217
- }
218
- }
219
- return { animationNames, rules };
220
- }
221
- __name(processKeyframesValue, "processKeyframesValue");
222
- function createKeyframes(keyframes) {
223
- const prefixes2 = ["-webkit-", ""];
224
- const identifier = createIdentifier("r", "animation", keyframes);
225
- const steps = "{" + Object.keys(keyframes).map((stepName) => {
226
- const rule = keyframes[stepName];
227
- const block = createDeclarationBlock(rule);
228
- return `${stepName}${block}`;
229
- }).join("") + "}";
230
- const rules = prefixes2.map((prefix) => {
231
- return `@${prefix}keyframes ${identifier}${steps}`;
232
- });
233
- return { identifier, rules };
234
- }
235
- __name(createKeyframes, "createKeyframes");
236
178
  function createDeclarationBlock(style) {
237
- const domStyle = prefixStyles(expandStyles(style));
179
+ const domStyle = expandStyles(style);
238
180
  const declarationsString = Object.keys(domStyle).map((property) => {
239
181
  const value = domStyle[property];
240
182
  const prop = hyphenateStyleName(property);
241
- if (Array.isArray(value)) {
242
- return value.map((v) => `${prop}:${v}`).join(";");
243
- } else {
244
- return `${prop}:${value}`;
245
- }
183
+ return `${prop}:${value}`;
246
184
  }).sort().join(";");
247
185
  return `{${declarationsString};}`;
248
186
  }
249
187
  __name(createDeclarationBlock, "createDeclarationBlock");
250
- function createIdentifier(prefix, name, value) {
251
- const hashedString = simpleHash(name + stringifyValueWithProperty(value, name));
252
- return `${prefix}-${hashedString}`;
253
- }
254
- __name(createIdentifier, "createIdentifier");
255
188
  const cache = {
256
189
  get(property, value) {
257
190
  if (cache[property] != null && cache[property].hasOwnProperty(value) && cache[property][value] != null) {
@@ -266,8 +199,7 @@ const cache = {
266
199
  }
267
200
  };
268
201
  function stringifyValueWithProperty(value, property) {
269
- const normalizedValue = normalizeValueWithProperty(value, property);
270
- return typeof normalizedValue !== "string" ? JSON.stringify(normalizedValue || "") : normalizedValue;
202
+ return normalizeValueWithProperty(value, property);
271
203
  }
272
204
  __name(stringifyValueWithProperty, "stringifyValueWithProperty");
273
205
  const mapTransform = /* @__PURE__ */ __name((transform) => {
@@ -294,7 +226,8 @@ const colorProps = {
294
226
  };
295
227
  function normalizeValueWithProperty(value, property) {
296
228
  if (process.env.TAMAGUI_TARGET === "web") {
297
- if ((property === void 0 || property === null || !unitlessNumbers[property]) && typeof value === "number") {
229
+ const shouldCoerceToPx = typeof value === "number" && (property === void 0 || property === null || !unitlessNumbers[property]);
230
+ if (shouldCoerceToPx) {
298
231
  return `${value}px`;
299
232
  }
300
233
  }
@@ -322,6 +255,7 @@ const normalizeColor = /* @__PURE__ */ __name((color, opacity = 1) => {
322
255
  const alpha = (a * opacity).toFixed(2);
323
256
  return `rgba(${r},${g},${b},${alpha})`;
324
257
  }
258
+ return `${color}`;
325
259
  }, "normalizeColor");
326
260
  const isWebColor = /* @__PURE__ */ __name((color) => color === "currentcolor" || color === "currentColor" || color === "inherit" || color.indexOf("var(") === 0, "isWebColor");
327
261
  const processColor = /* @__PURE__ */ __name((color) => {
@@ -381,25 +315,17 @@ const unitlessNumbers = {
381
315
  scaleZ: true,
382
316
  shadowOpacity: true
383
317
  };
384
- const prefixes = ["ms", "Moz", "O", "Webkit"];
385
- const prefixKey = /* @__PURE__ */ __name((prefix, key) => {
386
- return prefix + key.charAt(0).toUpperCase() + key.substring(1);
387
- }, "prefixKey");
388
- Object.keys(unitlessNumbers).forEach((prop) => {
389
- prefixes.forEach((prefix) => {
390
- unitlessNumbers[prefixKey(prefix, prop)] = unitlessNumbers[prop];
391
- });
392
- });
393
318
  const resolveShadowValue = /* @__PURE__ */ __name((style) => {
394
319
  const { shadowColor, shadowOffset, shadowOpacity, shadowRadius } = style;
320
+ if (shadowRadius === void 0) {
321
+ return;
322
+ }
395
323
  const { height, width } = shadowOffset || defaultOffset;
396
324
  const offsetX = normalizeValueWithProperty(width);
397
325
  const offsetY = normalizeValueWithProperty(height);
398
326
  const blurRadius = normalizeValueWithProperty(shadowRadius || 0);
399
- const color = normalizeColor(shadowColor || "black", shadowOpacity);
400
- if (color != null && offsetX != null && offsetY != null && blurRadius != null) {
401
- return `${offsetX} ${offsetY} ${blurRadius} ${color}`;
402
- }
327
+ const color = normalizeColor(String(shadowColor || "black"), shadowOpacity);
328
+ return `${offsetX} ${offsetY} ${blurRadius} ${color}`;
403
329
  }, "resolveShadowValue");
404
330
  function boxShadowReducer(resolvedStyle, style) {
405
331
  const { boxShadow } = style;
@@ -423,10 +349,30 @@ function textShadowReducer(resolvedStyle, style) {
423
349
  }
424
350
  }
425
351
  __name(textShadowReducer, "textShadowReducer");
352
+ const STYLE_SHORT_FORM_EXPANSIONS = {
353
+ borderColor: ["borderTopColor", "borderRightColor", "borderBottomColor", "borderLeftColor"],
354
+ borderRadius: [
355
+ "borderTopLeftRadius",
356
+ "borderTopRightRadius",
357
+ "borderBottomRightRadius",
358
+ "borderBottomLeftRadius"
359
+ ],
360
+ borderStyle: ["borderTopStyle", "borderRightStyle", "borderBottomStyle", "borderLeftStyle"],
361
+ borderWidth: ["borderTopWidth", "borderRightWidth", "borderBottomWidth", "borderLeftWidth"],
362
+ margin: ["marginTop", "marginRight", "marginBottom", "marginLeft"],
363
+ marginHorizontal: ["marginRight", "marginLeft"],
364
+ marginVertical: ["marginTop", "marginBottom"],
365
+ overscrollBehavior: ["overscrollBehaviorX", "overscrollBehaviorY"],
366
+ padding: ["paddingTop", "paddingRight", "paddingBottom", "paddingLeft"],
367
+ paddingHorizontal: ["paddingRight", "paddingLeft"],
368
+ paddingVertical: ["paddingTop", "paddingBottom"],
369
+ ...isWeb && {
370
+ overflow: ["overflowX", "overflowY"]
371
+ }
372
+ };
426
373
  export {
427
374
  expandStyle,
428
375
  expandStyles,
429
- generateAtomicStyles,
430
- inline
376
+ generateAtomicStyles
431
377
  };
432
378
  //# sourceMappingURL=generateAtomicStyles.js.map