@tamagui/core 1.0.1-beta.192 → 1.0.1-beta.194

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