@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,849 @@
1
+ import {
2
+ isClient,
3
+ isRSC,
4
+ isServer,
5
+ isWeb,
6
+ useIsomorphicLayoutEffect
7
+ } from "@tamagui/constants";
8
+ import {
9
+ stylePropsText,
10
+ stylePropsTransform,
11
+ validPseudoKeys,
12
+ validStyles,
13
+ validStylesOnBaseProps
14
+ } from "@tamagui/helpers";
15
+ import { useInsertionEffect } from "react";
16
+ import { getConfig, getFont } from "../config";
17
+ import { isDevTools } from "../constants/isDevTools";
18
+ import {
19
+ getMediaImportanceIfMoreImportant,
20
+ mediaState as globalMediaState,
21
+ mediaKeysWithAndWithout$,
22
+ mediaQueryConfig,
23
+ mergeMediaByImportance
24
+ } from "../hooks/useMedia";
25
+ import { createMediaStyle } from "./createMediaStyle";
26
+ import { getPropMappedFontFamily } from "./createPropMapper";
27
+ import { fixStyles } from "./expandStyles";
28
+ import { getAtomicStyle, getStylesAtomic, styleToCSS } from "./getStylesAtomic";
29
+ import {
30
+ insertStyleRules,
31
+ insertedTransforms,
32
+ scanAllSheets,
33
+ shouldInsertStyleRules,
34
+ updateRules
35
+ } from "./insertStyleRule";
36
+ import { mergeTransform, mergeTransforms } from "./mergeTransform";
37
+ import {
38
+ normalizeValueWithProperty,
39
+ reverseMapClassNameToValue
40
+ } from "./normalizeValueWithProperty.js";
41
+ import { pseudoDescriptors } from "./pseudoDescriptors";
42
+ import { warnOnce } from "./warnOnce";
43
+ const skipProps = {
44
+ animation: true,
45
+ space: true,
46
+ animateOnly: true,
47
+ debug: true,
48
+ componentName: true,
49
+ role: true,
50
+ tag: true
51
+ };
52
+ if (process.env.NODE_ENV === "test") {
53
+ skipProps["data-test-renders"] = true;
54
+ }
55
+ const IS_STATIC = process.env.IS_STATIC === "is_static";
56
+ if (process.env.TAMAGUI_TARGET === "native") {
57
+ Object.assign(skipProps, {
58
+ whiteSpace: true,
59
+ wordWrap: true,
60
+ textOverflow: true,
61
+ textDecorationDistance: true,
62
+ cursor: true,
63
+ contain: true,
64
+ boxSizing: true,
65
+ boxShadow: true
66
+ });
67
+ }
68
+ const accessibilityDirectMap = {};
69
+ if (process.env.TAMAGUI_TARGET === "web") {
70
+ const items = {
71
+ Hidden: true,
72
+ ActiveDescendant: true,
73
+ Atomic: true,
74
+ AutoComplete: true,
75
+ Busy: true,
76
+ Checked: true,
77
+ ColumnCount: "colcount",
78
+ ColumnIndex: "colindex",
79
+ ColumnSpan: "colspan",
80
+ Current: true,
81
+ Details: true,
82
+ ErrorMessage: true,
83
+ Expanded: true,
84
+ HasPopup: true,
85
+ Invalid: true,
86
+ Label: true,
87
+ Level: true,
88
+ Modal: true,
89
+ Multiline: true,
90
+ MultiSelectable: true,
91
+ Orientation: true,
92
+ Owns: true,
93
+ Placeholder: true,
94
+ PosInSet: true,
95
+ Pressed: true,
96
+ RoleDescription: true,
97
+ RowCount: true,
98
+ RowIndex: true,
99
+ RowSpan: true,
100
+ Selected: true,
101
+ SetSize: true,
102
+ Sort: true,
103
+ ValueMax: true,
104
+ ValueMin: true,
105
+ ValueNow: true,
106
+ ValueText: true
107
+ };
108
+ for (const key in items) {
109
+ let val = items[key];
110
+ if (val === true) {
111
+ val = key.toLowerCase();
112
+ }
113
+ accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`;
114
+ }
115
+ }
116
+ let conf;
117
+ const PROP_SPLIT = "-";
118
+ const accessibilityRoleToWebRole = {
119
+ adjustable: "slider",
120
+ header: "heading",
121
+ image: "img",
122
+ link: "link",
123
+ none: "presentation",
124
+ summary: "region"
125
+ };
126
+ const isMediaKey = (key) => Boolean(key[0] === "$" && mediaKeysWithAndWithout$.has(key));
127
+ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, languageContext, elementType, debug) => {
128
+ var _a, _b, _c;
129
+ if (cache.has(props)) {
130
+ return cache.get(props);
131
+ }
132
+ conf = conf || getConfig();
133
+ const { shorthands } = conf;
134
+ const {
135
+ defaultVariants,
136
+ variants,
137
+ propMapper,
138
+ isReactNative,
139
+ deoptProps,
140
+ inlineProps,
141
+ inlineWhenUnflattened
142
+ } = staticConfig;
143
+ const validStyleProps = staticConfig.isText ? stylePropsText : validStyles;
144
+ const viewProps = {};
145
+ let pseudos = null;
146
+ let psuedosUsed = null;
147
+ const mediaState = state.mediaState || globalMediaState;
148
+ const usedKeys = {};
149
+ const propKeys = Object.keys(props);
150
+ let space = props.space;
151
+ let hasMedia = false;
152
+ const shouldDoClasses = staticConfig.acceptsClassName && (isWeb || IS_STATIC) && !state.noClassNames;
153
+ let style = {};
154
+ const flatTransforms = {};
155
+ const len = propKeys.length;
156
+ const rulesToInsert = [];
157
+ const classNames = {};
158
+ let className = "";
159
+ const transforms = {};
160
+ let fontFamily;
161
+ const styleState = {
162
+ classNames,
163
+ conf,
164
+ flatTransforms,
165
+ props,
166
+ state,
167
+ staticConfig,
168
+ style,
169
+ theme,
170
+ usedKeys,
171
+ viewProps,
172
+ languageContext
173
+ };
174
+ if (process.env.NODE_ENV === "development") {
175
+ if (props.selectable) {
176
+ warnOnce("props.selectable", "selectable props deprecated, use userSelect");
177
+ }
178
+ }
179
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
180
+ console.groupCollapsed("getSplitStyles (looping backwards)");
181
+ console.log({ staticConfig, shouldDoClasses, state, IS_STATIC, propKeys });
182
+ console.groupEnd();
183
+ }
184
+ if (props.className) {
185
+ for (const cn of props.className.split(" ")) {
186
+ if (cn[0] === "_") {
187
+ const [shorthand, mediaOrPseudo] = cn.slice(1).split("-");
188
+ const isMedia = mediaOrPseudo[0] === "_";
189
+ const isPseudo = mediaOrPseudo[0] === "0";
190
+ const isMediaOrPseudo = isMedia || isPseudo;
191
+ let fullKey = shorthands[shorthand];
192
+ if (isMedia) {
193
+ let mediaShortKey = mediaOrPseudo.slice(1);
194
+ mediaShortKey = mediaShortKey.slice(0, mediaShortKey.indexOf("_"));
195
+ fullKey += `${PROP_SPLIT}${mediaShortKey}`;
196
+ } else if (isPseudo) {
197
+ const pseudoShortKey = mediaOrPseudo.slice(1);
198
+ fullKey += `${PROP_SPLIT}${pseudoShortKey}`;
199
+ }
200
+ usedKeys[fullKey] = 1;
201
+ mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo);
202
+ } else if (cn) {
203
+ className += ` ${cn}`;
204
+ }
205
+ }
206
+ }
207
+ for (let i = len - 1; i >= 0; i--) {
208
+ let keyInit = propKeys[i];
209
+ if (keyInit === "className")
210
+ continue;
211
+ let valInit = props[keyInit];
212
+ if (keyInit in shorthands) {
213
+ keyInit = shorthands[keyInit];
214
+ }
215
+ if (process.env.TAMAGUI_TARGET === "native") {
216
+ if (keyInit === "userSelect") {
217
+ keyInit = "selectable";
218
+ valInit = valInit === "none" ? false : true;
219
+ } else if (keyInit.startsWith("data-") || keyInit.startsWith("aria-")) {
220
+ continue;
221
+ }
222
+ }
223
+ if (keyInit in usedKeys)
224
+ continue;
225
+ if (keyInit in skipProps)
226
+ continue;
227
+ if (typeof valInit === "string" && valInit[0] === "_") {
228
+ if (keyInit in validStyleProps || keyInit.includes("-")) {
229
+ if (shouldDoClasses) {
230
+ classNames[keyInit] = valInit;
231
+ } else {
232
+ style[keyInit] = reverseMapClassNameToValue(keyInit, valInit);
233
+ }
234
+ usedKeys[keyInit] = 1;
235
+ continue;
236
+ }
237
+ }
238
+ if (keyInit === "dataSet") {
239
+ for (const key in valInit) {
240
+ viewProps[`data-${hyphenate(key)}`] = valInit[key];
241
+ }
242
+ continue;
243
+ }
244
+ const isMainStyle = keyInit === "style";
245
+ if (isMainStyle || keyInit.startsWith("_style")) {
246
+ if (!valInit)
247
+ continue;
248
+ const styles = Array.isArray(valInit) ? valInit : [valInit];
249
+ const styleLen = styles.length;
250
+ for (let j = styleLen; j >= 0; j--) {
251
+ const cur = styles[j];
252
+ if (!cur)
253
+ continue;
254
+ for (const key in cur) {
255
+ if (!isMainStyle && usedKeys[key]) {
256
+ continue;
257
+ }
258
+ usedKeys[key] = 1;
259
+ style[key] = cur[key];
260
+ }
261
+ }
262
+ continue;
263
+ }
264
+ if (process.env.TAMAGUI_TARGET === "web") {
265
+ if (keyInit === "disabled" && valInit === true) {
266
+ usedKeys[keyInit] = 1;
267
+ viewProps["aria-disabled"] = true;
268
+ if (elementType === "button" || elementType === "form" || elementType === "input" || elementType === "select" || elementType === "textarea") {
269
+ viewProps.disabled = true;
270
+ }
271
+ if (!(variants == null ? void 0 : variants.disabled)) {
272
+ continue;
273
+ }
274
+ }
275
+ if (keyInit === "testID") {
276
+ usedKeys[keyInit] = 1;
277
+ viewProps[isReactNative ? "testId" : "data-testid"] = valInit;
278
+ continue;
279
+ }
280
+ if (keyInit === "id" || keyInit === "nativeID") {
281
+ usedKeys[keyInit] = 1;
282
+ if (isReactNative) {
283
+ viewProps.nativeID = valInit;
284
+ } else {
285
+ viewProps.id = valInit;
286
+ }
287
+ continue;
288
+ }
289
+ let didUseKeyInit = false;
290
+ if (isReactNative) {
291
+ if (accessibilityDirectMap[keyInit] || keyInit.startsWith("accessibility")) {
292
+ viewProps[keyInit] = valInit;
293
+ usedKeys[keyInit] = 1;
294
+ continue;
295
+ }
296
+ } else {
297
+ didUseKeyInit = true;
298
+ if (accessibilityDirectMap[keyInit]) {
299
+ viewProps[accessibilityDirectMap[keyInit]] = valInit;
300
+ } else {
301
+ switch (keyInit) {
302
+ case "accessibilityRole": {
303
+ if (valInit === "none") {
304
+ viewProps.role = "presentation";
305
+ } else {
306
+ viewProps.role = accessibilityRoleToWebRole[valInit] || valInit;
307
+ }
308
+ continue;
309
+ }
310
+ case "accessibilityLabelledBy":
311
+ case "accessibilityFlowTo":
312
+ case "accessibilityControls":
313
+ case "accessibilityDescribedBy": {
314
+ viewProps[`aria-${keyInit.replace("accessibility", "").toLowerCase()}`] = processIDRefList(valInit);
315
+ continue;
316
+ }
317
+ case "accessibilityKeyShortcuts": {
318
+ if (Array.isArray(valInit)) {
319
+ viewProps["aria-keyshortcuts"] = valInit.join(" ");
320
+ }
321
+ continue;
322
+ }
323
+ case "accessibilityLiveRegion": {
324
+ viewProps["aria-live"] = valInit === "none" ? "off" : valInit;
325
+ continue;
326
+ }
327
+ case "accessibilityReadOnly": {
328
+ viewProps["aria-readonly"] = valInit;
329
+ if (elementType === "input" || elementType === "select" || elementType === "textarea") {
330
+ viewProps.readOnly = true;
331
+ }
332
+ continue;
333
+ }
334
+ case "accessibilityRequired": {
335
+ viewProps["aria-required"] = valInit;
336
+ if (elementType === "input" || elementType === "select" || elementType === "textarea") {
337
+ viewProps.required = valInit;
338
+ }
339
+ continue;
340
+ }
341
+ default: {
342
+ didUseKeyInit = false;
343
+ }
344
+ }
345
+ }
346
+ }
347
+ if (didUseKeyInit) {
348
+ usedKeys[keyInit] = 1;
349
+ continue;
350
+ }
351
+ if (valInit && valInit[0] === "_") {
352
+ const isValidClassName = validStyles[keyInit];
353
+ const isMediaOrPseudo = !isValidClassName && keyInit.includes(PROP_SPLIT) && validStyles[keyInit.split(PROP_SPLIT)[0]];
354
+ if (isValidClassName || isMediaOrPseudo) {
355
+ usedKeys[keyInit] = 1;
356
+ if (process.env.NODE_ENV === "development") {
357
+ if (debug) {
358
+ console.log("tamagui classname props", keyInit, valInit);
359
+ }
360
+ }
361
+ mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo);
362
+ continue;
363
+ }
364
+ }
365
+ }
366
+ if (defaultVariants && keyInit in defaultVariants || // may want to just: not compile styled() into classnames, always do this, and always pass in all values in extras.props
367
+ // but we'd want to add styled({ extracted: true }) or something at compile time to save on parsing a bit...
368
+ state.keepVariantsAsProps && variants && keyInit in variants) {
369
+ viewProps[keyInit] = valInit;
370
+ }
371
+ let isMedia = isMediaKey(keyInit);
372
+ let isPseudo = validPseudoKeys[keyInit];
373
+ const isHOCShouldPassThrough = staticConfig.isHOC && (isMedia || isPseudo);
374
+ if (isHOCShouldPassThrough || !(isMedia || isPseudo || (variants == null ? void 0 : variants[keyInit]) || validStyleProps[keyInit] || shorthands[keyInit])) {
375
+ usedKeys[keyInit] = 1;
376
+ viewProps[keyInit] = valInit;
377
+ continue;
378
+ }
379
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
380
+ console.groupCollapsed(" \u{1F539} styles", keyInit, valInit);
381
+ }
382
+ const expanded = isMedia || isPseudo ? [[keyInit, valInit]] : propMapper(
383
+ keyInit,
384
+ valInit,
385
+ theme,
386
+ props,
387
+ state,
388
+ languageContext,
389
+ void 0,
390
+ debug
391
+ );
392
+ if (!fontFamily) {
393
+ fontFamily = getPropMappedFontFamily(expanded);
394
+ }
395
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
396
+ if (!isServer && isDevTools) {
397
+ console.log("expanded", expanded, "\nusedKeys", usedKeys, "\ncurrent", {
398
+ ...style
399
+ });
400
+ }
401
+ console.groupEnd();
402
+ }
403
+ if (!expanded)
404
+ continue;
405
+ for (const [key, val] of expanded) {
406
+ if (val === void 0)
407
+ continue;
408
+ isMedia = isMediaKey(key);
409
+ isPseudo = validPseudoKeys[key];
410
+ const isMediaOrPseudo = isMedia || isPseudo;
411
+ if (!isMediaOrPseudo && usedKeys[key]) {
412
+ if (process.env.NODE_ENV === "developmnet" && debug === "verbose") {
413
+ console.log(`Used media/pseudo ${key}`);
414
+ }
415
+ continue;
416
+ }
417
+ if ((inlineProps == null ? void 0 : inlineProps.has(key)) || (inlineWhenUnflattened == null ? void 0 : inlineWhenUnflattened.has(key))) {
418
+ usedKeys[key] = 1;
419
+ viewProps[key] = props[key] ?? val;
420
+ }
421
+ if (isPseudo) {
422
+ if (!val)
423
+ continue;
424
+ const pseudoStyleObject = getSubStyle(
425
+ styleState,
426
+ key,
427
+ val,
428
+ true,
429
+ state.noClassNames
430
+ );
431
+ const descriptor = pseudoDescriptors[key];
432
+ const isEnter = descriptor.name === "enter";
433
+ const isExit = descriptor.name === "exit";
434
+ if (!descriptor || isExit && !state.isExiting) {
435
+ continue;
436
+ }
437
+ if (!shouldDoClasses || IS_STATIC) {
438
+ pseudos ||= {};
439
+ pseudos[key] ||= {};
440
+ Object.assign(pseudos[key], pseudoStyleObject);
441
+ }
442
+ if (shouldDoClasses && !isEnter && !isExit) {
443
+ const pseudoStyles = getAtomicStyle(pseudoStyleObject, descriptor);
444
+ for (const psuedoStyle of pseudoStyles) {
445
+ const fullKey = `${psuedoStyle.property}${PROP_SPLIT}${descriptor.name}`;
446
+ if (!usedKeys[fullKey]) {
447
+ usedKeys[fullKey] = 1;
448
+ addStyleToInsertRules(rulesToInsert, psuedoStyle);
449
+ mergeClassName(
450
+ transforms,
451
+ classNames,
452
+ fullKey,
453
+ psuedoStyle.identifier,
454
+ isMediaOrPseudo
455
+ );
456
+ }
457
+ }
458
+ } else {
459
+ if (usedKeys[key]) {
460
+ continue;
461
+ }
462
+ let isDisabled = !state[descriptor.stateKey || descriptor.name];
463
+ if (isWeb && !isClient && isEnter) {
464
+ isDisabled = false;
465
+ }
466
+ if (!isDisabled) {
467
+ if (valInit === staticConfig.defaultProps[keyInit]) {
468
+ } else {
469
+ usedKeys[key] ||= 1;
470
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
471
+ console.log(`Setting used ${key}`);
472
+ }
473
+ }
474
+ }
475
+ psuedosUsed ||= {};
476
+ const importance = descriptor.priority;
477
+ for (const pkey in pseudoStyleObject) {
478
+ const val2 = pseudoStyleObject[pkey];
479
+ if (isDisabled) {
480
+ if (!(pkey in usedKeys) && pkey in animatableDefaults) {
481
+ const defaultVal = animatableDefaults[pkey];
482
+ mergeStyle(styleState, pkey, defaultVal, true);
483
+ }
484
+ continue;
485
+ }
486
+ const curImportance = psuedosUsed[importance] || 0;
487
+ const shouldMerge = importance >= curImportance;
488
+ if (shouldMerge) {
489
+ psuedosUsed[pkey] = importance;
490
+ pseudos ||= {};
491
+ pseudos[key] ||= {};
492
+ pseudos[key][pkey] = val2;
493
+ mergeStyle(styleState, pkey, val2);
494
+ }
495
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
496
+ console.log("Merged pseudo?", shouldMerge, { importance, curImportance, pkey, val: val2 });
497
+ }
498
+ }
499
+ }
500
+ continue;
501
+ }
502
+ if (isMedia) {
503
+ if (!val)
504
+ continue;
505
+ hasMedia ||= true;
506
+ const mediaStyle = getSubStyle(
507
+ styleState,
508
+ key,
509
+ val,
510
+ // TODO try true like pseudo
511
+ false
512
+ );
513
+ const mediaKeyShort = key.slice(1);
514
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
515
+ console.log(` \u{1F4FA} ${key}`, { key, mediaStyle, props, shouldDoClasses });
516
+ }
517
+ if ("space" in mediaStyle) {
518
+ if (!Array.isArray(hasMedia)) {
519
+ hasMedia = [];
520
+ }
521
+ hasMedia.push(mediaKeyShort);
522
+ }
523
+ if (shouldDoClasses) {
524
+ if ("space" in mediaStyle) {
525
+ delete mediaStyle["space"];
526
+ if (mediaState[mediaKeyShort]) {
527
+ const val2 = valInit.space;
528
+ const importance = getMediaImportanceIfMoreImportant(
529
+ mediaKeyShort,
530
+ "space",
531
+ usedKeys
532
+ );
533
+ if (importance) {
534
+ space = val2;
535
+ usedKeys["space"] = importance;
536
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
537
+ console.log(
538
+ `Found more important space for current media ${mediaKeyShort}: ${val2} (importance: ${importance})`
539
+ );
540
+ }
541
+ }
542
+ }
543
+ }
544
+ const mediaStyles = getStylesAtomic(mediaStyle);
545
+ for (const style2 of mediaStyles) {
546
+ const out = createMediaStyle(style2, mediaKeyShort, mediaQueryConfig);
547
+ const fullKey = `${style2.property}${PROP_SPLIT}${mediaKeyShort}`;
548
+ if (!usedKeys[fullKey]) {
549
+ usedKeys[fullKey] = 1;
550
+ addStyleToInsertRules(rulesToInsert, out);
551
+ mergeClassName(transforms, classNames, fullKey, out.identifier, true);
552
+ }
553
+ }
554
+ } else if (mediaState[mediaKeyShort]) {
555
+ for (const subKey in mediaStyle) {
556
+ const importance = getMediaImportanceIfMoreImportant(
557
+ mediaKeyShort,
558
+ subKey,
559
+ usedKeys
560
+ );
561
+ if (importance === null)
562
+ continue;
563
+ if (subKey === "space") {
564
+ space = valInit.space;
565
+ continue;
566
+ }
567
+ mergeMediaByImportance(
568
+ style,
569
+ mediaKeyShort,
570
+ subKey,
571
+ mediaStyle[subKey],
572
+ usedKeys
573
+ );
574
+ if (key === "fontFamily") {
575
+ fontFamily = mediaStyle[key];
576
+ }
577
+ }
578
+ }
579
+ continue;
580
+ }
581
+ if (process.env.TAMAGUI_TARGET === "native") {
582
+ if (key === "pointerEvents") {
583
+ usedKeys[key] = 1;
584
+ viewProps[key] = val;
585
+ continue;
586
+ }
587
+ }
588
+ if (key === "fontFamily" && !fontFamily && valInit && val) {
589
+ fontFamily = valInit[0] === "$" ? valInit : val;
590
+ }
591
+ if (key in validStyleProps) {
592
+ mergeStyle(styleState, key, val);
593
+ continue;
594
+ }
595
+ if (!(variants && key in variants)) {
596
+ if (!skipProps[key]) {
597
+ viewProps[key] = val;
598
+ usedKeys[key] = 1;
599
+ }
600
+ }
601
+ }
602
+ }
603
+ fixStyles(style);
604
+ if (isWeb) {
605
+ styleToCSS(style);
606
+ }
607
+ if (process.env.TAMAGUI_TARGET === "native") {
608
+ if ("fontFamily" in style && style.fontFamily) {
609
+ const faceInfo = (_a = getFont(style.fontFamily)) == null ? void 0 : _a.face;
610
+ if (faceInfo) {
611
+ const overrideFace = (_c = (_b = faceInfo[style.fontWeight]) == null ? void 0 : _b[style.fontStyle || "normal"]) == null ? void 0 : _c.val;
612
+ if (overrideFace) {
613
+ style.fontFamily = overrideFace;
614
+ fontFamily = overrideFace;
615
+ delete style.fontWeight;
616
+ delete style.fontStyle;
617
+ }
618
+ }
619
+ if (process.env.NODE_ENV === "development") {
620
+ if (debug) {
621
+ console.log(`Found fontFamily native: ${style.fontFamily}`, faceInfo);
622
+ }
623
+ }
624
+ }
625
+ }
626
+ if (flatTransforms) {
627
+ if (process.env.NODE_ENV === "development" && debug) {
628
+ console.log(
629
+ "Merging flat transforms, transform before",
630
+ [...style.transform || []],
631
+ flatTransforms
632
+ );
633
+ }
634
+ mergeTransforms(style, flatTransforms, true);
635
+ }
636
+ if (parentSplitStyles) {
637
+ if (process.env.TAMAGUI_TARGET === "web") {
638
+ if (shouldDoClasses) {
639
+ for (const key in parentSplitStyles.classNames) {
640
+ const val = parentSplitStyles.classNames[key];
641
+ if (key in style || key in classNames)
642
+ continue;
643
+ classNames[key] = val;
644
+ }
645
+ }
646
+ }
647
+ if (!shouldDoClasses) {
648
+ for (const key in parentSplitStyles.style) {
649
+ if (key in classNames || key in style)
650
+ continue;
651
+ style[key] = parentSplitStyles.style[key];
652
+ }
653
+ }
654
+ }
655
+ if (process.env.TAMAGUI_TARGET === "web") {
656
+ if (shouldDoClasses) {
657
+ const retainedStyles = {};
658
+ if (style["$$css"]) {
659
+ } else {
660
+ const atomic = getStylesAtomic(style);
661
+ for (const atomicStyle of atomic) {
662
+ const key = atomicStyle.property;
663
+ if (props.animateOnly && props.animateOnly.includes(key)) {
664
+ retainedStyles[key] = atomicStyle.value;
665
+ } else {
666
+ addStyleToInsertRules(rulesToInsert, atomicStyle);
667
+ mergeClassName(transforms, classNames, key, atomicStyle.identifier);
668
+ }
669
+ }
670
+ if (!IS_STATIC) {
671
+ style = retainedStyles;
672
+ }
673
+ }
674
+ }
675
+ if (transforms) {
676
+ for (const namespace in transforms) {
677
+ if (!transforms[namespace]) {
678
+ if (process.env.NODE_ENV === "development") {
679
+ console.warn("Error no transform", transforms, namespace);
680
+ }
681
+ continue;
682
+ }
683
+ const [hash, val] = transforms[namespace];
684
+ const identifier = `_transform${hash}`;
685
+ if (isClient && !insertedTransforms[identifier]) {
686
+ const rule = `.${identifier} { transform: ${val}; }`;
687
+ addStyleToInsertRules(rulesToInsert, {
688
+ identifier,
689
+ rules: [rule],
690
+ property: namespace
691
+ });
692
+ }
693
+ classNames[namespace] = identifier;
694
+ }
695
+ }
696
+ }
697
+ const result = {
698
+ space,
699
+ hasMedia,
700
+ fontFamily,
701
+ viewProps,
702
+ style,
703
+ pseudos,
704
+ classNames,
705
+ rulesToInsert
706
+ };
707
+ if (className) {
708
+ classNames.className = className;
709
+ }
710
+ if (process.env.NODE_ENV === "development" && debug === "verbose") {
711
+ if (isDevTools) {
712
+ console.groupCollapsed(" \u{1F539} styles =>");
713
+ const logs = { transforms, viewProps, state, rulesToInsert, parentSplitStyles, flatTransforms, result };
714
+ for (const key in { ...result, ...logs }) {
715
+ console.log(key, logs[key]);
716
+ }
717
+ console.groupEnd();
718
+ }
719
+ }
720
+ cache.set(props, result);
721
+ return result;
722
+ };
723
+ function mergeClassName(transforms, classNames, key, val, isMediaOrPseudo = false) {
724
+ if (process.env.TAMAGUI_TARGET === "web") {
725
+ if (!val)
726
+ return;
727
+ if (val[0] === "_" && val.startsWith("_transform-")) {
728
+ const ns = isMediaOrPseudo ? key : "transform";
729
+ let transform = insertedTransforms[val];
730
+ if (isClient && !transform) {
731
+ scanAllSheets();
732
+ transform = insertedTransforms[val];
733
+ if (!transform && isWeb && val[0] !== "_") {
734
+ transform = val;
735
+ }
736
+ }
737
+ transforms[ns] ||= ["", ""];
738
+ transforms[ns][0] += val.replace("_transform", "");
739
+ if (transform) {
740
+ transforms[ns][1] += transform;
741
+ }
742
+ } else {
743
+ classNames[key] = val;
744
+ }
745
+ }
746
+ }
747
+ const cache = /* @__PURE__ */ new WeakMap();
748
+ function getSubStyleProps(defaultProps, baseProps, specificProps) {
749
+ const key = specificProps || baseProps;
750
+ if (!cache.has(key)) {
751
+ cache.set(key, {
752
+ ...defaultProps,
753
+ ...baseProps,
754
+ ...specificProps
755
+ });
756
+ }
757
+ return cache.get(key);
758
+ }
759
+ function mergeStyle({ usedKeys, classNames, flatTransforms, viewProps, style }, key, val, dontSetUsed = false) {
760
+ if (!dontSetUsed) {
761
+ usedKeys[key] ||= 1;
762
+ }
763
+ if (val && val[0] === "_") {
764
+ classNames[key] = val;
765
+ } else if (key in stylePropsTransform) {
766
+ flatTransforms ||= {};
767
+ flatTransforms[key] = val;
768
+ } else {
769
+ const out = normalizeValueWithProperty(val, key);
770
+ if (key in validStylesOnBaseProps) {
771
+ viewProps[key] = out;
772
+ } else {
773
+ style[key] = out;
774
+ }
775
+ }
776
+ }
777
+ const getSubStyle = (styleState, subKey, styleIn, avoidDefaultProps, avoidMergeTransform) => {
778
+ const { staticConfig, theme, props, state, conf: conf2, languageContext } = styleState;
779
+ const styleOut = {};
780
+ for (let key in styleIn) {
781
+ const val = styleIn[key];
782
+ key = conf2.shorthands[key] || key;
783
+ const expanded = staticConfig.propMapper(
784
+ key,
785
+ val,
786
+ theme,
787
+ getSubStyleProps(staticConfig.defaultProps, props, props[subKey]),
788
+ state,
789
+ languageContext,
790
+ avoidDefaultProps
791
+ );
792
+ if (!expanded)
793
+ continue;
794
+ for (const [skey, sval] of expanded) {
795
+ if (!avoidMergeTransform && skey in stylePropsTransform) {
796
+ mergeTransform(styleOut, skey, sval);
797
+ } else {
798
+ styleOut[skey] = normalizeValueWithProperty(sval, key);
799
+ }
800
+ }
801
+ }
802
+ fixStyles(styleOut);
803
+ return styleOut;
804
+ };
805
+ const insertSplitStyles = (...args) => {
806
+ const res = getSplitStyles(...args);
807
+ insertStyleRules(res.rulesToInsert);
808
+ return res;
809
+ };
810
+ const useInsertEffectCompat = isWeb ? useInsertionEffect || useIsomorphicLayoutEffect : () => {
811
+ };
812
+ const useSplitStyles = (...args) => {
813
+ const res = getSplitStyles(...args);
814
+ if (!isRSC) {
815
+ useInsertEffectCompat(() => {
816
+ insertStyleRules(res.rulesToInsert);
817
+ }, [res.rulesToInsert]);
818
+ }
819
+ return res;
820
+ };
821
+ function addStyleToInsertRules(rulesToInsert, styleObject) {
822
+ if (process.env.TAMAGUI_TARGET === "web") {
823
+ if (!shouldInsertStyleRules(styleObject)) {
824
+ return;
825
+ }
826
+ updateRules(styleObject.identifier, styleObject.rules);
827
+ rulesToInsert.push(styleObject);
828
+ }
829
+ }
830
+ function processIDRefList(idRefList) {
831
+ return Array.isArray(idRefList) ? idRefList.join(" ") : idRefList;
832
+ }
833
+ const animatableDefaults = {
834
+ opacity: 1,
835
+ scale: 1,
836
+ rotate: "0deg",
837
+ rotateY: "0deg",
838
+ rotateX: "0deg"
839
+ };
840
+ const lowercaseHyphenate = (match) => `-${match.toLowerCase()}`;
841
+ const hyphenate = (str) => str.replace(/[A-Z]/g, lowercaseHyphenate);
842
+ export {
843
+ PROP_SPLIT,
844
+ getSplitStyles,
845
+ getSubStyle,
846
+ insertSplitStyles,
847
+ useSplitStyles
848
+ };
849
+ //# sourceMappingURL=getSplitStyles.mjs.map