@tamagui/web 1.2.9 → 1.2.11

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 (159) hide show
  1. package/dist/esm/Tamagui.mjs +41 -0
  2. package/dist/esm/Tamagui.mjs.map +7 -0
  3. package/dist/esm/addTheme.mjs +54 -0
  4. package/dist/esm/addTheme.mjs.map +7 -0
  5. package/dist/esm/config.mjs +84 -0
  6. package/dist/esm/config.mjs.map +7 -0
  7. package/dist/esm/constants/constants.mjs +22 -0
  8. package/dist/esm/constants/constants.mjs.map +7 -0
  9. package/dist/esm/constants/isDevTools.mjs +13 -0
  10. package/dist/esm/constants/isDevTools.mjs.map +7 -0
  11. package/dist/esm/contexts/ButtonNestingContext.mjs +6 -0
  12. package/dist/esm/contexts/ButtonNestingContext.mjs.map +7 -0
  13. package/dist/esm/contexts/FontLanguageContext.mjs +6 -0
  14. package/dist/esm/contexts/FontLanguageContext.mjs.map +7 -0
  15. package/dist/esm/contexts/TextAncestorContext.mjs +6 -0
  16. package/dist/esm/contexts/TextAncestorContext.mjs.map +7 -0
  17. package/dist/esm/createComponent.mjs +853 -0
  18. package/dist/esm/createComponent.mjs.map +7 -0
  19. package/dist/esm/createFont.mjs +45 -0
  20. package/dist/esm/createFont.mjs.map +7 -0
  21. package/dist/esm/createShorthands.mjs +7 -0
  22. package/dist/esm/createShorthands.mjs.map +7 -0
  23. package/dist/esm/createTamagui.mjs +190 -0
  24. package/dist/esm/createTamagui.mjs.map +7 -0
  25. package/dist/esm/createTheme.mjs +7 -0
  26. package/dist/esm/createTheme.mjs.map +7 -0
  27. package/dist/esm/createTokens.mjs +15 -0
  28. package/dist/esm/createTokens.mjs.map +7 -0
  29. package/dist/esm/createVariable.mjs +78 -0
  30. package/dist/esm/createVariable.mjs.map +7 -0
  31. package/dist/esm/createVariables.mjs +35 -0
  32. package/dist/esm/createVariables.mjs.map +7 -0
  33. package/dist/esm/helpers/RNComponents.mjs +16 -0
  34. package/dist/esm/helpers/RNComponents.mjs.map +7 -0
  35. package/dist/esm/helpers/ThemeManager.mjs +209 -0
  36. package/dist/esm/helpers/ThemeManager.mjs.map +7 -0
  37. package/dist/esm/helpers/ThemeManagerContext.mjs +6 -0
  38. package/dist/esm/helpers/ThemeManagerContext.mjs.map +7 -0
  39. package/dist/esm/helpers/createMediaStyle.mjs +42 -0
  40. package/dist/esm/helpers/createMediaStyle.mjs.map +7 -0
  41. package/dist/esm/helpers/createPropMapper.mjs +396 -0
  42. package/dist/esm/helpers/createPropMapper.mjs.map +7 -0
  43. package/dist/esm/helpers/createProxy.mjs +19 -0
  44. package/dist/esm/helpers/createProxy.mjs.map +7 -0
  45. package/dist/esm/helpers/expandStyle.mjs +71 -0
  46. package/dist/esm/helpers/expandStyle.mjs.map +7 -0
  47. package/dist/esm/helpers/expandStyles.mjs +90 -0
  48. package/dist/esm/helpers/expandStyles.mjs.map +7 -0
  49. package/dist/esm/helpers/extendStaticConfig.mjs +66 -0
  50. package/dist/esm/helpers/extendStaticConfig.mjs.map +7 -0
  51. package/dist/esm/helpers/getAnimationDriver.mjs +8 -0
  52. package/dist/esm/helpers/getAnimationDriver.mjs.map +7 -0
  53. package/dist/esm/helpers/getExpandedShorthands.mjs +16 -0
  54. package/dist/esm/helpers/getExpandedShorthands.mjs.map +7 -0
  55. package/dist/esm/helpers/getFontLanguage.mjs +5 -0
  56. package/dist/esm/helpers/getFontLanguage.mjs.map +7 -0
  57. package/dist/esm/helpers/getSplitStyles.mjs +849 -0
  58. package/dist/esm/helpers/getSplitStyles.mjs.map +7 -0
  59. package/dist/esm/helpers/getStylesAtomic.mjs +200 -0
  60. package/dist/esm/helpers/getStylesAtomic.mjs.map +7 -0
  61. package/dist/esm/helpers/getStylesAtomic.native.mjs +12 -0
  62. package/dist/esm/helpers/getStylesAtomic.native.mjs.map +7 -0
  63. package/dist/esm/helpers/getThemeCSSRules.mjs +86 -0
  64. package/dist/esm/helpers/getThemeCSSRules.mjs.map +7 -0
  65. package/dist/esm/helpers/getThemeCSSRules.native.mjs +7 -0
  66. package/dist/esm/helpers/getThemeCSSRules.native.mjs.map +7 -0
  67. package/dist/esm/helpers/getVariantExtras.mjs +67 -0
  68. package/dist/esm/helpers/getVariantExtras.mjs.map +7 -0
  69. package/dist/esm/helpers/insertStyleRule.mjs +186 -0
  70. package/dist/esm/helpers/insertStyleRule.mjs.map +7 -0
  71. package/dist/esm/helpers/isObj.mjs +5 -0
  72. package/dist/esm/helpers/isObj.mjs.map +7 -0
  73. package/dist/esm/helpers/isTamaguiComponent.mjs +8 -0
  74. package/dist/esm/helpers/isTamaguiComponent.mjs.map +7 -0
  75. package/dist/esm/helpers/isTamaguiElement.mjs +9 -0
  76. package/dist/esm/helpers/isTamaguiElement.mjs.map +7 -0
  77. package/dist/esm/helpers/matchMedia.mjs +17 -0
  78. package/dist/esm/helpers/matchMedia.mjs.map +7 -0
  79. package/dist/esm/helpers/matchMedia.native.mjs +23 -0
  80. package/dist/esm/helpers/matchMedia.native.mjs.map +7 -0
  81. package/dist/esm/helpers/mergeProps.mjs +30 -0
  82. package/dist/esm/helpers/mergeProps.mjs.map +7 -0
  83. package/dist/esm/helpers/mergeTransform.mjs +21 -0
  84. package/dist/esm/helpers/mergeTransform.mjs.map +7 -0
  85. package/dist/esm/helpers/normalizeColor.mjs +36 -0
  86. package/dist/esm/helpers/normalizeColor.mjs.map +7 -0
  87. package/dist/esm/helpers/normalizeValueWithProperty.mjs +113 -0
  88. package/dist/esm/helpers/normalizeValueWithProperty.mjs.map +7 -0
  89. package/dist/esm/helpers/proxyThemeVariables.mjs +16 -0
  90. package/dist/esm/helpers/proxyThemeVariables.mjs.map +7 -0
  91. package/dist/esm/helpers/pseudoDescriptors.mjs +29 -0
  92. package/dist/esm/helpers/pseudoDescriptors.mjs.map +7 -0
  93. package/dist/esm/helpers/registerCSSVariable.mjs +14 -0
  94. package/dist/esm/helpers/registerCSSVariable.mjs.map +7 -0
  95. package/dist/esm/helpers/themeable.mjs +28 -0
  96. package/dist/esm/helpers/themeable.mjs.map +7 -0
  97. package/dist/esm/helpers/themes.mjs +53 -0
  98. package/dist/esm/helpers/themes.mjs.map +7 -0
  99. package/dist/esm/helpers/timer.mjs +11 -0
  100. package/dist/esm/helpers/timer.mjs.map +7 -0
  101. package/dist/esm/helpers/useShallowSetState.mjs +35 -0
  102. package/dist/esm/helpers/useShallowSetState.mjs.map +7 -0
  103. package/dist/esm/helpers/warnOnce.mjs +14 -0
  104. package/dist/esm/helpers/warnOnce.mjs.map +7 -0
  105. package/dist/esm/helpers/withStaticProperties.mjs +8 -0
  106. package/dist/esm/helpers/withStaticProperties.mjs.map +7 -0
  107. package/dist/esm/hooks/getThemeUnwrapped.mjs +9 -0
  108. package/dist/esm/hooks/getThemeUnwrapped.mjs.map +7 -0
  109. package/dist/esm/hooks/useId.mjs +5 -0
  110. package/dist/esm/hooks/useId.mjs.map +7 -0
  111. package/dist/esm/hooks/useIsTouchDevice.mjs +9 -0
  112. package/dist/esm/hooks/useIsTouchDevice.mjs.map +7 -0
  113. package/dist/esm/hooks/useMedia.mjs +225 -0
  114. package/dist/esm/hooks/useMedia.mjs.map +7 -0
  115. package/dist/esm/hooks/useSafeRef.mjs +35 -0
  116. package/dist/esm/hooks/useSafeRef.mjs.map +7 -0
  117. package/dist/esm/hooks/useServerHooks.mjs +11 -0
  118. package/dist/esm/hooks/useServerHooks.mjs.map +7 -0
  119. package/dist/esm/hooks/useStyle.mjs +37 -0
  120. package/dist/esm/hooks/useStyle.mjs.map +7 -0
  121. package/dist/esm/hooks/useTheme.mjs +205 -0
  122. package/dist/esm/hooks/useTheme.mjs.map +7 -0
  123. package/dist/esm/hooks/useThemeName.mjs +28 -0
  124. package/dist/esm/hooks/useThemeName.mjs.map +7 -0
  125. package/dist/esm/index.mjs +77 -0
  126. package/dist/esm/index.mjs.map +7 -0
  127. package/dist/esm/inject-styles.mjs +16 -0
  128. package/dist/esm/inject-styles.mjs.map +7 -0
  129. package/dist/esm/insertFont.mjs +67 -0
  130. package/dist/esm/insertFont.mjs.map +7 -0
  131. package/dist/esm/setupHooks.mjs +9 -0
  132. package/dist/esm/setupHooks.mjs.map +7 -0
  133. package/dist/esm/setupReactNative.mjs +25 -0
  134. package/dist/esm/setupReactNative.mjs.map +7 -0
  135. package/dist/esm/styled.mjs +71 -0
  136. package/dist/esm/styled.mjs.map +7 -0
  137. package/dist/esm/types.mjs +1 -0
  138. package/dist/esm/types.mjs.map +7 -0
  139. package/dist/esm/updateTheme.mjs +23 -0
  140. package/dist/esm/updateTheme.mjs.map +7 -0
  141. package/dist/esm/views/FontLanguage.mjs +17 -0
  142. package/dist/esm/views/FontLanguage.mjs.map +7 -0
  143. package/dist/esm/views/FontLanguage.native.mjs +11 -0
  144. package/dist/esm/views/FontLanguage.native.mjs.map +7 -0
  145. package/dist/esm/views/FontLanguage.types.mjs +1 -0
  146. package/dist/esm/views/FontLanguage.types.mjs.map +7 -0
  147. package/dist/esm/views/Slot.mjs +66 -0
  148. package/dist/esm/views/Slot.mjs.map +7 -0
  149. package/dist/esm/views/Stack.mjs +14 -0
  150. package/dist/esm/views/Stack.mjs.map +7 -0
  151. package/dist/esm/views/TamaguiProvider.mjs +56 -0
  152. package/dist/esm/views/TamaguiProvider.mjs.map +7 -0
  153. package/dist/esm/views/Text.mjs +70 -0
  154. package/dist/esm/views/Text.mjs.map +7 -0
  155. package/dist/esm/views/Theme.mjs +63 -0
  156. package/dist/esm/views/Theme.mjs.map +7 -0
  157. package/dist/esm/views/ThemeProvider.mjs +45 -0
  158. package/dist/esm/views/ThemeProvider.mjs.map +7 -0
  159. package/package.json +11 -11
@@ -0,0 +1,396 @@
1
+ import { isWeb } from "@tamagui/constants";
2
+ import { getConfig } from "../config";
3
+ import { isDevTools } from "../constants/isDevTools";
4
+ import { getVariableValue, isVariable } from "../createVariable";
5
+ import { expandStyle } from "./expandStyle";
6
+ import { expandStyles } from "./expandStyles";
7
+ import { getFontsForLanguage, getVariantExtras } from "./getVariantExtras";
8
+ import { isObj } from "./isObj";
9
+ import { mergeProps } from "./mergeProps";
10
+ const getReturnVariablesAs = (props, state) => {
11
+ return !!props.animation || state.resolveVariablesAs === "value" ? isWeb ? "non-color-value" : "value" : "auto";
12
+ };
13
+ const createPropMapper = (staticConfig) => {
14
+ const variants = staticConfig.variants || {};
15
+ const defaultProps = mergeProps(staticConfig.defaultProps || {}, {}, false)[0];
16
+ let conf;
17
+ const mapper = (key, value, theme, propsIn, state, languageContext, avoidDefaultProps = false, debug) => {
18
+ conf ||= getConfig();
19
+ const props = state.fallbackProps || propsIn;
20
+ const returnVariablesAs = getReturnVariablesAs(props, state);
21
+ const fontFamily = props[conf.inverseShorthands.fontFamily] || props.fontFamily || defaultProps.fontFamily || propsIn.fontFamily || "$body";
22
+ const variantValue = resolveVariants(
23
+ key,
24
+ value,
25
+ props,
26
+ defaultProps,
27
+ theme,
28
+ variants,
29
+ fontFamily,
30
+ conf,
31
+ returnVariablesAs,
32
+ staticConfig,
33
+ "",
34
+ languageContext,
35
+ avoidDefaultProps,
36
+ debug
37
+ );
38
+ if (variantValue) {
39
+ return variantValue;
40
+ }
41
+ let shouldReturn = value !== void 0 && value !== null;
42
+ if (key in conf.shorthands) {
43
+ shouldReturn = true;
44
+ key = conf.shorthands[key];
45
+ }
46
+ if (value) {
47
+ if (value[0] === "$") {
48
+ value = getToken(
49
+ key,
50
+ value,
51
+ conf,
52
+ theme,
53
+ fontFamily,
54
+ languageContext,
55
+ returnVariablesAs,
56
+ debug
57
+ );
58
+ } else if (isVariable(value)) {
59
+ value = resolveVariableValue(key, value, returnVariablesAs);
60
+ }
61
+ }
62
+ if (shouldReturn) {
63
+ return expandStyle(key, value) || [[key, value]];
64
+ }
65
+ };
66
+ return mapper;
67
+ };
68
+ const resolveVariants = (key, value, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, languageContext, avoidDefaultProps = false, debug) => {
69
+ var _a;
70
+ const variant = variants == null ? void 0 : variants[key];
71
+ if (!variant || value === void 0) {
72
+ return;
73
+ }
74
+ let variantValue = getVariantDefinition(variant, key, value, conf);
75
+ if (!variantValue) {
76
+ if (process.env.NODE_ENV === "development") {
77
+ if ((_a = staticConfig.validStyles) == null ? void 0 : _a[key]) {
78
+ return null;
79
+ }
80
+ if (value === false) {
81
+ return null;
82
+ }
83
+ const name = staticConfig.componentName || "[UnnamedComponent]";
84
+ console.warn(
85
+ `No variant found: ${name} has variant "${key}", but no matching value "${value}"`
86
+ );
87
+ }
88
+ return;
89
+ }
90
+ if (typeof variantValue === "function") {
91
+ const fn = variantValue;
92
+ variantValue = fn(
93
+ value,
94
+ getVariantExtras(props, languageContext, theme, defaultProps, avoidDefaultProps)
95
+ );
96
+ }
97
+ let fontFamilyResult;
98
+ if (isObj(variantValue)) {
99
+ const fontFamilyUpdate = variantValue.fontFamily || variantValue[conf.inverseShorthands.fontFamily];
100
+ if (fontFamilyUpdate) {
101
+ fontFamilyResult = getFontFamilyFromNameOrVariable(fontFamilyUpdate, conf);
102
+ }
103
+ variantValue = resolveTokensAndVariants(
104
+ key,
105
+ variantValue,
106
+ props,
107
+ defaultProps,
108
+ theme,
109
+ variants,
110
+ fontFamilyResult || fontFamily,
111
+ conf,
112
+ returnVariablesAs,
113
+ staticConfig,
114
+ parentVariantKey,
115
+ languageContext,
116
+ avoidDefaultProps,
117
+ debug
118
+ );
119
+ }
120
+ if (variantValue) {
121
+ const next = Object.entries(expandStyles(variantValue));
122
+ if (fontFamilyResult && fontFamilyResult[0] === "$") {
123
+ fontFamilyCache.set(next, getVariableValue(fontFamilyResult));
124
+ }
125
+ return next;
126
+ }
127
+ };
128
+ function getFontFamilyFromNameOrVariable(input, conf) {
129
+ if (isVariable(input)) {
130
+ const val = variableToFontNameCache.get(input);
131
+ if (val) {
132
+ return val;
133
+ } else {
134
+ for (const key in conf.fontsParsed) {
135
+ const familyVariable = conf.fontsParsed[key].family;
136
+ if (isVariable(familyVariable)) {
137
+ variableToFontNameCache.set(familyVariable, key);
138
+ if (familyVariable === input) {
139
+ return key;
140
+ }
141
+ }
142
+ }
143
+ }
144
+ } else if (typeof input === "string") {
145
+ if ((input == null ? void 0 : input[0]) === "$") {
146
+ return input;
147
+ } else {
148
+ if (process.env.NODE_ENV === "development") {
149
+ console.log("[tamagui] should map back", input);
150
+ }
151
+ }
152
+ }
153
+ }
154
+ const variableToFontNameCache = /* @__PURE__ */ new WeakMap();
155
+ const fontFamilyCache = /* @__PURE__ */ new WeakMap();
156
+ const getPropMappedFontFamily = (expanded) => {
157
+ return expanded && fontFamilyCache.get(expanded);
158
+ };
159
+ const resolveTokensAndVariants = (key, value, props, defaultProps, theme, variants, fontFamily, conf, returnVariablesAs, staticConfig, parentVariantKey, languageContext, avoidDefaultProps, debug) => {
160
+ var _a;
161
+ const res = {};
162
+ for (const rKey in value) {
163
+ const fKey = conf.shorthands[rKey] || rKey;
164
+ const val = value[rKey];
165
+ if (fKey in variants) {
166
+ if (parentVariantKey && parentVariantKey === key) {
167
+ res[fKey] = val;
168
+ } else {
169
+ const variantOut = resolveVariants(
170
+ fKey,
171
+ val,
172
+ props,
173
+ defaultProps,
174
+ theme,
175
+ variants,
176
+ fontFamily,
177
+ conf,
178
+ returnVariablesAs,
179
+ staticConfig,
180
+ key,
181
+ languageContext,
182
+ avoidDefaultProps,
183
+ debug
184
+ );
185
+ const { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle, ...rest } = Object.fromEntries(variantOut);
186
+ const subs = { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle };
187
+ Object.assign(res, rest);
188
+ for (const key2 in subs) {
189
+ if (subs[key2]) {
190
+ res[key2] ??= {};
191
+ Object.assign(res[key2], subs[key2]);
192
+ }
193
+ }
194
+ }
195
+ continue;
196
+ }
197
+ if (isVariable(val)) {
198
+ res[fKey] = !isWeb || returnVariablesAs === "value" ? val.val : val.variable;
199
+ continue;
200
+ }
201
+ if (typeof val === "string") {
202
+ const fVal = val[0] === "$" ? getToken(
203
+ fKey,
204
+ val,
205
+ conf,
206
+ theme,
207
+ fontFamily,
208
+ languageContext,
209
+ returnVariablesAs,
210
+ debug
211
+ ) : val;
212
+ res[fKey] = fVal;
213
+ continue;
214
+ }
215
+ if (isObj(val)) {
216
+ res[fKey] ??= {};
217
+ Object.assign(
218
+ res[fKey],
219
+ resolveTokensAndVariants(
220
+ fKey,
221
+ val,
222
+ props,
223
+ defaultProps,
224
+ theme,
225
+ variants,
226
+ fontFamily,
227
+ conf,
228
+ returnVariablesAs,
229
+ staticConfig,
230
+ key,
231
+ languageContext,
232
+ avoidDefaultProps,
233
+ debug
234
+ )
235
+ );
236
+ } else {
237
+ res[fKey] = val;
238
+ }
239
+ if (process.env.NODE_ENV === "development") {
240
+ if (debug) {
241
+ if (((_a = res[fKey]) == null ? void 0 : _a[0]) === "$") {
242
+ console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey], theme);
243
+ }
244
+ }
245
+ }
246
+ }
247
+ return res;
248
+ };
249
+ const tokenCats = ["size", "color", "radius", "space", "zIndex"].map((name) => ({
250
+ name,
251
+ spreadName: `...${name}`
252
+ }));
253
+ function getVariantDefinition(variant, key, value, conf) {
254
+ if (typeof variant === "function") {
255
+ return variant;
256
+ }
257
+ if (variant[value]) {
258
+ return variant[value];
259
+ }
260
+ const { tokensParsed } = conf;
261
+ for (const { name, spreadName } of tokenCats) {
262
+ if (variant[spreadName] && value in tokensParsed[name]) {
263
+ return variant[spreadName];
264
+ }
265
+ }
266
+ let fn;
267
+ const type = typeof value;
268
+ if (type === "number") {
269
+ fn = variant[":number"];
270
+ } else if (type === "string") {
271
+ fn = variant[":string"];
272
+ } else if (value === true || value === false) {
273
+ fn = variant[":boolean"];
274
+ }
275
+ return fn || variant["..."] || variant["...size"];
276
+ }
277
+ const fontShorthand = {
278
+ fontSize: "size",
279
+ fontWeight: "weight"
280
+ };
281
+ const getToken = (key, value, conf, theme, fontFamily = "$body", languageContext, resolveAs, debug) => {
282
+ var _a, _b, _c;
283
+ const tokensParsed = conf.tokensParsed;
284
+ const fontsParsed = languageContext ? getFontsForLanguage(conf.fontsParsed, languageContext) : conf.fontsParsed;
285
+ let valOrVar;
286
+ let hasSet = false;
287
+ if (value in theme) {
288
+ valOrVar = theme[value];
289
+ hasSet = true;
290
+ } else {
291
+ switch (key) {
292
+ case "fontFamily":
293
+ valOrVar = ((_a = fontsParsed[value]) == null ? void 0 : _a.family) || value;
294
+ hasSet = true;
295
+ break;
296
+ case "fontSize":
297
+ case "lineHeight":
298
+ case "letterSpacing":
299
+ case "fontWeight":
300
+ valOrVar = ((_c = (_b = fontsParsed[fontFamily]) == null ? void 0 : _b[fontShorthand[key] || key]) == null ? void 0 : _c[value]) || value;
301
+ hasSet = true;
302
+ break;
303
+ }
304
+ for (const cat in tokenCategories) {
305
+ if (key in tokenCategories[cat]) {
306
+ const res = tokensParsed[cat][value];
307
+ if (res) {
308
+ valOrVar = res;
309
+ hasSet = true;
310
+ }
311
+ }
312
+ }
313
+ if (!hasSet) {
314
+ const spaceVar = tokensParsed.space[value];
315
+ if (spaceVar) {
316
+ valOrVar = spaceVar;
317
+ hasSet = true;
318
+ }
319
+ }
320
+ }
321
+ if (process.env.NODE_ENV === "development" && isDevTools && debug === "verbose") {
322
+ console.log(" \uFE52 propMapper getToken", { key, valOrVar, theme, hasSet });
323
+ }
324
+ if (hasSet) {
325
+ return resolveVariableValue(key, valOrVar, resolveAs);
326
+ }
327
+ if (process.env.NODE_ENV === "development") {
328
+ if (value && value[0] === "$") {
329
+ console.warn(
330
+ `\u26A0\uFE0F You passed the value "${value}" to the style property "${key}", but there's no theme or token with the key "${value}". Using theme "${theme.name}".
331
+
332
+ Set the debug prop to true to see more detailed debug information.`
333
+ );
334
+ if (debug) {
335
+ if (isDevTools) {
336
+ console.log("Looked in:", { theme, tokensParsed, fontsParsed });
337
+ }
338
+ }
339
+ return null;
340
+ }
341
+ }
342
+ return value;
343
+ };
344
+ function resolveVariableValue(key, valOrVar, resolveAs = "auto") {
345
+ if (isVariable(valOrVar)) {
346
+ if (resolveAs === "variable") {
347
+ return valOrVar;
348
+ }
349
+ if (resolveAs === "non-color-value") {
350
+ if (isWeb) {
351
+ if (key in tokenCategories.color) {
352
+ return valOrVar.variable;
353
+ }
354
+ }
355
+ return valOrVar.val;
356
+ }
357
+ if (!isWeb || resolveAs === "value") {
358
+ return valOrVar.val;
359
+ }
360
+ return valOrVar.variable;
361
+ }
362
+ return valOrVar;
363
+ }
364
+ const tokenCategories = {
365
+ radius: {
366
+ borderRadius: true,
367
+ borderTopLeftRadius: true,
368
+ borderTopRightRadius: true,
369
+ borderBottomLeftRadius: true,
370
+ borderBottomRightRadius: true
371
+ },
372
+ size: {
373
+ width: true,
374
+ height: true,
375
+ minWidth: true,
376
+ minHeight: true,
377
+ maxWidth: true,
378
+ maxHeight: true
379
+ },
380
+ color: {
381
+ color: true,
382
+ backgroundColor: true,
383
+ borderColor: true,
384
+ borderBottomColor: true,
385
+ borderTopColor: true,
386
+ borderLeftColor: true,
387
+ borderRightColor: true
388
+ }
389
+ };
390
+ export {
391
+ createPropMapper,
392
+ getFontFamilyFromNameOrVariable,
393
+ getPropMappedFontFamily,
394
+ getReturnVariablesAs
395
+ };
396
+ //# sourceMappingURL=createPropMapper.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/createPropMapper.ts"],
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\n\nimport { getConfig } from '../config'\nimport { isDevTools } from '../constants/isDevTools'\nimport { Variable, getVariableValue, isVariable } from '../createVariable'\nimport {\n DebugProp,\n GenericVariantDefinitions,\n PropMapper,\n SplitStyleState,\n StaticConfigParsed,\n TamaguiInternalConfig,\n VariantSpreadFunction,\n} from '../types'\nimport { LanguageContextType } from '../views/FontLanguage.types'\nimport { expandStyle } from './expandStyle'\nimport { expandStyles } from './expandStyles'\nimport { getFontsForLanguage, getVariantExtras } from './getVariantExtras'\nimport { isObj } from './isObj'\nimport { mergeProps } from './mergeProps'\n\nexport type ResolveVariableTypes =\n | 'auto'\n | 'value'\n | 'variable'\n | 'both'\n | 'non-color-value'\n\nexport const getReturnVariablesAs = (props: any, state: Partial<SplitStyleState>) => {\n return !!props.animation || state.resolveVariablesAs === 'value'\n ? isWeb\n ? 'non-color-value'\n : 'value'\n : 'auto'\n}\n\nexport const createPropMapper = (staticConfig: StaticConfigParsed) => {\n const variants = staticConfig.variants || {}\n\n // temp remove classnames\n const defaultProps = mergeProps(staticConfig.defaultProps || {}, {}, false)[0]\n\n let conf: TamaguiInternalConfig\n\n const mapper: PropMapper = (\n key,\n value,\n theme,\n propsIn,\n state,\n languageContext,\n avoidDefaultProps = false,\n debug\n ) => {\n conf ||= getConfig()\n\n const props = state.fallbackProps || propsIn\n const returnVariablesAs = getReturnVariablesAs(props, state)\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n const fontFamily =\n props[conf.inverseShorthands.fontFamily] ||\n props.fontFamily ||\n defaultProps.fontFamily ||\n propsIn.fontFamily ||\n '$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 languageContext,\n avoidDefaultProps,\n debug\n )\n\n if (variantValue) {\n return variantValue\n }\n\n let shouldReturn = value !== undefined && value !== null\n\n // handle shorthands\n if (key in conf.shorthands) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value) {\n if (value[0] === '$') {\n value = getToken(\n key,\n value,\n conf,\n theme,\n fontFamily,\n languageContext,\n returnVariablesAs,\n debug\n )\n } else if (isVariable(value)) {\n value = resolveVariableValue(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: StaticConfigParsed,\n parentVariantKey: string,\n languageContext?: LanguageContextType,\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 languageContext,\n avoidDefaultProps = false,\n debug\n) => {\n const variant = variants?.[key]\n if (!variant || value === undefined) {\n return\n }\n\n let variantValue = getVariantDefinition(variant, key, value, conf)\n\n if (!variantValue) {\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 if (value === false) {\n // don't warn on missing false values, common to only use true\n return null\n }\n const name = staticConfig.componentName || '[UnnamedComponent]'\n // eslint-disable-next-line no-console\n console.warn(\n `No variant found: ${name} has variant \"${key}\", but no matching value \"${value}\"`\n )\n }\n return\n }\n\n if (typeof variantValue === 'function') {\n const fn = variantValue as VariantSpreadFunction<any>\n variantValue = fn(\n value,\n getVariantExtras(props, languageContext, theme, defaultProps, avoidDefaultProps)\n )\n }\n\n let fontFamilyResult: any\n\n if (isObj(variantValue)) {\n const fontFamilyUpdate =\n variantValue.fontFamily || variantValue[conf.inverseShorthands.fontFamily]\n\n if (fontFamilyUpdate) {\n fontFamilyResult = getFontFamilyFromNameOrVariable(fontFamilyUpdate, conf)\n }\n\n variantValue = resolveTokensAndVariants(\n key,\n variantValue,\n props,\n defaultProps,\n theme,\n variants,\n fontFamilyResult || fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n parentVariantKey,\n languageContext,\n avoidDefaultProps,\n debug\n )\n }\n\n if (variantValue) {\n const next = Object.entries(expandStyles(variantValue))\n\n // store any changed font family (only support variables for now)\n if (fontFamilyResult && fontFamilyResult[0] === '$') {\n fontFamilyCache.set(next, getVariableValue(fontFamilyResult))\n }\n\n return next\n }\n}\n\n// handles finding and resolving the fontFamily to the token name\n// this is used as `font_[name]` in className for nice css variable support\nexport function getFontFamilyFromNameOrVariable(input: any, conf: TamaguiInternalConfig) {\n if (isVariable(input)) {\n const val = variableToFontNameCache.get(input)\n if (val) {\n return val\n } else {\n for (const key in conf.fontsParsed) {\n const familyVariable = conf.fontsParsed[key].family\n if (isVariable(familyVariable)) {\n variableToFontNameCache.set(familyVariable, key)\n if (familyVariable === input) {\n return key\n }\n }\n }\n }\n } else if (typeof input === 'string') {\n if (input?.[0] === '$') {\n return input\n } else {\n // this could be mapped back to\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.log('[tamagui] should map back', input)\n }\n }\n }\n}\n\nconst variableToFontNameCache = new WeakMap<Variable, string>()\n\n// special helper for special font family\nconst fontFamilyCache = new WeakMap()\nexport const getPropMappedFontFamily = (expanded?: any) => {\n return expanded && fontFamilyCache.get(expanded)\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 languageContext,\n avoidDefaultProps,\n debug\n) => {\n const res = {}\n for (const rKey in value) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = value[rKey]\n\n if (fKey in variants) {\n // avoids infinite loop if variant is matching a style prop\n // eg: { variants: { flex: { true: { flex: 2 } } } }\n if (parentVariantKey && parentVariantKey === key) {\n res[fKey] = val\n } else {\n const variantOut = resolveVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n languageContext,\n avoidDefaultProps,\n debug\n )\n\n const { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle, ...rest } =\n Object.fromEntries(variantOut)\n const subs = { pressStyle, hoverStyle, focusStyle, enterStyle, exitStyle }\n Object.assign(res, rest)\n for (const key in subs) {\n if (subs[key]) {\n res[key] ??= {}\n Object.assign(res[key], subs[key])\n }\n }\n }\n continue\n }\n\n if (isVariable(val)) {\n res[fKey] = !isWeb || returnVariablesAs === 'value' ? val.val : val.variable\n continue\n }\n\n if (typeof val === 'string') {\n const fVal =\n val[0] === '$'\n ? getToken(\n fKey,\n val,\n conf,\n theme,\n fontFamily,\n languageContext,\n returnVariablesAs,\n debug\n )\n : val\n res[fKey] = fVal\n continue\n }\n\n if (isObj(val)) {\n // sub-objects: media queries, pseudos, shadowOffset\n res[fKey] ??= {}\n Object.assign(\n res[fKey],\n resolveTokensAndVariants(\n fKey,\n val,\n props,\n defaultProps,\n theme,\n variants,\n fontFamily,\n conf,\n returnVariablesAs,\n staticConfig,\n key,\n languageContext,\n avoidDefaultProps,\n debug\n )\n )\n } else {\n // nullish values cant be tokens, need no extra parsing\n res[fKey] = val\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (debug) {\n if (res[fKey]?.[0] === '$') {\n // eslint-disable-next-line no-console\n console.warn(`\u26A0\uFE0F Missing token in theme ${theme.name}:`, fKey, res[fKey], theme)\n }\n }\n }\n }\n\n return res\n}\n\nconst tokenCats = ['size', 'color', 'radius', 'space', 'zIndex'].map((name) => ({\n name,\n spreadName: `...${name}`,\n}))\n\n// goes through specificity finding best matching variant function\nfunction getVariantDefinition(\n variant: any,\n key: string,\n value: any,\n conf: TamaguiInternalConfig\n) {\n if (typeof variant === 'function') {\n return variant\n }\n if (variant[value]) {\n return variant[value]\n }\n const { tokensParsed } = conf\n for (const { name, spreadName } of tokenCats) {\n if (variant[spreadName] && value in tokensParsed[name]) {\n return variant[spreadName]\n }\n }\n let fn: any\n const type = typeof value\n if (type === 'number') {\n fn = variant[':number']\n } else if (type === 'string') {\n fn = variant[':string']\n } else if (value === true || value === false) {\n fn = variant[':boolean']\n }\n // fallback to catch all or size\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 conf: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body',\n languageContext?: LanguageContextType,\n resolveAs?: ResolveVariableTypes,\n debug?: DebugProp\n) => {\n const tokensParsed = conf.tokensParsed\n const fontsParsed = languageContext\n ? getFontsForLanguage(conf.fontsParsed, languageContext)\n : conf.fontsParsed\n let valOrVar: any\n let hasSet = false\n if (value in theme) {\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\n if (process.env.NODE_ENV === 'development' && isDevTools && debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.log(' \uFE52 propMapper getToken', { key, valOrVar, theme, hasSet })\n }\n\n if (hasSet) {\n return resolveVariableValue(key, valOrVar, resolveAs)\n }\n\n if (process.env.NODE_ENV === 'development') {\n if (value && value[0] === '$') {\n // eslint-disable-next-line no-console\n console.warn(\n `\u26A0\uFE0F You 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 (isDevTools) {\n // eslint-disable-next-line no-console\n console.log('Looked in:', { theme, tokensParsed, fontsParsed })\n }\n }\n return null\n }\n }\n return value\n}\n\nfunction resolveVariableValue(\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 borderTopLeftRadius: true,\n borderTopRightRadius: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: 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
+ "names": ["key"]
7
+ }
@@ -0,0 +1,19 @@
1
+ function createProxy(target, handler) {
2
+ if (process.env.NODE_ENV === "development") {
3
+ if (typeof target !== "object" || !target) {
4
+ console.warn(
5
+ "Invalid object given for proxy:",
6
+ target,
7
+ `
8
+
9
+ This can be due to a missing theme or configuration given to Tamagui.`,
10
+ new Error().stack
11
+ );
12
+ }
13
+ }
14
+ return new Proxy(target || {}, handler);
15
+ }
16
+ export {
17
+ createProxy
18
+ };
19
+ //# sourceMappingURL=createProxy.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/createProxy.ts"],
4
+ "sourcesContent": ["export function createProxy<A extends object>(target: A, handler: ProxyHandler<A>) {\n if (process.env.NODE_ENV === 'development') {\n if (typeof target !== 'object' || !target) {\n // eslint-disable-next-line no-console\n console.warn(\n 'Invalid object given for proxy:',\n target,\n `\n \n This can be due to a missing theme or configuration given to Tamagui.`,\n new Error().stack\n )\n }\n }\n return new Proxy(target || {}, handler)\n}\n"],
5
+ "mappings": "AAAO,SAAS,YAA8B,QAAW,SAA0B;AACjF,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,QAAI,OAAO,WAAW,YAAY,CAAC,QAAQ;AAEzC,cAAQ;AAAA,QACN;AAAA,QACA;AAAA,QACA;AAAA;AAAA;AAAA,QAGA,IAAI,MAAM,EAAE;AAAA,MACd;AAAA,IACF;AAAA,EACF;AACA,SAAO,IAAI,MAAM,UAAU,CAAC,GAAG,OAAO;AACxC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,71 @@
1
+ var _a;
2
+ import { isWeb } from "@tamagui/constants";
3
+ function expandStyle(key, value) {
4
+ if (process.env.TAMAGUI_TARGET === "web") {
5
+ if (key === "flex") {
6
+ if (value <= -1) {
7
+ return [
8
+ ["flexGrow", 0],
9
+ ["flexShrink", 1],
10
+ ["flexBasis", "auto"]
11
+ ];
12
+ }
13
+ if (value >= 0) {
14
+ return [
15
+ ["flexGrow", value],
16
+ ["flexShrink", 1]
17
+ ];
18
+ }
19
+ return;
20
+ }
21
+ switch (key) {
22
+ case "textAlignVertical": {
23
+ return [["verticalAlign", value === "center" ? "middle" : value]];
24
+ }
25
+ case "writingDirection": {
26
+ return [["direction", value]];
27
+ }
28
+ }
29
+ }
30
+ const longKey = EXPANSIONS[key];
31
+ if (longKey) {
32
+ return longKey.map((key2) => {
33
+ return [key2, value];
34
+ });
35
+ }
36
+ }
37
+ const all = ["Top", "Right", "Bottom", "Left"];
38
+ const horiz = ["Right", "Left"];
39
+ const vert = ["Top", "Bottom"];
40
+ const xy = ["X", "Y"];
41
+ const EXPANSIONS = {
42
+ borderColor: ["TopColor", "RightColor", "BottomColor", "LeftColor"],
43
+ borderRadius: [
44
+ "TopLeftRadius",
45
+ "TopRightRadius",
46
+ "BottomRightRadius",
47
+ "BottomLeftRadius"
48
+ ],
49
+ borderWidth: ["TopWidth", "RightWidth", "BottomWidth", "LeftWidth"],
50
+ margin: all,
51
+ marginHorizontal: horiz,
52
+ marginVertical: vert,
53
+ overscrollBehavior: xy,
54
+ padding: all,
55
+ paddingHorizontal: horiz,
56
+ paddingVertical: vert,
57
+ ...isWeb && {
58
+ // react-native only supports borderStyle
59
+ borderStyle: ["TopStyle", "RightStyle", "BottomStyle", "LeftStyle"],
60
+ // react-native doesn't support X / Y
61
+ overflow: xy
62
+ }
63
+ };
64
+ for (const parent in EXPANSIONS) {
65
+ const prefix = parent.slice(0, ((_a = /[A-Z]/.exec(parent)) == null ? void 0 : _a.index) ?? parent.length);
66
+ EXPANSIONS[parent] = EXPANSIONS[parent].map((k) => `${prefix}${k}`);
67
+ }
68
+ export {
69
+ expandStyle
70
+ };
71
+ //# sourceMappingURL=expandStyle.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/expandStyle.ts"],
4
+ "sourcesContent": ["/**\n * Some parts adapted from react-native-web\n * Copyright (c) Nicolas Gallagher licensed under the MIT license.\n */\n\nimport { isWeb } from '@tamagui/constants'\n\nexport function expandStyle(key: string, value: any) {\n if (process.env.TAMAGUI_TARGET === 'web') {\n if (key === 'flex') {\n // The 'flex' property value in React Native must be a positive integer,\n // 0, or -1.\n if (value <= -1) {\n return [\n ['flexGrow', 0],\n ['flexShrink', 1],\n ['flexBasis', 'auto'],\n ]\n }\n // normalizing to better align with native\n // see spec for flex shorthand https://developer.mozilla.org/en-US/docs/Web/CSS/flex\n if (value >= 0) {\n return [\n ['flexGrow', value],\n ['flexShrink', 1],\n ]\n }\n return\n }\n\n // web only\n switch (key) {\n case 'textAlignVertical': {\n return [['verticalAlign', value === 'center' ? 'middle' : value]]\n }\n case 'writingDirection': {\n return [['direction', value]]\n }\n }\n }\n\n const longKey = EXPANSIONS[key]\n if (longKey) {\n return longKey.map((key) => {\n return [key, value]\n })\n }\n}\n\nconst all = ['Top', 'Right', 'Bottom', 'Left']\nconst horiz = ['Right', 'Left']\nconst vert = ['Top', 'Bottom']\nconst xy = ['X', 'Y']\n\nconst EXPANSIONS: Record<string, string[]> = {\n borderColor: ['TopColor', 'RightColor', 'BottomColor', 'LeftColor'],\n borderRadius: [\n 'TopLeftRadius',\n 'TopRightRadius',\n 'BottomRightRadius',\n 'BottomLeftRadius',\n ],\n borderWidth: ['TopWidth', 'RightWidth', 'BottomWidth', 'LeftWidth'],\n margin: all,\n marginHorizontal: horiz,\n marginVertical: vert,\n overscrollBehavior: xy,\n padding: all,\n paddingHorizontal: horiz,\n paddingVertical: vert,\n ...(isWeb && {\n // react-native only supports borderStyle\n borderStyle: ['TopStyle', 'RightStyle', 'BottomStyle', 'LeftStyle'],\n // react-native doesn't support X / Y\n overflow: xy,\n }),\n}\n\nfor (const parent in EXPANSIONS) {\n const prefix = parent.slice(0, /[A-Z]/.exec(parent)?.index ?? parent.length)\n EXPANSIONS[parent] = EXPANSIONS[parent].map((k) => `${prefix}${k}`)\n}\n"],
5
+ "mappings": "AAAA;AAKA,SAAS,aAAa;AAEf,SAAS,YAAY,KAAa,OAAY;AACnD,MAAI,QAAQ,IAAI,mBAAmB,OAAO;AACxC,QAAI,QAAQ,QAAQ;AAGlB,UAAI,SAAS,IAAI;AACf,eAAO;AAAA,UACL,CAAC,YAAY,CAAC;AAAA,UACd,CAAC,cAAc,CAAC;AAAA,UAChB,CAAC,aAAa,MAAM;AAAA,QACtB;AAAA,MACF;AAGA,UAAI,SAAS,GAAG;AACd,eAAO;AAAA,UACL,CAAC,YAAY,KAAK;AAAA,UAClB,CAAC,cAAc,CAAC;AAAA,QAClB;AAAA,MACF;AACA;AAAA,IACF;AAGA,YAAQ,KAAK;AAAA,MACX,KAAK,qBAAqB;AACxB,eAAO,CAAC,CAAC,iBAAiB,UAAU,WAAW,WAAW,KAAK,CAAC;AAAA,MAClE;AAAA,MACA,KAAK,oBAAoB;AACvB,eAAO,CAAC,CAAC,aAAa,KAAK,CAAC;AAAA,MAC9B;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,WAAW,GAAG;AAC9B,MAAI,SAAS;AACX,WAAO,QAAQ,IAAI,CAACA,SAAQ;AAC1B,aAAO,CAACA,MAAK,KAAK;AAAA,IACpB,CAAC;AAAA,EACH;AACF;AAEA,MAAM,MAAM,CAAC,OAAO,SAAS,UAAU,MAAM;AAC7C,MAAM,QAAQ,CAAC,SAAS,MAAM;AAC9B,MAAM,OAAO,CAAC,OAAO,QAAQ;AAC7B,MAAM,KAAK,CAAC,KAAK,GAAG;AAEpB,MAAM,aAAuC;AAAA,EAC3C,aAAa,CAAC,YAAY,cAAc,eAAe,WAAW;AAAA,EAClE,cAAc;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AAAA,EACA,aAAa,CAAC,YAAY,cAAc,eAAe,WAAW;AAAA,EAClE,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,gBAAgB;AAAA,EAChB,oBAAoB;AAAA,EACpB,SAAS;AAAA,EACT,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,GAAI,SAAS;AAAA;AAAA,IAEX,aAAa,CAAC,YAAY,cAAc,eAAe,WAAW;AAAA;AAAA,IAElE,UAAU;AAAA,EACZ;AACF;AAEA,WAAW,UAAU,YAAY;AAC/B,QAAM,SAAS,OAAO,MAAM,KAAG,aAAQ,KAAK,MAAM,MAAnB,mBAAsB,UAAS,OAAO,MAAM;AAC3E,aAAW,MAAM,IAAI,WAAW,MAAM,EAAE,IAAI,CAAC,MAAM,GAAG,SAAS,GAAG;AACpE;",
6
+ "names": ["key"]
7
+ }
@@ -0,0 +1,90 @@
1
+ import { isWeb } from "@tamagui/constants";
2
+ import { normalizeCSSColor } from "@tamagui/normalize-css-color";
3
+ import { getConfig } from "../config";
4
+ import { expandStyle } from "./expandStyle";
5
+ import { normalizeColor, rgba } from "./normalizeColor";
6
+ import { normalizeValueWithProperty } from "./normalizeValueWithProperty.js";
7
+ import { pseudoDescriptors } from "./pseudoDescriptors";
8
+ let shorthands = null;
9
+ const defaultOffset = { height: 0, width: 0 };
10
+ function expandStyles(style, config = getConfig()) {
11
+ const res = {};
12
+ for (let key in style) {
13
+ shorthands = shorthands || (config ? config.shorthands : null);
14
+ if (shorthands) {
15
+ key = shorthands[key] || key;
16
+ }
17
+ if (key in pseudoDescriptors) {
18
+ res[key] = expandStyles(style[key]);
19
+ continue;
20
+ }
21
+ const val = normalizeValueWithProperty(style[key], key);
22
+ const out = expandStyle(key, val);
23
+ if (out) {
24
+ Object.assign(res, Object.fromEntries(out));
25
+ } else {
26
+ res[key] = val;
27
+ }
28
+ }
29
+ fixStyles(res);
30
+ return res;
31
+ }
32
+ function fixStyles(style) {
33
+ if (style.shadowRadius) {
34
+ Object.assign(style, normalizeShadow(style));
35
+ }
36
+ for (const key in borderDefaults) {
37
+ if (style[key] && !style[borderDefaults[key]]) {
38
+ style[borderDefaults[key]] = "solid";
39
+ }
40
+ }
41
+ }
42
+ const borderDefaults = {
43
+ borderWidth: "borderStyle",
44
+ borderBottomWidth: "borderBottomStyle",
45
+ borderTopWidth: "borderTopStyle",
46
+ borderLeftWidth: "borderLeftStyle",
47
+ borderRightWidth: "borderRightStyle"
48
+ };
49
+ function normalizeShadow({
50
+ shadowColor,
51
+ shadowOffset,
52
+ shadowOpacity,
53
+ shadowRadius
54
+ }) {
55
+ const { height, width } = shadowOffset || defaultOffset;
56
+ const colorStr = String(shadowColor || "black");
57
+ return {
58
+ shadowOffset: {
59
+ width: normalizeValueWithProperty(width || 0),
60
+ height: normalizeValueWithProperty(height || 0)
61
+ },
62
+ shadowRadius: normalizeValueWithProperty(shadowRadius || 0),
63
+ ...isWeb && {
64
+ shadowColor: normalizeColor(colorStr, shadowOpacity)
65
+ },
66
+ ...process.env.TAMAGUI_TARGET === "native" && (() => {
67
+ const val = normalizeCSSColor(colorStr);
68
+ if (!val) {
69
+ if (process.env.NODE_ENV === "development") {
70
+ console.warn("No rgba form", colorStr);
71
+ }
72
+ return {
73
+ shadowColor,
74
+ shadowOpacity
75
+ };
76
+ }
77
+ const { r, g, b, a } = rgba(val);
78
+ return {
79
+ shadowColor: `rgb(${r},${g},${b})`,
80
+ shadowOpacity: shadowOpacity ?? a
81
+ };
82
+ })()
83
+ };
84
+ }
85
+ export {
86
+ defaultOffset,
87
+ expandStyles,
88
+ fixStyles
89
+ };
90
+ //# sourceMappingURL=expandStyles.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/expandStyles.ts"],
4
+ "sourcesContent": ["import { isWeb } from '@tamagui/constants'\nimport { normalizeCSSColor } from '@tamagui/normalize-css-color'\n\nimport { getConfig } from '../config'\nimport { expandStyle } from './expandStyle'\nimport { normalizeColor, rgba } from './normalizeColor'\nimport { normalizeValueWithProperty } from './normalizeValueWithProperty.js'\nimport { pseudoDescriptors } from './pseudoDescriptors'\n\nlet shorthands: Record<string, string> | null = null\nexport const defaultOffset = { height: 0, width: 0 }\n\n/**\n * This is what you want to run before Object.assign() a style onto another.\n * It does the following:\n * 1. Turns user shorthands into longhands, ie px = paddingHorizontal\n * 2. Normalizes various inconsistent styles to be more consistent\n * 3. Expands react-native shorthands, ie paddingHorizontal => paddingLeft, paddingRight\n */\n\nexport function expandStyles(style: Record<string, any>, config = getConfig()) {\n const res: Record<string, any> = {}\n\n for (let key in style) {\n shorthands = shorthands || (config ? config.shorthands : null)\n if (shorthands) {\n key = shorthands[key] || key\n }\n if (key in pseudoDescriptors) {\n res[key] = expandStyles(style[key])\n continue\n }\n const val = normalizeValueWithProperty(style[key], key)\n // expand react-native shorthands\n const out = expandStyle(key, val)\n if (out) {\n Object.assign(res, Object.fromEntries(out))\n } else {\n res[key] = val\n }\n }\n\n fixStyles(res)\n\n return res\n}\n\nexport function fixStyles(style: Record<string, any>) {\n if (style.shadowRadius) {\n Object.assign(style, normalizeShadow(style))\n }\n\n // ensure border style set by default to solid\n for (const key in borderDefaults) {\n if (style[key] && !style[borderDefaults[key]]) {\n style[borderDefaults[key]] = 'solid'\n }\n }\n}\n\nconst borderDefaults = {\n borderWidth: 'borderStyle',\n borderBottomWidth: 'borderBottomStyle',\n borderTopWidth: 'borderTopStyle',\n borderLeftWidth: 'borderLeftStyle',\n borderRightWidth: 'borderRightStyle',\n}\n\nfunction normalizeShadow({\n shadowColor,\n shadowOffset,\n shadowOpacity,\n shadowRadius,\n}: Record<string, any>) {\n const { height, width } = shadowOffset || defaultOffset\n const colorStr = String(shadowColor || 'black')\n return {\n shadowOffset: {\n width: normalizeValueWithProperty(width || 0),\n height: normalizeValueWithProperty(height || 0),\n },\n shadowRadius: normalizeValueWithProperty(shadowRadius || 0),\n ...(isWeb && {\n shadowColor: normalizeColor(colorStr, shadowOpacity),\n }),\n ...(process.env.TAMAGUI_TARGET === 'native' &&\n (() => {\n // on native fix bug - shadows behave better if turned into non-alpha rgb() + shadowOpacity\n const val = normalizeCSSColor(colorStr)\n if (!val) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No rgba form', colorStr)\n }\n return {\n shadowColor,\n shadowOpacity,\n }\n }\n const { r, g, b, a } = rgba(val)\n return {\n shadowColor: `rgb(${r},${g},${b})`,\n shadowOpacity: shadowOpacity ?? a,\n }\n })()),\n }\n}\n"],
5
+ "mappings": "AAAA,SAAS,aAAa;AACtB,SAAS,yBAAyB;AAElC,SAAS,iBAAiB;AAC1B,SAAS,mBAAmB;AAC5B,SAAS,gBAAgB,YAAY;AACrC,SAAS,kCAAkC;AAC3C,SAAS,yBAAyB;AAElC,IAAI,aAA4C;AACzC,MAAM,gBAAgB,EAAE,QAAQ,GAAG,OAAO,EAAE;AAU5C,SAAS,aAAa,OAA4B,SAAS,UAAU,GAAG;AAC7E,QAAM,MAA2B,CAAC;AAElC,WAAS,OAAO,OAAO;AACrB,iBAAa,eAAe,SAAS,OAAO,aAAa;AACzD,QAAI,YAAY;AACd,YAAM,WAAW,GAAG,KAAK;AAAA,IAC3B;AACA,QAAI,OAAO,mBAAmB;AAC5B,UAAI,GAAG,IAAI,aAAa,MAAM,GAAG,CAAC;AAClC;AAAA,IACF;AACA,UAAM,MAAM,2BAA2B,MAAM,GAAG,GAAG,GAAG;AAEtD,UAAM,MAAM,YAAY,KAAK,GAAG;AAChC,QAAI,KAAK;AACP,aAAO,OAAO,KAAK,OAAO,YAAY,GAAG,CAAC;AAAA,IAC5C,OAAO;AACL,UAAI,GAAG,IAAI;AAAA,IACb;AAAA,EACF;AAEA,YAAU,GAAG;AAEb,SAAO;AACT;AAEO,SAAS,UAAU,OAA4B;AACpD,MAAI,MAAM,cAAc;AACtB,WAAO,OAAO,OAAO,gBAAgB,KAAK,CAAC;AAAA,EAC7C;AAGA,aAAW,OAAO,gBAAgB;AAChC,QAAI,MAAM,GAAG,KAAK,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG;AAC7C,YAAM,eAAe,GAAG,CAAC,IAAI;AAAA,IAC/B;AAAA,EACF;AACF;AAEA,MAAM,iBAAiB;AAAA,EACrB,aAAa;AAAA,EACb,mBAAmB;AAAA,EACnB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,kBAAkB;AACpB;AAEA,SAAS,gBAAgB;AAAA,EACvB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAwB;AACtB,QAAM,EAAE,QAAQ,MAAM,IAAI,gBAAgB;AAC1C,QAAM,WAAW,OAAO,eAAe,OAAO;AAC9C,SAAO;AAAA,IACL,cAAc;AAAA,MACZ,OAAO,2BAA2B,SAAS,CAAC;AAAA,MAC5C,QAAQ,2BAA2B,UAAU,CAAC;AAAA,IAChD;AAAA,IACA,cAAc,2BAA2B,gBAAgB,CAAC;AAAA,IAC1D,GAAI,SAAS;AAAA,MACX,aAAa,eAAe,UAAU,aAAa;AAAA,IACrD;AAAA,IACA,GAAI,QAAQ,IAAI,mBAAmB,aAChC,MAAM;AAEL,YAAM,MAAM,kBAAkB,QAAQ;AACtC,UAAI,CAAC,KAAK;AACR,YAAI,QAAQ,IAAI,aAAa,eAAe;AAE1C,kBAAQ,KAAK,gBAAgB,QAAQ;AAAA,QACvC;AACA,eAAO;AAAA,UACL;AAAA,UACA;AAAA,QACF;AAAA,MACF;AACA,YAAM,EAAE,GAAG,GAAG,GAAG,EAAE,IAAI,KAAK,GAAG;AAC/B,aAAO;AAAA,QACL,aAAa,OAAO,KAAK,KAAK;AAAA,QAC9B,eAAe,iBAAiB;AAAA,MAClC;AAAA,IACF,GAAG;AAAA,EACP;AACF;",
6
+ "names": []
7
+ }