@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
@@ -22,7 +22,6 @@ __export(getSplitStyles_exports, {
22
22
  getSplitStyles: () => getSplitStyles,
23
23
  getSubStyle: () => getSubStyle,
24
24
  insertSplitStyles: () => insertSplitStyles,
25
- pseudoCNInverse: () => pseudoCNInverse,
26
25
  useSplitStyles: () => useSplitStyles
27
26
  });
28
27
  module.exports = __toCommonJS(getSplitStyles_exports);
@@ -45,11 +44,12 @@ const skipProps = {
45
44
  animation: true,
46
45
  animateOnly: true,
47
46
  debug: true,
48
- componentName: true
47
+ componentName: true,
48
+ role: true,
49
+ tag: true
49
50
  };
50
51
  if (process.env.TAMAGUI_TARGET === "native") {
51
52
  Object.assign(skipProps, {
52
- tag: true,
53
53
  whiteSpace: true,
54
54
  wordWrap: true,
55
55
  textOverflow: true,
@@ -62,15 +62,67 @@ if (process.env.TAMAGUI_TARGET === "native") {
62
62
  boxShadow: true
63
63
  });
64
64
  }
65
+ const accessibilityDirectMap = {};
66
+ if (process.env.TAMAGUI_TARGET === "web") {
67
+ const items = {
68
+ Hidden: true,
69
+ ActiveDescendant: true,
70
+ Atomic: true,
71
+ AutoComplete: true,
72
+ Busy: true,
73
+ Checked: true,
74
+ ColumnCount: "colcount",
75
+ ColumnIndex: "colindex",
76
+ ColumnSpan: "colspan",
77
+ Current: true,
78
+ Details: true,
79
+ ErrorMessage: true,
80
+ Expanded: true,
81
+ HasPopup: true,
82
+ Invalid: true,
83
+ Label: true,
84
+ Level: true,
85
+ Modal: true,
86
+ Multiline: true,
87
+ MultiSelectable: true,
88
+ Orientation: true,
89
+ Owns: true,
90
+ Placeholder: true,
91
+ PosInSet: true,
92
+ Pressed: true,
93
+ RoleDescription: true,
94
+ RowCount: true,
95
+ RowIndex: true,
96
+ RowSpan: true,
97
+ Selected: true,
98
+ SetSize: true,
99
+ Sort: true,
100
+ ValueMax: true,
101
+ ValueMin: true,
102
+ ValueNow: true,
103
+ ValueText: true
104
+ };
105
+ for (const key in items) {
106
+ let val = items[key];
107
+ if (val === true) {
108
+ val = key.toLowerCase();
109
+ }
110
+ accessibilityDirectMap[`accessibility${key}`] = `aria-${val}`;
111
+ }
112
+ }
65
113
  let conf;
66
114
  const PROP_SPLIT = "-";
67
- const pseudoCNInverse = {
68
- hover: "hoverStyle",
69
- focus: "focusStyle",
70
- press: "pressStyle"
115
+ const accessibilityRoleToWebRole = {
116
+ adjustable: "slider",
117
+ header: "heading",
118
+ image: "img",
119
+ link: "link",
120
+ none: "presentation",
121
+ summary: "region"
71
122
  };
72
- const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, languageContext, debug) => {
73
- var _a, _b;
123
+ const isMediaKey = (key) => Boolean(key[0] === "$" && import_useMedia.mediaQueryConfig[key.slice(1)]);
124
+ const getSplitStyles = (props, staticConfig, theme, state, parentSplitStyles, languageContext, elementType, debug) => {
125
+ var _a, _b, _c, _d, _e;
74
126
  conf = conf || (0, import_config.getConfig)();
75
127
  const validStyleProps = staticConfig.isText ? import_helpers.stylePropsText : import_helpers.validStyles;
76
128
  const mediaKeys = [];
@@ -78,15 +130,12 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
78
130
  const pseudos = {};
79
131
  const medias = {};
80
132
  const mediaState = state.mediaState || import_useMedia.mediaState;
81
- const usedKeys = /* @__PURE__ */ new Set();
133
+ const usedKeys = {};
82
134
  const propKeys = Object.keys(props);
83
- const shouldDoClasses = staticConfig.acceptsClassName && (import_constants.isWeb || process.env.IS_STATIC === "is_static") && !state.noClassNames && !props.animation;
135
+ const shouldDoClasses = staticConfig.acceptsClassName && (import_constants.isWeb || process.env.IS_STATIC === "is_static") && !state.noClassNames;
84
136
  const len = propKeys.length;
85
137
  const rulesToInsert = [];
86
138
  const style = {};
87
- if (state.hasTextAncestor) {
88
- style.display = "inline-flex";
89
- }
90
139
  const classNames = {};
91
140
  const transforms = {};
92
141
  let fontFamily;
@@ -97,7 +146,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
97
146
  if (expandedKey) {
98
147
  keyInit = expandedKey;
99
148
  }
100
- if (usedKeys.has(keyInit))
149
+ if (usedKeys[keyInit])
101
150
  continue;
102
151
  if (skipProps[keyInit])
103
152
  continue;
@@ -106,24 +155,97 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
106
155
  if (keyInit === "style" || keyInit.startsWith("_style")) {
107
156
  if (!valInit)
108
157
  continue;
109
- for (const key in valInit) {
110
- if (usedKeys.has(key))
158
+ const styles = Array.isArray(valInit) ? valInit : [valInit];
159
+ const styleLen = styles.length;
160
+ for (let j = styleLen; j >= 0; j--) {
161
+ const cur = styles[j];
162
+ if (!cur)
111
163
  continue;
112
- if (valInit && typeof valInit === "object") {
113
- for (const skey in valInit) {
114
- if (usedKeys.has(skey))
115
- continue;
116
- usedKeys.add(skey);
117
- style[skey] = valInit[skey];
118
- }
119
- } else {
120
- usedKeys.add(key);
121
- style[key] = valInit;
164
+ for (const key in cur) {
165
+ if (usedKeys[key])
166
+ continue;
167
+ usedKeys[key] = 1;
168
+ style[key] = cur[key];
122
169
  }
123
170
  }
124
171
  continue;
125
172
  }
126
173
  if (process.env.TAMAGUI_TARGET === "web") {
174
+ if (keyInit === "disabled" && valInit === true) {
175
+ usedKeys[keyInit] = 1;
176
+ viewProps["aria-disabled"] = true;
177
+ if (elementType === "button" || elementType === "form" || elementType === "input" || elementType === "select" || elementType === "textarea") {
178
+ viewProps.disabled = true;
179
+ }
180
+ continue;
181
+ }
182
+ if (accessibilityDirectMap[keyInit]) {
183
+ viewProps[accessibilityDirectMap[keyInit]] = valInit;
184
+ usedKeys[keyInit] = 1;
185
+ continue;
186
+ }
187
+ let didUseKeyInit = true;
188
+ switch (keyInit) {
189
+ case "nativeID": {
190
+ viewProps.id = valInit;
191
+ break;
192
+ }
193
+ case "accessibilityRole": {
194
+ if (valInit === "none") {
195
+ viewProps.role = "presentation";
196
+ } else {
197
+ viewProps.role = accessibilityRoleToWebRole[valInit] || valInit;
198
+ }
199
+ break;
200
+ }
201
+ case "accessibilityControls": {
202
+ viewProps["aria-controls"] = processIDRefList(valInit);
203
+ break;
204
+ }
205
+ case "accessibilityDescribedBy": {
206
+ viewProps["aria-describedby"] = processIDRefList(valInit);
207
+ break;
208
+ }
209
+ case "accessibilityFlowTo": {
210
+ viewProps["aria-flowto"] = processIDRefList(valInit);
211
+ break;
212
+ }
213
+ case "accessibilityLabelledBy": {
214
+ viewProps["aria-labelledby"] = processIDRefList(valInit);
215
+ break;
216
+ }
217
+ case "accessibilityKeyShortcuts": {
218
+ if (Array.isArray(valInit)) {
219
+ viewProps["aria-keyshortcuts"] = valInit.join(" ");
220
+ }
221
+ break;
222
+ }
223
+ case "accessibilityLiveRegion": {
224
+ viewProps["aria-live"] = valInit === "none" ? "off" : valInit;
225
+ break;
226
+ }
227
+ case "accessibilityReadOnly": {
228
+ viewProps["aria-readonly"] = valInit;
229
+ if (elementType === "input" || elementType === "select" || elementType === "textarea") {
230
+ viewProps.readOnly = true;
231
+ }
232
+ break;
233
+ }
234
+ case "accessibilityRequired": {
235
+ viewProps["aria-required"] = valInit;
236
+ if (elementType === "input" || elementType === "select" || elementType === "textarea") {
237
+ viewProps.required = true;
238
+ }
239
+ break;
240
+ }
241
+ default: {
242
+ didUseKeyInit = false;
243
+ }
244
+ }
245
+ if (didUseKeyInit) {
246
+ usedKeys[keyInit] = 1;
247
+ continue;
248
+ }
127
249
  if (keyInit === "className") {
128
250
  let nonTamaguis = "";
129
251
  if (!valInit)
@@ -133,7 +255,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
133
255
  const [shorthand, mediaOrPseudo] = cn.slice(1).split("-");
134
256
  const isMedia2 = mediaOrPseudo[0] === "_";
135
257
  const isPseudo2 = mediaOrPseudo[0] === "0";
136
- const isMediaOrPseudo2 = isMedia2 || isPseudo2;
258
+ const isMediaOrPseudo = isMedia2 || isPseudo2;
137
259
  let fullKey = conf.shorthands[shorthand];
138
260
  if (isMedia2) {
139
261
  let mediaShortKey = mediaOrPseudo.slice(1);
@@ -143,24 +265,24 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
143
265
  const pseudoShortKey = mediaOrPseudo.slice(1);
144
266
  fullKey += `${PROP_SPLIT}${pseudoShortKey}`;
145
267
  }
146
- usedKeys.add(fullKey);
147
- mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo2);
268
+ usedKeys[fullKey] = 1;
269
+ mergeClassName(transforms, classNames, fullKey, cn, isMediaOrPseudo);
148
270
  } else {
149
271
  nonTamaguis += " " + cn;
150
272
  }
151
273
  }
152
274
  if (nonTamaguis) {
153
- usedKeys.add(keyInit);
275
+ usedKeys[keyInit] = 1;
154
276
  mergeClassName(transforms, classNames, keyInit, nonTamaguis);
155
277
  }
156
278
  continue;
157
279
  }
158
280
  if (valInit && valInit[0] === "_") {
159
281
  const isValidClassName = import_helpers.validStyles[keyInit];
160
- const isMediaOrPseudo2 = !isValidClassName && keyInit.includes(PROP_SPLIT) && import_helpers.validStyles[keyInit.split(PROP_SPLIT)[0]];
161
- if (isValidClassName || isMediaOrPseudo2) {
162
- usedKeys.add(keyInit);
163
- mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo2);
282
+ const isMediaOrPseudo = !isValidClassName && keyInit.includes(PROP_SPLIT) && import_helpers.validStyles[keyInit.split(PROP_SPLIT)[0]];
283
+ if (isValidClassName || isMediaOrPseudo) {
284
+ usedKeys[keyInit] = 1;
285
+ mergeClassName(transforms, classNames, keyInit, valInit, isMediaOrPseudo);
164
286
  continue;
165
287
  }
166
288
  }
@@ -170,11 +292,10 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
170
292
  viewProps[keyInit] = valInit;
171
293
  }
172
294
  }
173
- let isMedia = keyInit[0] === "$";
295
+ let isMedia = isMediaKey(keyInit);
174
296
  let isPseudo = import_helpers.validPseudoKeys[keyInit];
175
- let isMediaOrPseudo = isMedia || isPseudo;
176
297
  if (!isMedia && !isPseudo && !((_a = staticConfig.variants) == null ? void 0 : _a[keyInit]) && !validStyleProps[keyInit] && !conf.shorthands[keyInit]) {
177
- usedKeys.add(keyInit);
298
+ usedKeys[keyInit] = 1;
178
299
  viewProps[keyInit] = valInit;
179
300
  continue;
180
301
  }
@@ -195,25 +316,25 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
195
316
  fontFamily = (0, import_createPropMapper.getPropMappedFontFamily)(expanded);
196
317
  }
197
318
  if (process.env.NODE_ENV === "development" && debug === "verbose") {
198
- console.log("expanded", expanded);
199
- console.log("usedKeys", [...usedKeys]);
319
+ if (import_constants.isClient) {
320
+ console.log("expanded", expanded);
321
+ console.log("usedKeys", usedKeys);
322
+ }
200
323
  console.groupEnd();
201
324
  }
202
- if (!expanded) {
325
+ if (!expanded)
203
326
  continue;
204
- }
205
327
  for (const [key, val] of expanded) {
206
328
  if (val === void 0)
207
329
  continue;
208
- isMedia = key[0] === "$";
330
+ isMedia = isMediaKey(key);
209
331
  isPseudo = import_helpers.validPseudoKeys[key];
210
- isMediaOrPseudo = isMedia || isPseudo;
211
- if (!isMediaOrPseudo) {
212
- if (usedKeys.has(key))
213
- continue;
332
+ const isMediaOrPseudo = isMedia || isPseudo;
333
+ if (!isMediaOrPseudo && usedKeys[key]) {
334
+ continue;
214
335
  }
215
- if (staticConfig.deoptProps && staticConfig.deoptProps.has(key) || staticConfig.inlineProps && staticConfig.inlineProps.has(key) || staticConfig.inlineWhenUnflattened && staticConfig.inlineWhenUnflattened.has(key)) {
216
- usedKeys.add(key);
336
+ 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))) {
337
+ usedKeys[key] = 1;
217
338
  viewProps[key] = props[key] ?? val;
218
339
  }
219
340
  if (isPseudo) {
@@ -222,7 +343,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
222
343
  if (key === "enterStyle" && state.mounted) {
223
344
  continue;
224
345
  }
225
- pseudos[key] = pseudos[key] || {};
346
+ pseudos[key] ?? (pseudos[key] = {});
226
347
  const pseudoStyleObject = getSubStyle(
227
348
  key,
228
349
  val,
@@ -238,17 +359,21 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
238
359
  ...pseudoStyleObject,
239
360
  ...pseudos[key]
240
361
  };
241
- if (shouldDoClasses && key !== "enterStyle" && key !== "exitStyle") {
362
+ if (key === "enterStyle" || key === "exitStyle") {
363
+ continue;
364
+ }
365
+ if (shouldDoClasses) {
242
366
  const pseudoStyles = (0, import_getStylesAtomic.getAtomicStyle)(pseudoStyleObject, import_pseudoDescriptors.pseudoDescriptors[key]);
243
367
  for (const style2 of pseudoStyles) {
244
- const postfix = ((_b = import_pseudoDescriptors.pseudoDescriptors[key]) == null ? void 0 : _b.name) || key;
368
+ const postfix = ((_e = import_pseudoDescriptors.pseudoDescriptors[key]) == null ? void 0 : _e.name) || key;
245
369
  const fullKey = `${style2.property}${PROP_SPLIT}${postfix}`;
246
- if (!usedKeys.has(fullKey)) {
247
- usedKeys.add(fullKey);
370
+ if (!usedKeys[fullKey]) {
371
+ usedKeys[fullKey] = 1;
248
372
  addStyleToInsertRules(rulesToInsert, style2);
249
373
  mergeClassName(transforms, classNames, fullKey, style2.identifier, isMediaOrPseudo);
250
374
  }
251
375
  }
376
+ } else {
252
377
  }
253
378
  continue;
254
379
  }
@@ -256,18 +381,6 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
256
381
  const mediaKey = key;
257
382
  const mediaKeyShort = mediaKey.slice(1);
258
383
  mediaKeys.push(mediaKeyShort);
259
- if (!import_useMedia.mediaQueryConfig[mediaKeyShort]) {
260
- if (process.env.NODE_ENV === "development" && debug) {
261
- console.warn(
262
- `Warning: using a $ prefixed prop that doesn't match to a media query, may be an error`,
263
- key
264
- );
265
- }
266
- if (!usedKeys.has(key)) {
267
- viewProps[key] = val;
268
- }
269
- continue;
270
- }
271
384
  const mediaStyle = getSubStyle(
272
385
  key,
273
386
  val,
@@ -286,34 +399,24 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
286
399
  for (const style2 of mediaStyles) {
287
400
  const out = (0, import_createMediaStyle.createMediaStyle)(style2, mediaKeyShort, import_useMedia.mediaQueryConfig);
288
401
  const fullKey = `${style2.property}${PROP_SPLIT}${mediaKeyShort}`;
289
- if (!usedKeys.has(fullKey)) {
290
- usedKeys.add(fullKey);
402
+ if (!usedKeys[fullKey]) {
403
+ usedKeys[fullKey] = 1;
291
404
  addStyleToInsertRules(rulesToInsert, out);
292
405
  mergeClassName(transforms, classNames, fullKey, out.identifier, true);
293
406
  }
294
407
  }
295
- } else {
296
- if (mediaState[mediaKeyShort]) {
297
- if (process.env.NODE_ENV === "development" && debug) {
298
- console.log("apply media style", mediaKey, mediaState);
299
- }
300
- if (shouldDoClasses) {
301
- Object.assign(medias, mediaStyle);
302
- } else {
303
- for (const key2 in mediaStyle) {
304
- usedKeys.add(key2);
305
- style[key2] = mediaStyle[key2];
306
- if (key2 === "fontFamily") {
307
- fontFamily = mediaStyle[key2];
308
- }
309
- }
408
+ } else if (mediaState[mediaKeyShort]) {
409
+ for (const key2 in mediaStyle) {
410
+ const didMerge = (0, import_useMedia.mergeMediaByImportance)(style, key2, mediaStyle[key2], usedKeys);
411
+ if (didMerge && key2 === "fontFamily") {
412
+ fontFamily = mediaStyle[key2];
310
413
  }
311
414
  }
312
415
  }
313
416
  continue;
314
417
  }
315
418
  if (!import_constants.isWeb && key === "pointerEvents") {
316
- usedKeys.add(key);
419
+ usedKeys[key] = 1;
317
420
  viewProps[key] = val;
318
421
  continue;
319
422
  }
@@ -321,7 +424,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
321
424
  fontFamily = valInit[0] === "$" ? valInit : val;
322
425
  }
323
426
  if (validStyleProps[key]) {
324
- usedKeys.add(key);
427
+ usedKeys[key] = 1;
325
428
  if (val && val[0] === "_") {
326
429
  classNames[key] = val;
327
430
  } else if (key in import_helpers.stylePropsTransform) {
@@ -334,7 +437,7 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
334
437
  if (!staticConfig.variants || !(key in staticConfig.variants)) {
335
438
  if (!skipProps[key]) {
336
439
  viewProps[key] = val;
337
- usedKeys.add(key);
440
+ usedKeys[key] = 1;
338
441
  }
339
442
  }
340
443
  }
@@ -343,10 +446,26 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
343
446
  if (import_constants.isWeb) {
344
447
  (0, import_getStylesAtomic.styleToCSS)(style);
345
448
  }
346
- if (defaultClassNames) {
347
- for (const key in defaultClassNames) {
348
- if (!(key in classNames)) {
349
- classNames[key] = defaultClassNames[key];
449
+ if (parentSplitStyles) {
450
+ if (process.env.TAMAGUI_TARGET === "web") {
451
+ for (const key in parentSplitStyles.classNames) {
452
+ if (key in classNames)
453
+ continue;
454
+ if (key in style)
455
+ continue;
456
+ const val = parentSplitStyles.classNames[key];
457
+ if (!shouldDoClasses) {
458
+ style[key] = (0, import_normalizeValueWithProperty.reverseMapClassNameToValue)(key, val);
459
+ } else {
460
+ classNames[key] = val;
461
+ }
462
+ }
463
+ }
464
+ if (!shouldDoClasses) {
465
+ for (const key in parentSplitStyles.style) {
466
+ if (key in style)
467
+ continue;
468
+ style[key] = parentSplitStyles.style[key];
350
469
  }
351
470
  }
352
471
  }
@@ -359,8 +478,6 @@ const getSplitStyles = (props, staticConfig, theme, state, defaultClassNames, la
359
478
  mergeClassName(transforms, classNames, key, atomicStyle.identifier);
360
479
  }
361
480
  }
362
- }
363
- if (process.env.TAMAGUI_TARGET === "web") {
364
481
  if (transforms) {
365
482
  for (const namespace in transforms) {
366
483
  if (!transforms[namespace]) {
@@ -511,13 +628,15 @@ function addStyleToInsertRules(rulesToInsert, styleObject) {
511
628
  rulesToInsert.push(styleObject);
512
629
  }
513
630
  }
631
+ function processIDRefList(idRefList) {
632
+ return Array.isArray(idRefList) ? idRefList.join(" ") : idRefList;
633
+ }
514
634
  // Annotate the CommonJS export names for ESM import in node:
515
635
  0 && (module.exports = {
516
636
  PROP_SPLIT,
517
637
  getSplitStyles,
518
638
  getSubStyle,
519
639
  insertSplitStyles,
520
- pseudoCNInverse,
521
640
  useSplitStyles
522
641
  });
523
642
  //# sourceMappingURL=getSplitStyles.js.map