@tamagui/core 1.0.1-beta.193 → 1.0.1-beta.195

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 (220) hide show
  1. package/dist/cjs/Tamagui.js +4 -2
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/config.js +1 -2
  4. package/dist/cjs/config.js.map +2 -2
  5. package/dist/cjs/constants/constants.js +13 -8
  6. package/dist/cjs/constants/constants.js.map +2 -2
  7. package/dist/cjs/contexts/TextAncestorContext.js +3 -16
  8. package/dist/cjs/contexts/TextAncestorContext.js.map +3 -3
  9. package/dist/cjs/createComponent.js +204 -294
  10. package/dist/cjs/createComponent.js.map +2 -2
  11. package/dist/cjs/createTamagui.js +15 -16
  12. package/dist/cjs/createTamagui.js.map +3 -3
  13. package/dist/cjs/createVariable.js +1 -2
  14. package/dist/cjs/createVariable.js.map +2 -2
  15. package/dist/cjs/helpers/ThemeManager.js +7 -14
  16. package/dist/cjs/helpers/ThemeManager.js.map +2 -2
  17. package/dist/cjs/helpers/{createShallowUpdate.js → cache.js} +20 -21
  18. package/dist/cjs/helpers/cache.js.map +7 -0
  19. package/dist/cjs/helpers/createMediaStyle.js +14 -8
  20. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  21. package/dist/cjs/helpers/extendStaticConfig.js +0 -1
  22. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  23. package/dist/cjs/helpers/getSplitStyles.js +212 -93
  24. package/dist/cjs/helpers/getSplitStyles.js.map +3 -3
  25. package/dist/cjs/helpers/getStylesAtomic.js +16 -36
  26. package/dist/cjs/helpers/getStylesAtomic.js.map +3 -3
  27. package/dist/cjs/helpers/insertStyleRule.js +14 -6
  28. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  29. package/dist/cjs/helpers/matchMedia.js.map +2 -2
  30. package/dist/cjs/helpers/mergeTransform.js.map +1 -1
  31. package/dist/cjs/helpers/normalizeValueWithProperty.js +32 -2
  32. package/dist/cjs/helpers/normalizeValueWithProperty.js.map +2 -2
  33. package/dist/cjs/helpers/useShallowSetState.js.map +2 -2
  34. package/dist/cjs/hooks/getThemeUnwrapped.js +1 -3
  35. package/dist/cjs/hooks/getThemeUnwrapped.js.map +2 -2
  36. package/dist/cjs/hooks/useElementLayout.js +92 -0
  37. package/dist/cjs/hooks/useElementLayout.js.map +7 -0
  38. package/dist/cjs/hooks/useIsTouchDevice.js +2 -10
  39. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  40. package/dist/cjs/hooks/useMedia.js +77 -84
  41. package/dist/cjs/hooks/useMedia.js.map +2 -2
  42. package/dist/cjs/hooks/useMedia.test.js +2 -0
  43. package/dist/cjs/{helpers/validate.js.map → hooks/useMedia.test.js.map} +0 -0
  44. package/dist/cjs/hooks/usePressablePressResponder.js +370 -0
  45. package/dist/cjs/hooks/usePressablePressResponder.js.map +7 -0
  46. package/dist/cjs/hooks/useSafeRef.js +13 -15
  47. package/dist/cjs/hooks/useSafeRef.js.map +2 -2
  48. package/dist/cjs/hooks/useTheme.js +3 -4
  49. package/dist/cjs/hooks/useTheme.js.map +2 -2
  50. package/dist/cjs/index.js +1 -17
  51. package/dist/cjs/index.js.map +2 -2
  52. package/dist/cjs/static.js +0 -20
  53. package/dist/cjs/static.js.map +2 -2
  54. package/dist/cjs/styled.js +4 -22
  55. package/dist/cjs/styled.js.map +2 -2
  56. package/dist/cjs/types.js.map +1 -1
  57. package/dist/cjs/{hooks/useIsSSR.js → views/AbsoluteFill.js} +18 -23
  58. package/dist/cjs/views/AbsoluteFill.js.map +7 -0
  59. package/dist/cjs/views/AbsoluteFill.native.js +45 -0
  60. package/dist/cjs/views/AbsoluteFill.native.js.map +7 -0
  61. package/dist/cjs/views/FontLanguage.native.js.map +2 -2
  62. package/dist/cjs/views/Stack.js.map +1 -1
  63. package/dist/cjs/views/TamaguiProvider.js +3 -2
  64. package/dist/cjs/views/TamaguiProvider.js.map +2 -2
  65. package/dist/cjs/views/Text.js.map +1 -1
  66. package/dist/cjs/views/ThemeReset.js +10 -10
  67. package/dist/cjs/views/ThemeReset.js.map +2 -2
  68. package/dist/esm/Tamagui.js +4 -2
  69. package/dist/esm/Tamagui.js.map +2 -2
  70. package/dist/esm/config.js +1 -2
  71. package/dist/esm/config.js.map +2 -2
  72. package/dist/esm/constants/constants.js +11 -7
  73. package/dist/esm/constants/constants.js.map +2 -2
  74. package/dist/esm/contexts/TextAncestorContext.js +2 -13
  75. package/dist/esm/contexts/TextAncestorContext.js.map +2 -2
  76. package/dist/esm/createComponent.js +203 -296
  77. package/dist/esm/createComponent.js.map +2 -2
  78. package/dist/esm/createTamagui.js +15 -16
  79. package/dist/esm/createTamagui.js.map +3 -3
  80. package/dist/esm/createVariable.js +1 -2
  81. package/dist/esm/createVariable.js.map +2 -2
  82. package/dist/esm/helpers/ThemeManager.js +7 -14
  83. package/dist/esm/helpers/ThemeManager.js.map +2 -2
  84. package/dist/esm/helpers/cache.js +18 -0
  85. package/dist/esm/helpers/cache.js.map +7 -0
  86. package/dist/esm/helpers/createMediaStyle.js +14 -8
  87. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  88. package/dist/esm/helpers/extendStaticConfig.js +0 -1
  89. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  90. package/dist/esm/helpers/getSplitStyles.js +221 -94
  91. package/dist/esm/helpers/getSplitStyles.js.map +3 -3
  92. package/dist/esm/helpers/getStylesAtomic.js +13 -26
  93. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  94. package/dist/esm/helpers/insertStyleRule.js +14 -6
  95. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  96. package/dist/esm/helpers/matchMedia.js.map +2 -2
  97. package/dist/esm/helpers/mergeTransform.js.map +1 -1
  98. package/dist/esm/helpers/normalizeValueWithProperty.js +30 -1
  99. package/dist/esm/helpers/normalizeValueWithProperty.js.map +2 -2
  100. package/dist/esm/helpers/useShallowSetState.js.map +2 -2
  101. package/dist/esm/hooks/getThemeUnwrapped.js +1 -3
  102. package/dist/esm/hooks/getThemeUnwrapped.js.map +2 -2
  103. package/dist/esm/hooks/useElementLayout.js +66 -0
  104. package/dist/esm/hooks/useElementLayout.js.map +7 -0
  105. package/dist/esm/hooks/useIsTouchDevice.js +3 -11
  106. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  107. package/dist/esm/hooks/useMedia.js +74 -83
  108. package/dist/esm/hooks/useMedia.js.map +2 -2
  109. package/dist/esm/hooks/useMedia.test.js +1 -0
  110. package/dist/esm/{helpers/validate.js.map → hooks/useMedia.test.js.map} +0 -0
  111. package/dist/esm/hooks/usePressablePressResponder.js +346 -0
  112. package/dist/esm/hooks/usePressablePressResponder.js.map +7 -0
  113. package/dist/esm/hooks/useSafeRef.js +13 -15
  114. package/dist/esm/hooks/useSafeRef.js.map +2 -2
  115. package/dist/esm/hooks/useTheme.js +3 -4
  116. package/dist/esm/hooks/useTheme.js.map +2 -2
  117. package/dist/esm/index.js +1 -14
  118. package/dist/esm/index.js.map +2 -2
  119. package/dist/esm/static.js +0 -14
  120. package/dist/esm/static.js.map +2 -2
  121. package/dist/esm/styled.js +4 -22
  122. package/dist/esm/styled.js.map +2 -2
  123. package/dist/esm/views/AbsoluteFill.js +17 -0
  124. package/dist/esm/views/AbsoluteFill.js.map +7 -0
  125. package/dist/esm/views/AbsoluteFill.native.js +21 -0
  126. package/dist/esm/views/AbsoluteFill.native.js.map +7 -0
  127. package/dist/esm/views/FontLanguage.native.js.map +2 -2
  128. package/dist/esm/views/Stack.js.map +1 -1
  129. package/dist/esm/views/TamaguiProvider.js +5 -4
  130. package/dist/esm/views/TamaguiProvider.js.map +2 -2
  131. package/dist/esm/views/Text.js.map +1 -1
  132. package/dist/esm/views/ThemeReset.js +10 -10
  133. package/dist/esm/views/ThemeReset.js.map +2 -2
  134. package/package.json +14 -14
  135. package/src/Tamagui.ts +7 -3
  136. package/src/config.ts +2 -3
  137. package/src/constants/constants.ts +10 -6
  138. package/src/contexts/TextAncestorContext.tsx +1 -8
  139. package/src/createComponent.tsx +256 -421
  140. package/src/createTamagui.ts +16 -19
  141. package/src/createVariable.ts +1 -3
  142. package/src/helpers/ThemeManager.tsx +7 -15
  143. package/src/helpers/cache.ts +18 -0
  144. package/src/helpers/createMediaStyle.ts +16 -9
  145. package/src/helpers/extendStaticConfig.ts +0 -1
  146. package/src/helpers/getSplitStyles.tsx +257 -151
  147. package/src/helpers/getStylesAtomic.ts +14 -34
  148. package/src/helpers/insertStyleRule.tsx +16 -8
  149. package/src/helpers/matchMedia.ts +1 -0
  150. package/src/helpers/mergeTransform.ts +1 -1
  151. package/src/helpers/normalizeValueWithProperty.ts +30 -0
  152. package/src/helpers/useShallowSetState.tsx +0 -1
  153. package/src/hooks/getThemeUnwrapped.tsx +1 -2
  154. package/src/hooks/useElementLayout.tsx +90 -0
  155. package/src/hooks/useIsTouchDevice.tsx +3 -17
  156. package/src/hooks/useMedia.tsx +80 -87
  157. package/src/hooks/useSafeRef.ts +17 -18
  158. package/src/hooks/useTheme.tsx +4 -4
  159. package/src/index.ts +1 -11
  160. package/src/static.ts +0 -10
  161. package/src/styled.tsx +15 -33
  162. package/src/types.tsx +58 -55
  163. package/src/views/FontLanguage.native.tsx +1 -0
  164. package/src/views/Stack.tsx +1 -1
  165. package/src/views/TamaguiProvider.tsx +5 -5
  166. package/src/views/Text.tsx +1 -1
  167. package/src/views/ThemeReset.tsx +11 -11
  168. package/types/Tamagui.d.ts +6 -4
  169. package/types/constants/constants.d.ts +14 -3
  170. package/types/contexts/TextAncestorContext.d.ts +1 -3
  171. package/types/createComponent.d.ts +0 -15
  172. package/types/helpers/ThemeManager.d.ts +2 -3
  173. package/types/helpers/cache.d.ts +12 -0
  174. package/types/helpers/calc.d.ts +0 -16
  175. package/types/helpers/createMediaStyle.d.ts +1 -1
  176. package/types/helpers/getSplitStyles.d.ts +6 -10
  177. package/types/helpers/getStylesAtomic.d.ts +1 -5
  178. package/types/helpers/insertStyleRule.d.ts +2 -2
  179. package/types/helpers/mergeTransform.d.ts +1 -1
  180. package/types/helpers/normalizeValueWithProperty.d.ts +1 -0
  181. package/types/hooks/useElementLayout.d.ts +27 -0
  182. package/types/hooks/useMedia.d.ts +3 -1
  183. package/types/hooks/useMedia.test.d.ts +1 -0
  184. package/types/hooks/usePressablePressResponder.d.ts +84 -0
  185. package/types/index.d.ts +1 -11
  186. package/types/static.d.ts +0 -1
  187. package/types/types.d.ts +42 -44
  188. package/types/views/AbsoluteFill.d.ts +5 -0
  189. package/types/views/AbsoluteFill.native.d.ts +3 -0
  190. package/types/views/Stack.d.ts +1 -1
  191. package/types/views/Text.d.ts +1 -1
  192. package/dist/cjs/constants/platform.js +0 -74
  193. package/dist/cjs/constants/platform.js.map +0 -7
  194. package/dist/cjs/constants/platform.native.js +0 -62
  195. package/dist/cjs/constants/platform.native.js.map +0 -7
  196. package/dist/cjs/helpers/createShallowUpdate.js.map +0 -7
  197. package/dist/cjs/helpers/validate.js +0 -2
  198. package/dist/cjs/hooks/useDidFinishSSR.js +0 -60
  199. package/dist/cjs/hooks/useDidFinishSSR.js.map +0 -7
  200. package/dist/cjs/hooks/useIsSSR.js.map +0 -7
  201. package/dist/esm/constants/platform.js +0 -39
  202. package/dist/esm/constants/platform.js.map +0 -7
  203. package/dist/esm/constants/platform.native.js +0 -28
  204. package/dist/esm/constants/platform.native.js.map +0 -7
  205. package/dist/esm/helpers/createShallowUpdate.js +0 -20
  206. package/dist/esm/helpers/createShallowUpdate.js.map +0 -7
  207. package/dist/esm/helpers/validate.js +0 -1
  208. package/dist/esm/hooks/useDidFinishSSR.js +0 -35
  209. package/dist/esm/hooks/useDidFinishSSR.js.map +0 -7
  210. package/dist/esm/hooks/useIsSSR.js +0 -22
  211. package/dist/esm/hooks/useIsSSR.js.map +0 -7
  212. package/src/helpers/assignNativePropsToWeb.tsx +0 -178
  213. package/src/helpers/calc.ts +0 -68
  214. package/src/helpers/getFont.tsx +0 -43
  215. package/src/helpers/getStackSize.ts +0 -22
  216. package/src/helpers/startTransition.ts +0 -4
  217. package/src/hooks/useConstant.tsx +0 -19
  218. package/src/hooks/useIsMounted.ts +0 -16
  219. package/src/hooks/usePressable.tsx +0 -9
  220. package/src/hooks/useUnmountEffect.ts +0 -5
@@ -3,7 +3,11 @@ import { stylePropsText, stylePropsTransform, validPseudoKeys, validStyles } fro
3
3
  import { useInsertionEffect } from "react";
4
4
  import { getConfig } from "../config";
5
5
  import { isDevTools } from "../constants/isDevTools";
6
- import { mediaState as globalMediaState, mediaQueryConfig } from "../hooks/useMedia";
6
+ import {
7
+ mediaState as globalMediaState,
8
+ mediaQueryConfig,
9
+ mergeMediaByImportance
10
+ } from "../hooks/useMedia";
7
11
  import { createMediaStyle } from "./createMediaStyle";
8
12
  import { getPropMappedFontFamily } from "./createPropMapper";
9
13
  import { createProxy } from "./createProxy";
@@ -17,17 +21,21 @@ import {
17
21
  updateRules
18
22
  } from "./insertStyleRule";
19
23
  import { mergeTransform } from "./mergeTransform";
20
- import { normalizeValueWithProperty } from "./normalizeValueWithProperty.js";
24
+ import {
25
+ normalizeValueWithProperty,
26
+ reverseMapClassNameToValue
27
+ } from "./normalizeValueWithProperty.js";
21
28
  import { pseudoDescriptors } from "./pseudoDescriptors";
22
29
  const skipProps = {
23
30
  animation: true,
24
31
  animateOnly: true,
25
32
  debug: true,
26
- componentName: true
33
+ componentName: true,
34
+ role: true,
35
+ tag: true
27
36
  };
28
37
  if (process.env.TAMAGUI_TARGET === "native") {
29
38
  Object.assign(skipProps, {
30
- tag: true,
31
39
  whiteSpace: true,
32
40
  wordWrap: true,
33
41
  textOverflow: true,
@@ -40,15 +48,67 @@ if (process.env.TAMAGUI_TARGET === "native") {
40
48
  boxShadow: true
41
49
  });
42
50
  }
51
+ const accessibilityDirectMap = {};
52
+ if (process.env.TAMAGUI_TARGET === "web") {
53
+ const items = {
54
+ Hidden: true,
55
+ ActiveDescendant: true,
56
+ Atomic: true,
57
+ AutoComplete: true,
58
+ Busy: true,
59
+ Checked: true,
60
+ ColumnCount: "colcount",
61
+ ColumnIndex: "colindex",
62
+ ColumnSpan: "colspan",
63
+ Current: true,
64
+ Details: true,
65
+ ErrorMessage: true,
66
+ Expanded: true,
67
+ HasPopup: true,
68
+ Invalid: true,
69
+ Label: true,
70
+ Level: true,
71
+ Modal: true,
72
+ Multiline: true,
73
+ MultiSelectable: true,
74
+ Orientation: true,
75
+ Owns: true,
76
+ Placeholder: true,
77
+ PosInSet: true,
78
+ Pressed: true,
79
+ RoleDescription: true,
80
+ RowCount: true,
81
+ RowIndex: true,
82
+ RowSpan: true,
83
+ Selected: true,
84
+ SetSize: true,
85
+ Sort: true,
86
+ ValueMax: true,
87
+ ValueMin: true,
88
+ ValueNow: true,
89
+ ValueText: true
90
+ };
91
+ for (const key in items) {
92
+ let val = items[key];
93
+ if (val === true) {
94
+ val = key.toLowerCase();
95
+ }
96
+ accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`;
97
+ }
98
+ }
43
99
  let conf;
44
100
  const PROP_SPLIT = "-";
45
- const pseudoCNInverse = {
46
- hover: "hoverStyle",
47
- focus: "focusStyle",
48
- press: "pressStyle"
101
+ const accessibilityRoleToWebRole = {
102
+ adjustable: "slider",
103
+ header: "heading",
104
+ image: "img",
105
+ link: "link",
106
+ none: "presentation",
107
+ summary: "region"
49
108
  };
50
- const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, languageContext, debug) => {
51
- var _a, _b;
109
+ const isMediaKey = (key) => Boolean(key[0] === "$" && mediaQueryConfig[key.slice(1)]);
110
+ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, languageContext, elementType, debug) => {
111
+ var _a, _b, _c, _d, _e;
52
112
  conf = conf || getConfig();
53
113
  const validStyleProps = staticConfig.isText ? stylePropsText : validStyles;
54
114
  const mediaKeys = [];
@@ -56,15 +116,12 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
56
116
  const pseudos = {};
57
117
  const medias = {};
58
118
  const mediaState = state.mediaState || globalMediaState;
59
- const usedKeys = /* @__PURE__ */ new Set();
119
+ const usedKeys = {};
60
120
  const propKeys = Object.keys(props);
61
- const shouldDoClasses = staticConfig.acceptsClassName && (isWeb || process.env.IS_STATIC === "is_static") && !state.noClassNames && !props.animation;
121
+ const shouldDoClasses = staticConfig.acceptsClassName && (isWeb || process.env.IS_STATIC === "is_static") && !state.noClassNames;
62
122
  const len = propKeys.length;
63
123
  const rulesToInsert = [];
64
124
  const style = {};
65
- if (state.hasTextAncestor) {
66
- style.display = "inline-flex";
67
- }
68
125
  const classNames = {};
69
126
  const transforms = {};
70
127
  let fontFamily;
@@ -75,7 +132,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
75
132
  if (expandedKey) {
76
133
  keyInit = expandedKey;
77
134
  }
78
- if (usedKeys.has(keyInit))
135
+ if (usedKeys[keyInit])
79
136
  continue;
80
137
  if (skipProps[keyInit])
81
138
  continue;
@@ -84,24 +141,97 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
84
141
  if (keyInit === "style" || keyInit.startsWith("_style")) {
85
142
  if (!valInit)
86
143
  continue;
87
- for (const key in valInit) {
88
- if (usedKeys.has(key))
144
+ const styles = Array.isArray(valInit) ? valInit : [valInit];
145
+ const styleLen = styles.length;
146
+ for (let j = styleLen; j >= 0; j--) {
147
+ const cur = styles[j];
148
+ if (!cur)
89
149
  continue;
90
- if (valInit && typeof valInit === "object") {
91
- for (const skey in valInit) {
92
- if (usedKeys.has(skey))
93
- continue;
94
- usedKeys.add(skey);
95
- style[skey] = valInit[skey];
96
- }
97
- } else {
98
- usedKeys.add(key);
99
- style[key] = valInit;
150
+ for (const key in cur) {
151
+ if (usedKeys[key])
152
+ continue;
153
+ usedKeys[key] = 1;
154
+ style[key] = cur[key];
100
155
  }
101
156
  }
102
157
  continue;
103
158
  }
104
159
  if (process.env.TAMAGUI_TARGET === "web") {
160
+ if (keyInit === "disabled" && valInit === true) {
161
+ usedKeys[keyInit] = 1;
162
+ viewProps["aria-disabled"] = true;
163
+ if (elementType === "button" || elementType === "form" || elementType === "input" || elementType === "select" || elementType === "textarea") {
164
+ viewProps.disabled = true;
165
+ }
166
+ continue;
167
+ }
168
+ if (accessibilityDirectMap[keyInit]) {
169
+ viewProps[accessibilityDirectMap[keyInit]] = valInit;
170
+ usedKeys[keyInit] = 1;
171
+ continue;
172
+ }
173
+ let didUseKeyInit = true;
174
+ switch (keyInit) {
175
+ case "nativeID": {
176
+ viewProps.id = valInit;
177
+ break;
178
+ }
179
+ case "accessibilityRole": {
180
+ if (valInit === "none") {
181
+ viewProps.role = "presentation";
182
+ } else {
183
+ viewProps.role = accessibilityRoleToWebRole[valInit] || valInit;
184
+ }
185
+ break;
186
+ }
187
+ case "accessibilityControls": {
188
+ viewProps["aria-controls"] = processIDRefList(valInit);
189
+ break;
190
+ }
191
+ case "accessibilityDescribedBy": {
192
+ viewProps["aria-describedby"] = processIDRefList(valInit);
193
+ break;
194
+ }
195
+ case "accessibilityFlowTo": {
196
+ viewProps["aria-flowto"] = processIDRefList(valInit);
197
+ break;
198
+ }
199
+ case "accessibilityLabelledBy": {
200
+ viewProps["aria-labelledby"] = processIDRefList(valInit);
201
+ break;
202
+ }
203
+ case "accessibilityKeyShortcuts": {
204
+ if (Array.isArray(valInit)) {
205
+ viewProps["aria-keyshortcuts"] = valInit.join(" ");
206
+ }
207
+ break;
208
+ }
209
+ case "accessibilityLiveRegion": {
210
+ viewProps["aria-live"] = valInit === "none" ? "off" : valInit;
211
+ break;
212
+ }
213
+ case "accessibilityReadOnly": {
214
+ viewProps["aria-readonly"] = valInit;
215
+ if (elementType === "input" || elementType === "select" || elementType === "textarea") {
216
+ viewProps.readOnly = true;
217
+ }
218
+ break;
219
+ }
220
+ case "accessibilityRequired": {
221
+ viewProps["aria-required"] = valInit;
222
+ if (elementType === "input" || elementType === "select" || elementType === "textarea") {
223
+ viewProps.required = true;
224
+ }
225
+ break;
226
+ }
227
+ default: {
228
+ didUseKeyInit = false;
229
+ }
230
+ }
231
+ if (didUseKeyInit) {
232
+ usedKeys[keyInit] = 1;
233
+ continue;
234
+ }
105
235
  if (keyInit === "className") {
106
236
  let nonTamaguis = "";
107
237
  if (!valInit)
@@ -111,7 +241,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
111
241
  const [shorthand, mediaOrPseudo] = cn.slice(1).split("-");
112
242
  const isMedia2 = mediaOrPseudo[0] === "_";
113
243
  const isPseudo2 = mediaOrPseudo[0] === "0";
114
- const isMediaOrPseudo2 = isMedia2 || isPseudo2;
244
+ const isMediaOrPseudo = isMedia2 || isPseudo2;
115
245
  let fullKey = conf.shorthands[shorthand];
116
246
  if (isMedia2) {
117
247
  let mediaShortKey = mediaOrPseudo.slice(1);
@@ -121,24 +251,24 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
121
251
  const pseudoShortKey = mediaOrPseudo.slice(1);
122
252
  fullKey += `${PROP_SPLIT}${pseudoShortKey}`;
123
253
  }
124
- usedKeys.add(fullKey);
125
- mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo2);
254
+ usedKeys[fullKey] = 1;
255
+ mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo);
126
256
  } else {
127
257
  nonTamaguis += " " + cn;
128
258
  }
129
259
  }
130
260
  if (nonTamaguis) {
131
- usedKeys.add(keyInit);
261
+ usedKeys[keyInit] = 1;
132
262
  mergeClassName(transforms, classNames, keyInit, nonTamaguis);
133
263
  }
134
264
  continue;
135
265
  }
136
266
  if (valInit && valInit[0] === "_") {
137
267
  const isValidClassName = validStyles[keyInit];
138
- const isMediaOrPseudo2 = !isValidClassName && keyInit.includes(PROP_SPLIT) && validStyles[keyInit.split(PROP_SPLIT)[0]];
139
- if (isValidClassName || isMediaOrPseudo2) {
140
- usedKeys.add(keyInit);
141
- mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo2);
268
+ const isMediaOrPseudo = !isValidClassName && keyInit.includes(PROP_SPLIT) && validStyles[keyInit.split(PROP_SPLIT)[0]];
269
+ if (isValidClassName || isMediaOrPseudo) {
270
+ usedKeys[keyInit] = 1;
271
+ mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo);
142
272
  continue;
143
273
  }
144
274
  }
@@ -148,11 +278,10 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
148
278
  viewProps[keyInit] = valInit;
149
279
  }
150
280
  }
151
- let isMedia = keyInit[0] === "$";
281
+ let isMedia = isMediaKey(keyInit);
152
282
  let isPseudo = validPseudoKeys[keyInit];
153
- let isMediaOrPseudo = isMedia || isPseudo;
154
283
  if (!isMedia && !isPseudo && !((_a = staticConfig.variants) == null ? void 0 : _a[keyInit]) && !validStyleProps[keyInit] && !conf.shorthands[keyInit]) {
155
- usedKeys.add(keyInit);
284
+ usedKeys[keyInit] = 1;
156
285
  viewProps[keyInit] = valInit;
157
286
  continue;
158
287
  }
@@ -173,25 +302,25 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
173
302
  fontFamily = getPropMappedFontFamily(expanded);
174
303
  }
175
304
  if (process.env.NODE_ENV === "development" && debug === "verbose") {
176
- console.log("expanded", expanded);
177
- console.log("usedKeys", [...usedKeys]);
305
+ if (isClient) {
306
+ console.log("expanded", expanded);
307
+ console.log("usedKeys", usedKeys);
308
+ }
178
309
  console.groupEnd();
179
310
  }
180
- if (!expanded) {
311
+ if (!expanded)
181
312
  continue;
182
- }
183
313
  for (const [key, val] of expanded) {
184
314
  if (val === void 0)
185
315
  continue;
186
- isMedia = key[0] === "$";
316
+ isMedia = isMediaKey(key);
187
317
  isPseudo = validPseudoKeys[key];
188
- isMediaOrPseudo = isMedia || isPseudo;
189
- if (!isMediaOrPseudo) {
190
- if (usedKeys.has(key))
191
- continue;
318
+ const isMediaOrPseudo = isMedia || isPseudo;
319
+ if (!isMediaOrPseudo && usedKeys[key]) {
320
+ continue;
192
321
  }
193
- if (staticConfig.deoptProps && staticConfig.deoptProps.has(key) || staticConfig.inlineProps && staticConfig.inlineProps.has(key) || staticConfig.inlineWhenUnflattened && staticConfig.inlineWhenUnflattened.has(key)) {
194
- usedKeys.add(key);
322
+ if (((_b = staticConfig.deoptProps) == null ? void 0 : _b.has(key)) || ((_c = staticConfig.inlineProps) == null ? void 0 : _c.has(key)) || ((_d = staticConfig.inlineWhenUnflattened) == null ? void 0 : _d.has(key))) {
323
+ usedKeys[key] = 1;
195
324
  viewProps[key] = props[key] ?? val;
196
325
  }
197
326
  if (isPseudo) {
@@ -200,7 +329,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
200
329
  if (key === "enterStyle" && state.mounted) {
201
330
  continue;
202
331
  }
203
- pseudos[key] = pseudos[key] || {};
332
+ pseudos[key] ??= {};
204
333
  const pseudoStyleObject = getSubStyle(
205
334
  key,
206
335
  val,
@@ -216,17 +345,21 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
216
345
  ...pseudoStyleObject,
217
346
  ...pseudos[key]
218
347
  };
219
- if (shouldDoClasses && key !== "enterStyle" && key !== "exitStyle") {
348
+ if (key === "enterStyle" || key === "exitStyle") {
349
+ continue;
350
+ }
351
+ if (shouldDoClasses) {
220
352
  const pseudoStyles = getAtomicStyle(pseudoStyleObject, pseudoDescriptors[key]);
221
353
  for (const style2 of pseudoStyles) {
222
- const postfix = ((_b = pseudoDescriptors[key]) == null ? void 0 : _b.name) || key;
354
+ const postfix = ((_e = pseudoDescriptors[key]) == null ? void 0 : _e.name) || key;
223
355
  const fullKey = `${style2.property}${PROP_SPLIT}${postfix}`;
224
- if (!usedKeys.has(fullKey)) {
225
- usedKeys.add(fullKey);
356
+ if (!usedKeys[fullKey]) {
357
+ usedKeys[fullKey] = 1;
226
358
  addStyleToInsertRules(rulesToInsert, style2);
227
359
  mergeClassName(transforms, classNames, fullKey, style2.identifier, isMediaOrPseudo);
228
360
  }
229
361
  }
362
+ } else {
230
363
  }
231
364
  continue;
232
365
  }
@@ -234,18 +367,6 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
234
367
  const mediaKey = key;
235
368
  const mediaKeyShort = mediaKey.slice(1);
236
369
  mediaKeys.push(mediaKeyShort);
237
- if (!mediaQueryConfig[mediaKeyShort]) {
238
- if (process.env.NODE_ENV === "development" && debug) {
239
- console.warn(
240
- `Warning: using a $ prefixed prop that doesn't match to a media query, may be an error`,
241
- key
242
- );
243
- }
244
- if (!usedKeys.has(key)) {
245
- viewProps[key] = val;
246
- }
247
- continue;
248
- }
249
370
  const mediaStyle = getSubStyle(
250
371
  key,
251
372
  val,
@@ -264,34 +385,24 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
264
385
  for (const style2 of mediaStyles) {
265
386
  const out = createMediaStyle(style2, mediaKeyShort, mediaQueryConfig);
266
387
  const fullKey = `${style2.property}${PROP_SPLIT}${mediaKeyShort}`;
267
- if (!usedKeys.has(fullKey)) {
268
- usedKeys.add(fullKey);
388
+ if (!usedKeys[fullKey]) {
389
+ usedKeys[fullKey] = 1;
269
390
  addStyleToInsertRules(rulesToInsert, out);
270
391
  mergeClassName(transforms, classNames, fullKey, out.identifier, true);
271
392
  }
272
393
  }
273
- } else {
274
- if (mediaState[mediaKeyShort]) {
275
- if (process.env.NODE_ENV === "development" && debug) {
276
- console.log("apply media style", mediaKey, mediaState);
277
- }
278
- if (shouldDoClasses) {
279
- Object.assign(medias, mediaStyle);
280
- } else {
281
- for (const key2 in mediaStyle) {
282
- usedKeys.add(key2);
283
- style[key2] = mediaStyle[key2];
284
- if (key2 === "fontFamily") {
285
- fontFamily = mediaStyle[key2];
286
- }
287
- }
394
+ } else if (mediaState[mediaKeyShort]) {
395
+ for (const key2 in mediaStyle) {
396
+ const didMerge = mergeMediaByImportance(style, key2, mediaStyle[key2], usedKeys);
397
+ if (didMerge && key2 === "fontFamily") {
398
+ fontFamily = mediaStyle[key2];
288
399
  }
289
400
  }
290
401
  }
291
402
  continue;
292
403
  }
293
404
  if (!isWeb && key === "pointerEvents") {
294
- usedKeys.add(key);
405
+ usedKeys[key] = 1;
295
406
  viewProps[key] = val;
296
407
  continue;
297
408
  }
@@ -299,7 +410,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
299
410
  fontFamily = valInit[0] === "$" ? valInit : val;
300
411
  }
301
412
  if (validStyleProps[key]) {
302
- usedKeys.add(key);
413
+ usedKeys[key] = 1;
303
414
  if (val && val[0] === "_") {
304
415
  classNames[key] = val;
305
416
  } else if (key in stylePropsTransform) {
@@ -312,7 +423,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
312
423
  if (!staticConfig.variants || !(key in staticConfig.variants)) {
313
424
  if (!skipProps[key]) {
314
425
  viewProps[key] = val;
315
- usedKeys.add(key);
426
+ usedKeys[key] = 1;
316
427
  }
317
428
  }
318
429
  }
@@ -321,10 +432,26 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
321
432
  if (isWeb) {
322
433
  styleToCSS(style);
323
434
  }
324
- if (defaultClassNames) {
325
- for (const key in defaultClassNames) {
326
- if (!(key in classNames)) {
327
- classNames[key] = defaultClassNames[key];
435
+ if (parentSplitStyles) {
436
+ if (process.env.TAMAGUI_TARGET === "web") {
437
+ for (const key in parentSplitStyles.classNames) {
438
+ if (key in classNames)
439
+ continue;
440
+ if (key in style)
441
+ continue;
442
+ const val = parentSplitStyles.classNames[key];
443
+ if (!shouldDoClasses) {
444
+ style[key] = reverseMapClassNameToValue(key, val);
445
+ } else {
446
+ classNames[key] = val;
447
+ }
448
+ }
449
+ }
450
+ if (!shouldDoClasses) {
451
+ for (const key in parentSplitStyles.style) {
452
+ if (key in style)
453
+ continue;
454
+ style[key] = parentSplitStyles.style[key];
328
455
  }
329
456
  }
330
457
  }
@@ -337,8 +464,6 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
337
464
  mergeClassName(transforms, classNames, key, atomicStyle.identifier);
338
465
  }
339
466
  }
340
- }
341
- if (process.env.TAMAGUI_TARGET === "web") {
342
467
  if (transforms) {
343
468
  for (const namespace in transforms) {
344
469
  if (!transforms[namespace]) {
@@ -489,12 +614,14 @@ function addStyleToInsertRules(rulesToInsert, styleObject) {
489
614
  rulesToInsert.push(styleObject);
490
615
  }
491
616
  }
617
+ function processIDRefList(idRefList) {
618
+ return Array.isArray(idRefList) ? idRefList.join(" ") : idRefList;
619
+ }
492
620
  export {
493
621
  PROP_SPLIT,
494
622
  getSplitStyles,
495
623
  getSubStyle,
496
624
  insertSplitStyles,
497
- pseudoCNInverse,
498
625
  useSplitStyles
499
626
  };
500
627
  //# sourceMappingURL=getSplitStyles.js.map