@tamagui/core 1.0.1-beta.193 → 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 (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 +194 -289
  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 +193 -291
  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 +248 -418
  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
@@ -26,34 +26,30 @@ var createComponent_exports = {};
26
26
  __export(createComponent_exports, {
27
27
  Spacer: () => Spacer,
28
28
  Unspaced: () => Unspaced,
29
- accessibilityRoleToWebRole: () => accessibilityRoleToWebRole,
30
29
  createComponent: () => createComponent,
31
30
  mouseUps: () => mouseUps,
32
- processIDRefList: () => processIDRefList,
33
31
  spacedChildren: () => spacedChildren
34
32
  });
35
33
  module.exports = __toCommonJS(createComponent_exports);
36
34
  var import_jsx_runtime = require("react/jsx-runtime");
35
+ var import_compose_refs = require("@tamagui/compose-refs");
37
36
  var import_constants = require("@tamagui/constants");
38
37
  var import_helpers = require("@tamagui/helpers");
39
- var import_rnw = require("@tamagui/rnw");
38
+ var import_react_native_use_responder_events = require("@tamagui/react-native-use-responder-events");
40
39
  var import_use_force_update = require("@tamagui/use-force-update");
41
40
  var import_react = __toESM(require("react"));
42
- var import_react_native = require("react-native");
43
41
  var import_config = require("./config");
44
42
  var import_constants2 = require("./constants/constants");
45
43
  var import_FontLanguageContext = require("./contexts/FontLanguageContext");
46
44
  var import_TextAncestorContext = require("./contexts/TextAncestorContext");
47
- var import_assignNativePropsToWeb = require("./helpers/assignNativePropsToWeb");
48
- var import_createPropMapper = require("./helpers/createPropMapper");
49
45
  var import_extendStaticConfig = require("./helpers/extendStaticConfig");
50
46
  var import_getSplitStyles = require("./helpers/getSplitStyles");
51
47
  var import_insertStyleRule = require("./helpers/insertStyleRule");
52
48
  var import_mergeProps = require("./helpers/mergeProps");
53
49
  var import_proxyThemeVariables = require("./helpers/proxyThemeVariables");
54
50
  var import_useShallowSetState = require("./helpers/useShallowSetState");
51
+ var import_useElementLayout = require("./hooks/useElementLayout");
55
52
  var import_useMedia = require("./hooks/useMedia");
56
- var import_usePressable = require("./hooks/usePressable");
57
53
  var import_useServerHooks = require("./hooks/useServerHooks");
58
54
  var import_useTheme = require("./hooks/useTheme");
59
55
  var import_Pressability = require("./vendor/Pressability");
@@ -61,6 +57,11 @@ var import_Slot = require("./views/Slot");
61
57
  var import_Theme = require("./views/Theme");
62
58
  import_react.default["keep"];
63
59
  let defaultComponentState = null;
60
+ let defaultComponentStateMounted = null;
61
+ let tamaguiConfig;
62
+ let AnimatedText;
63
+ let AnimatedView;
64
+ let initialTheme;
64
65
  const mouseUps = /* @__PURE__ */ new Set();
65
66
  if (typeof document !== "undefined") {
66
67
  const cancelTouches = () => {
@@ -76,8 +77,13 @@ function mergeShorthands({ defaultProps }, { shorthands }) {
76
77
  defaultProps[shorthands[key] || key] = defaultProps[key];
77
78
  }
78
79
  }
79
- let initialTheme;
80
- let config;
80
+ let BaseText;
81
+ let BaseView;
82
+ if (process.env.TAMAGUI_TARGET === "native") {
83
+ const native = require("react-native");
84
+ BaseText = native.Text || native.default.Text;
85
+ BaseView = native.View || native.default.View;
86
+ }
81
87
  function createComponent(configIn, ParentComponent) {
82
88
  const staticConfig = (() => {
83
89
  const next = (0, import_extendStaticConfig.extendStaticConfig)(configIn, ParentComponent);
@@ -88,10 +94,7 @@ function createComponent(configIn, ParentComponent) {
88
94
  }
89
95
  })();
90
96
  const defaultComponentClassName = `is_${staticConfig.componentName}`;
91
- let tamaguiConfig;
92
- let AnimatedText;
93
- let AnimatedView;
94
- let avoidClassesWhileAnimating = true;
97
+ const avoidClassesWhileAnimating = true;
95
98
  let defaultNativeStyle;
96
99
  let tamaguiDefaultProps;
97
100
  let initialSplitStyles;
@@ -108,10 +111,26 @@ function createComponent(configIn, ParentComponent) {
108
111
  const componentName = props.componentName || staticConfig.componentName;
109
112
  const componentClassName = props.asChild ? "" : props.componentName ? `is_${props.componentName}` : defaultComponentClassName;
110
113
  const forceUpdate = (0, import_use_force_update.useForceUpdate)();
111
- config = config || (0, import_config.getConfig)();
112
114
  const theme = (0, import_useTheme.useTheme)(props.theme, componentName, props, forceUpdate);
113
- const states = (0, import_useServerHooks.useServerState)(defaultComponentState);
115
+ const hasEnterStyle = !!props.enterStyle;
116
+ const needsMount = Boolean((import_constants.isWeb ? import_constants.isClient : true) && (hasEnterStyle || props.animation));
117
+ const states = (0, import_useServerHooks.useServerState)(
118
+ needsMount ? defaultComponentState : defaultComponentStateMounted
119
+ );
114
120
  const state = propsIn.forceStyle ? { ...states[0], [propsIn.forceStyle]: true } : states[0];
121
+ const setState = states[1];
122
+ const setStateShallow = (0, import_useShallowSetState.useShallowSetState)(setState);
123
+ const shouldSetMounted = needsMount && !state.mounted;
124
+ const setMounted = shouldSetMounted ? () => {
125
+ setTimeout(
126
+ () => {
127
+ setStateShallow({
128
+ mounted: true
129
+ });
130
+ },
131
+ import_constants.isWeb ? 10 : 0
132
+ );
133
+ } : void 0;
115
134
  const shouldAvoidClasses = !!(props.animation && avoidClassesWhileAnimating) || !staticConfig.acceptsClassName;
116
135
  const shouldForcePseudo = !!propsIn.forceStyle;
117
136
  const hasTextAncestor = !!(import_constants.isWeb && isText ? (0, import_react.useContext)(import_TextAncestorContext.TextAncestorContext) : false);
@@ -127,25 +146,41 @@ function createComponent(configIn, ParentComponent) {
127
146
  resolveVariablesAs: "value"
128
147
  };
129
148
  const languageContext = import_constants.isRSC ? null : (0, import_react.useContext)(import_FontLanguageContext.FontLanguageContext);
149
+ const useAnimations = (_a = tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
150
+ const nextIsAnimated = !!(useAnimations && props.animation);
151
+ const isAnimated = nextIsAnimated || state.hasAnimation;
152
+ if (nextIsAnimated && !state.hasAnimation) {
153
+ setStateShallow({ hasAnimation: true });
154
+ }
155
+ const isTaggable = !Component || typeof Component === "string";
156
+ const element = import_constants.isWeb ? isTaggable ? props.tag || Component : Component : Component;
157
+ const BaseTextComponent = BaseText || element || "span";
158
+ const BaseViewComponent = BaseView || element || (hasTextAncestor ? "span" : "div");
159
+ let elementType = isText ? (isAnimated ? AnimatedText : null) || BaseTextComponent : (isAnimated ? AnimatedView : null) || BaseViewComponent;
160
+ elementType = Component || elementType;
161
+ const isStringElement = typeof elementType === "string";
130
162
  const splitStyles = (0, import_getSplitStyles.useSplitStyles)(
131
163
  props,
132
164
  staticConfig,
133
165
  theme,
134
166
  splitStyleState,
135
- props.asChild ? null : initialSplitStyles == null ? void 0 : initialSplitStyles.classNames,
167
+ props.asChild ? null : initialSplitStyles,
136
168
  languageContext || void 0,
169
+ elementType,
137
170
  debugProp
138
171
  );
139
172
  const hostRef = (0, import_useServerHooks.useServerRef)(null);
140
- const setState = states[1];
141
- const setStateShallow = (0, import_useShallowSetState.useShallowSetState)(setState);
173
+ const isReactNativeWeb = Boolean(
174
+ staticConfig.isReactNativeWeb || isAnimated && tamaguiConfig.animations.isReactNativeWeb
175
+ );
176
+ const isAnimatedReactNativeWeb = isAnimated && avoidClassesWhileAnimating;
142
177
  if (process.env.NODE_ENV === "development") {
143
178
  if (!process.env.TAMAGUI_TARGET) {
144
179
  console.error(`No process.env.TAMAGUI_TARGET set, please set it to "native" or "web".`);
145
180
  }
146
181
  if (debugProp) {
147
182
  const name = `${componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]"}`;
148
- const type = staticConfig.isReactNativeWeb ? "rnw" : "tamagui";
183
+ const type = isReactNativeWeb ? "rnw" : "tamagui";
149
184
  const banner = `${name} ${propsIn["data-is"] || ""} ${type}`;
150
185
  console.group(`%c \u{1F41B} ${banner}`, "background: yellow;");
151
186
  console.groupCollapsed("initial props/state");
@@ -169,42 +204,11 @@ function createComponent(configIn, ParentComponent) {
169
204
  classNames,
170
205
  mediaKeys
171
206
  } = splitStyles;
172
- (0, import_constants.useIsomorphicLayoutEffect)(() => {
173
- if (!mediaKeys.length) {
174
- return;
175
- }
176
- const disposers = [];
177
- for (const key of mediaKeys) {
178
- disposers.push(
179
- (0, import_useMedia.addMediaQueryListener)(key, (next) => {
180
- setState((prev) => {
181
- if (prev.mediaState[key] !== next) {
182
- return {
183
- ...prev,
184
- mediaState: {
185
- ...prev.mediaState,
186
- [key]: next
187
- }
188
- };
189
- }
190
- return prev;
191
- });
192
- })
193
- );
194
- }
195
- return () => {
196
- };
197
- }, [mediaKeys.join(",")]);
198
- const useAnimations = (_a = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
199
- const nextIsAnimated = !!(useAnimations && props.animation);
200
- const isAnimated = nextIsAnimated || state.hasAnimation;
201
- if (nextIsAnimated && !state.hasAnimation) {
202
- setStateShallow({ hasAnimation: true });
203
- }
204
207
  const animationFeatureStylesIn = props.animation ? { ...defaultNativeStyle, ...splitStylesStyle } : null;
205
208
  const propsWithAnimation = props;
209
+ let animationStyles;
206
210
  if (!import_constants.isRSC && isAnimated && useAnimations) {
207
- const animationState = useAnimations(propsWithAnimation, {
211
+ const animations = useAnimations(propsWithAnimation, {
208
212
  state,
209
213
  pseudos,
210
214
  onDidAnimate: props.onDidAnimate,
@@ -235,7 +239,6 @@ function createComponent(configIn, ParentComponent) {
235
239
  style,
236
240
  pseudos.hoverStyle,
237
241
  pseudos.focusStyle,
238
- pseudos.pressStyle,
239
242
  pseudos.pressStyle
240
243
  );
241
244
  enterStyle && isEntering && merge(style, enterStyle);
@@ -244,21 +247,46 @@ function createComponent(configIn, ParentComponent) {
244
247
  state.press && pseudos.pressStyle && merge(style, pseudos.pressStyle);
245
248
  exitStyle && isExiting && merge(style, exitStyle);
246
249
  if (process.env.NODE_ENV === "development") {
247
- if (debugProp) {
250
+ if (debugProp === "verbose") {
248
251
  console.log("animation style", style);
249
252
  }
250
253
  }
251
254
  return style;
252
255
  }
253
256
  });
254
- if (animationState !== state.animation) {
255
- setStateShallow({
256
- animation: animationState
257
- });
257
+ if (animations) {
258
+ animationStyles = animations.style;
258
259
  }
259
260
  }
261
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
262
+ if (!mediaKeys.length)
263
+ return;
264
+ const disposers = [];
265
+ for (const key of mediaKeys) {
266
+ disposers.push(
267
+ (0, import_useMedia.addMediaQueryListener)(key, (next) => {
268
+ setState((prev) => {
269
+ if (prev.mediaState[key] !== next) {
270
+ return {
271
+ ...prev,
272
+ mediaState: {
273
+ ...prev.mediaState,
274
+ [key]: next
275
+ }
276
+ };
277
+ }
278
+ return prev;
279
+ });
280
+ })
281
+ );
282
+ }
283
+ return () => {
284
+ for (const disposer of disposers) {
285
+ disposer();
286
+ }
287
+ };
288
+ }, [mediaKeys.join(",")]);
260
289
  const {
261
- tag,
262
290
  hitSlop,
263
291
  asChild,
264
292
  children,
@@ -283,30 +311,9 @@ function createComponent(configIn, ParentComponent) {
283
311
  defaultVariants,
284
312
  ...nonTamaguiProps
285
313
  } = viewPropsIn;
286
- const isTaggable = !Component || typeof Component === "string";
287
- const element = import_constants.isWeb ? isTaggable ? tag || Component : Component : Component;
288
- const BaseTextComponent = !import_constants.isWeb ? import_react_native.Text : element || "span";
289
- const BaseViewComponent = !import_constants.isWeb ? import_react_native.View : element || (hasTextAncestor ? "span" : "div");
290
- let elementType = isText ? (isAnimated ? AnimatedText || import_react_native.Text : null) || BaseTextComponent : (isAnimated ? AnimatedView || import_react_native.View : null) || BaseViewComponent;
291
- elementType = Component || elementType;
292
- const isStringElement = typeof elementType === "string";
293
314
  const disabled = props.accessibilityState != null && props.accessibilityState.disabled === true || props.accessibilityDisabled;
294
315
  let viewProps;
295
- const hasEnterStyle = !!props.enterStyle;
296
- const shouldSetMounted = Boolean(
297
- (import_constants.isWeb ? import_constants.isClient : true) && (hasEnterStyle || props.animation) && !state.mounted
298
- );
299
- const setMounted = shouldSetMounted ? () => {
300
- setTimeout(
301
- () => {
302
- setStateShallow({
303
- mounted: true
304
- });
305
- },
306
- import_constants.isWeb ? 10 : 0
307
- );
308
- } : void 0;
309
- if (process.env.TAMAGUI_TARGET === "web" && !staticConfig.isReactNativeWeb) {
316
+ if (process.env.TAMAGUI_TARGET === "web" && !isReactNativeWeb) {
310
317
  const {
311
318
  onMoveShouldSetResponder,
312
319
  onMoveShouldSetResponderCapture,
@@ -324,66 +331,18 @@ function createComponent(configIn, ParentComponent) {
324
331
  onSelectionChangeShouldSetResponderCapture,
325
332
  onStartShouldSetResponder,
326
333
  onStartShouldSetResponderCapture,
327
- nativeID,
328
- accessibilityActiveDescendant,
329
- accessibilityAtomic,
330
- accessibilityAutoComplete,
331
- accessibilityBusy,
332
- accessibilityChecked,
333
- accessibilityColumnCount,
334
- accessibilityColumnIndex,
335
- accessibilityColumnSpan,
336
- accessibilityControls,
337
- accessibilityCurrent,
338
- accessibilityDescribedBy,
339
- accessibilityDetails,
340
- accessibilityDisabled,
341
- accessibilityErrorMessage,
342
- accessibilityExpanded,
343
- accessibilityFlowTo,
344
- accessibilityHasPopup,
345
- accessibilityHidden,
346
- accessibilityInvalid,
347
- accessibilityKeyShortcuts,
348
- accessibilityLabel,
349
- accessibilityLabelledBy,
350
- accessibilityLevel,
351
- accessibilityLiveRegion,
352
- accessibilityModal,
353
- accessibilityMultiline,
354
- accessibilityMultiSelectable,
355
- accessibilityOrientation,
356
- accessibilityOwns,
357
- accessibilityPlaceholder,
358
- accessibilityPosInSet,
359
- accessibilityPressed,
360
- accessibilityReadOnly,
361
- accessibilityRequired,
362
- accessibilityRole,
363
- accessibilityRoleDescription,
364
- accessibilityRowCount,
365
- accessibilityRowIndex,
366
- accessibilityRowSpan,
367
- accessibilitySelected,
368
- accessibilitySetSize,
369
- accessibilitySort,
370
- accessibilityValueMax,
371
- accessibilityValueMin,
372
- accessibilityValueNow,
373
- accessibilityValueText,
374
- accessible,
375
- accessibilityState,
376
- accessibilityValue,
377
334
  collapsable,
378
335
  focusable,
336
+ accessible,
337
+ accessibilityDisabled,
379
338
  onLayout,
380
339
  ...webProps
381
340
  } = nonTamaguiProps;
382
341
  viewProps = webProps;
383
- (0, import_assignNativePropsToWeb.assignNativePropsToWeb)(elementType, viewProps, nonTamaguiProps);
384
342
  if (!import_constants.isRSC) {
385
- (0, import_rnw.useElementLayout)(hostRef, onLayout);
386
- (0, import_rnw.useResponderEvents)(hostRef, {
343
+ usePlatformMethods(hostRef);
344
+ (0, import_useElementLayout.useElementLayout)(hostRef, onLayout);
345
+ (0, import_react_native_use_responder_events.useResponderEvents)(hostRef, {
387
346
  onMoveShouldSetResponder,
388
347
  onMoveShouldSetResponderCapture,
389
348
  onResponderEnd,
@@ -401,9 +360,6 @@ function createComponent(configIn, ParentComponent) {
401
360
  onStartShouldSetResponder,
402
361
  onStartShouldSetResponderCapture
403
362
  });
404
- const platformMethodsRef = (0, import_rnw.usePlatformMethods)(viewProps);
405
- const setRef = (0, import_rnw.useMergeRefs)(hostRef, platformMethodsRef, forwardedRef, setMounted);
406
- viewProps.ref = setRef;
407
363
  }
408
364
  if (props.href != void 0 && hrefAttrs != void 0) {
409
365
  const { download, rel, target } = hrefAttrs;
@@ -436,10 +392,8 @@ function createComponent(configIn, ParentComponent) {
436
392
  }
437
393
  } else {
438
394
  viewProps = nonTamaguiProps;
439
- if (forwardedRef) {
440
- viewProps.ref = forwardedRef;
441
- }
442
395
  }
396
+ viewProps.ref = (0, import_compose_refs.useComposedRefs)(hostRef, forwardedRef, setMounted);
443
397
  if (process.env.NODE_ENV === "development" && !isText && import_constants.isWeb && !staticConfig.isHOC) {
444
398
  import_react.Children.toArray(props.children).forEach((item) => {
445
399
  if (typeof item === "string") {
@@ -461,7 +415,6 @@ function createComponent(configIn, ParentComponent) {
461
415
  }, [unPress]);
462
416
  }
463
417
  let styles;
464
- const animationStyles = state.animation ? state.animation.style : null;
465
418
  if (isStringElement && shouldAvoidClasses && !shouldForcePseudo) {
466
419
  styles = {
467
420
  ...defaultNativeStyle,
@@ -487,41 +440,23 @@ function createComponent(configIn, ParentComponent) {
487
440
  Object.assign(splitStyles.style, next);
488
441
  }
489
442
  }
443
+ let fontFamily = isText ? splitStyles.fontFamily || staticConfig.defaultProps.fontFamily : null;
444
+ if (fontFamily && fontFamily[0] === "$") {
445
+ fontFamily = fontFamily.slice(1);
446
+ }
447
+ const fontFamilyClassName = fontFamily ? `font_${fontFamily}` : "";
490
448
  if (process.env.TAMAGUI_TARGET === "web") {
491
- let fontFamily = isText ? splitStyles.fontFamily || staticConfig.defaultProps.fontFamily : null;
492
- if (fontFamily && fontFamily[0] === "$") {
493
- fontFamily = fontFamily.slice(1);
494
- }
495
- if (process.env.NODE_ENV === "development") {
496
- if (fontFamily == null ? void 0 : fontFamily.startsWith(`var(`)) {
497
- console.warn(
498
- `Received variable instead of resolved name of font, this is a bug. Please report on Github.`,
499
- {
500
- fontFamily,
501
- props,
502
- splitStyles,
503
- staticConfig
504
- }
505
- );
506
- }
507
- }
508
449
  const classList = [
509
450
  componentName ? componentClassName : "",
510
- fontFamily ? `font_${fontFamily}` : "",
451
+ fontFamilyClassName,
511
452
  theme.className,
512
453
  classNames ? Object.values(classNames).join(" ") : ""
513
454
  ];
514
455
  const className = classList.join(" ");
515
456
  const style = animationStyles ?? splitStyles.style;
516
- const isAnimatedReactNativeWeb = props.animation && avoidClassesWhileAnimating;
517
457
  if (isAnimatedReactNativeWeb) {
518
458
  viewProps.style = style;
519
- viewProps.dataSet = {
520
- ...viewProps.dataSet,
521
- className,
522
- id: props.id
523
- };
524
- } else if (staticConfig.isReactNativeWeb) {
459
+ } else if (isReactNativeWeb) {
525
460
  const rnwStyle = { $$css: true };
526
461
  for (const name of className.split(" ")) {
527
462
  rnwStyle[name] = name;
@@ -542,10 +477,8 @@ function createComponent(configIn, ParentComponent) {
542
477
  }
543
478
  }
544
479
  if (process.env.TAMAGUI_TARGET === "native") {
545
- const mergedRef = (0, import_rnw.useMergeRefs)(forwardedRef, hostRef, setMounted);
546
- viewProps.ref = mergedRef;
547
480
  if (splitStyles.fontFamily) {
548
- const faceInfo = (_b = config.fontsParsed[splitStyles.fontFamily]) == null ? void 0 : _b.face;
481
+ const faceInfo = (_b = tamaguiConfig.fontsParsed[splitStyles.fontFamily]) == null ? void 0 : _b.face;
549
482
  if (faceInfo) {
550
483
  const [weight, style] = (() => {
551
484
  var _a2, _b2;
@@ -573,13 +506,10 @@ function createComponent(configIn, ParentComponent) {
573
506
  const attachPress = !!((pseudos == null ? void 0 : pseudos.pressStyle) || (initialPseudos == null ? void 0 : initialPseudos.pressStyle) || onPress || onPressOut || onPressIn || onClick);
574
507
  const isHoverable = import_constants.isWeb;
575
508
  const attachHover = isHoverable && !!(pseudos && pseudos.hoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave);
576
- const handlesPressEvents = !isStringElement && !asChild;
577
- const pressKey = handlesPressEvents ? "onPress" : "onClick";
578
- const pressInKey = handlesPressEvents ? "onPressIn" : "onMouseDown";
579
- const pressOutKey = handlesPressEvents ? "onPressOut" : "onMouseUp";
509
+ const handlesPressEvents = !import_constants.isWeb && !asChild;
580
510
  const shouldAttach = !asChild && (attachPress || attachHover || "pressStyle" in props || "onPress" in props || "onPressIn" in props || "onPressOut" in props || import_constants.isWeb && ("hoverStyle" in props || "onHoverIn" in props || "onHoverOut" in props || "onMouseEnter" in props || "onMouseLeave" in props));
581
511
  const events = shouldAttach && !import_constants.isRSC ? {
582
- [pressOutKey]: attachPress ? (e) => {
512
+ onPressOut: attachPress ? (e) => {
583
513
  unPress();
584
514
  onPressOut == null ? void 0 : onPressOut(e);
585
515
  onMouseUp == null ? void 0 : onMouseUp(e);
@@ -593,7 +523,7 @@ function createComponent(configIn, ParentComponent) {
593
523
  if (state.pressIn) {
594
524
  next.press = true;
595
525
  }
596
- if (Object.keys(next).length) {
526
+ if (attachHover || state.pressIn) {
597
527
  setStateShallow(next);
598
528
  }
599
529
  onHoverIn == null ? void 0 : onHoverIn(e);
@@ -616,7 +546,7 @@ function createComponent(configIn, ParentComponent) {
616
546
  onMouseLeave == null ? void 0 : onMouseLeave(e);
617
547
  } : void 0
618
548
  },
619
- [pressInKey]: attachPress ? (e) => {
549
+ onPressIn: attachPress ? (e) => {
620
550
  setStateShallow({
621
551
  press: true,
622
552
  pressIn: true,
@@ -627,12 +557,12 @@ function createComponent(configIn, ParentComponent) {
627
557
  if (import_constants.isWeb) {
628
558
  mouseUps.add(unPress);
629
559
  }
630
- } : null,
631
- [pressKey]: attachPress ? (e) => {
560
+ } : void 0,
561
+ onPress: attachPress ? (e) => {
632
562
  unPress();
633
563
  onClick == null ? void 0 : onClick(e);
634
564
  onPress == null ? void 0 : onPress(e);
635
- } : null,
565
+ } : void 0,
636
566
  ...!import_constants.isWeb && {
637
567
  cancelable: !props.rejectResponderTermination,
638
568
  disabled: props.disabled !== null ? props.disabled : (_e = props.accessibilityState) == null ? void 0 : _e.disabled,
@@ -680,28 +610,6 @@ function createComponent(configIn, ParentComponent) {
680
610
  onPressOut
681
611
  };
682
612
  }
683
- if (!import_constants.isRSC && import_constants.isWeb) {
684
- const [pressableProps] = (0, import_usePressable.usePressable)(
685
- events ? {
686
- disabled,
687
- ...hitSlop && {
688
- hitSlop
689
- },
690
- onPressOut: events[pressOutKey],
691
- onPressIn: events[pressInKey],
692
- onPress: events[pressKey]
693
- } : {
694
- disabled: true
695
- }
696
- );
697
- if (events) {
698
- if (handlesPressEvents) {
699
- Object.assign(viewProps, pressableProps);
700
- } else {
701
- Object.assign(viewProps, events);
702
- }
703
- }
704
- }
705
613
  if (process.env.TAMAGUI_TARGET === "native") {
706
614
  const attachFocus = !!(pseudos && pseudos.focusStyle || initialPseudos && initialPseudos.focusStyle);
707
615
  if (attachFocus) {
@@ -714,9 +622,6 @@ function createComponent(configIn, ParentComponent) {
714
622
  }
715
623
  const pressability = (0, import_Pressability.usePressability)(events);
716
624
  if (attachPress && events) {
717
- const dontComposePressabilityKeys = {
718
- onClick: true
719
- };
720
625
  if (hitSlop) {
721
626
  viewProps.hitSlop = hitSlop;
722
627
  }
@@ -729,21 +634,23 @@ function createComponent(configIn, ParentComponent) {
729
634
  }
730
635
  content = (0, import_react.createElement)(elementType, viewProps, childEls);
731
636
  if (process.env.TAMAGUI_TARGET === "web") {
732
- const isAnimatedRNWView = isAnimated && typeof elementType !== "string";
733
- const shouldWrapWithComponentTheme = !!theme.className && isAnimatedRNWView && (0, import_createPropMapper.getReturnVariablesAs)(props, splitStyleState) === "non-color-value";
734
- const shouldWrapWithHover = Boolean(events || import_constants.isRSC) && attachHover;
735
- if (shouldWrapWithHover || shouldWrapWithComponentTheme) {
736
- const themeClassName = shouldWrapWithComponentTheme ? `${theme.className}` : "";
737
- const hoverClassName = shouldWrapWithHover ? "t_Hoverable" : "";
637
+ if (events) {
638
+ content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
639
+ style: styleDisplayContents,
640
+ onMouseEnter: events.onMouseEnter,
641
+ onMouseLeave: events.onMouseLeave,
642
+ onClick: events.onPress,
643
+ onMouseDown: events.onPressIn,
644
+ onMouseUp: events.onPressOut,
645
+ onTouchStart: events.onPressIn,
646
+ onTouchEnd: events.onPressOut,
647
+ children: content
648
+ });
649
+ }
650
+ if (isText && isAnimatedReactNativeWeb) {
738
651
  content = /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
739
- className: `${hoverClassName} ${themeClassName}`,
740
- style: {
741
- display: "contents"
742
- },
743
- ...events && shouldWrapWithHover && {
744
- onMouseEnter: events.onMouseEnter,
745
- onMouseLeave: events.onMouseLeave
746
- },
652
+ className: fontFamilyClassName,
653
+ style: styleDisplayContents,
747
654
  children: content
748
655
  });
749
656
  }
@@ -769,49 +676,47 @@ function createComponent(configIn, ParentComponent) {
769
676
  component.displayName = staticConfig.componentName;
770
677
  }
771
678
  (0, import_config.onConfiguredOnce)((conf) => {
772
- if (!defaultComponentState) {
773
- defaultComponentState = Object.freeze({
774
- hover: false,
775
- press: false,
776
- pressIn: false,
777
- focus: false,
778
- mounted: false,
779
- animation: null,
780
- mediaState: (0, import_useMedia.getInitialMediaState)()
781
- });
782
- }
783
- if (process.env.IS_STATIC === "is_static")
784
- return;
785
- tamaguiConfig = conf;
786
- mergeShorthands(staticConfig, tamaguiConfig);
787
- if (tamaguiConfig.animations) {
788
- avoidClassesWhileAnimating = !!tamaguiConfig.animations.avoidClasses;
789
- AnimatedText = tamaguiConfig.animations.Text;
790
- AnimatedView = tamaguiConfig.animations.View;
791
- }
792
- if (!initialTheme) {
793
- const next = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]];
794
- initialTheme = (0, import_proxyThemeVariables.proxyThemeVariables)(next);
795
- if (!initialTheme && process.env.NODE_ENV === "development") {
796
- console.log(`Warning: Missing theme`);
679
+ if (!tamaguiConfig) {
680
+ tamaguiConfig = conf;
681
+ if (!defaultComponentState) {
682
+ defaultComponentState = {
683
+ hover: false,
684
+ press: false,
685
+ pressIn: false,
686
+ focus: false,
687
+ mounted: false,
688
+ mediaState: (0, import_useMedia.getInitialMediaState)()
689
+ };
690
+ defaultComponentStateMounted = {
691
+ ...defaultComponentState,
692
+ mounted: true
693
+ };
694
+ }
695
+ if (tamaguiConfig.animations) {
696
+ AnimatedText = tamaguiConfig.animations.Text;
697
+ AnimatedView = tamaguiConfig.animations.View;
698
+ }
699
+ if (!initialTheme) {
700
+ const next = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]];
701
+ initialTheme = (0, import_proxyThemeVariables.proxyThemeVariables)(next);
702
+ if (!initialTheme && process.env.NODE_ENV === "development") {
703
+ console.log(`Warning: Missing theme`);
704
+ }
797
705
  }
798
706
  }
799
- config = (0, import_config.getConfig)();
707
+ mergeShorthands(staticConfig, tamaguiConfig);
800
708
  let defaultPropsIn = staticConfig.defaultProps || {};
801
709
  const parentNames = [...staticConfig.parentNames || [], staticConfig.componentName];
802
- if (config.defaultProps && parentNames && staticConfig.componentName) {
710
+ if (tamaguiConfig.defaultProps && parentNames && staticConfig.componentName) {
803
711
  defaultPropsIn = mergeConfigDefaultProps(
804
712
  staticConfig.componentName,
805
713
  defaultPropsIn,
806
- config.defaultProps,
714
+ tamaguiConfig.defaultProps,
807
715
  parentNames,
808
- conf
716
+ tamaguiConfig
809
717
  );
810
718
  }
811
719
  const debug = defaultPropsIn["debug"];
812
- if (process.env.NODE_ENV === "development" && debug === "break") {
813
- debugger;
814
- }
815
720
  const [parentProps, parentClassNames] = (0, import_mergeProps.mergeProps)(defaultPropsIn, {}, true);
816
721
  initialSplitStyles = (0, import_getSplitStyles.insertSplitStyles)(
817
722
  parentProps,
@@ -939,9 +844,6 @@ const Spacer = createComponent({
939
844
  },
940
845
  both: {}
941
846
  }
942
- },
943
- defaultVariants: {
944
- direction: "both"
945
847
  }
946
848
  });
947
849
  function spacedChildren({
@@ -987,7 +889,7 @@ function spacedChildren({
987
889
  if (hasSpace) {
988
890
  final.push(
989
891
  createSpacer({
990
- key: `_${index}_before_sep_spacer`,
892
+ key: `_${index}_00tmgui`,
991
893
  direction,
992
894
  space,
993
895
  spaceFlex
@@ -1000,7 +902,7 @@ function spacedChildren({
1000
902
  if (hasSpace) {
1001
903
  final.push(
1002
904
  createSpacer({
1003
- key: `_${index}_after_sep_spacer`,
905
+ key: `_${index}01tmgui`,
1004
906
  direction,
1005
907
  space,
1006
908
  spaceFlex
@@ -1010,7 +912,7 @@ function spacedChildren({
1010
912
  } else {
1011
913
  final.push(
1012
914
  createSpacer({
1013
- key: `_${index}_spacer`,
915
+ key: `_${index}02tmgui`,
1014
916
  direction,
1015
917
  space,
1016
918
  spaceFlex
@@ -1034,37 +936,6 @@ function isUnspaced(child) {
1034
936
  var _a, _b;
1035
937
  return ((_a = child == null ? void 0 : child["type"]) == null ? void 0 : _a["isVisuallyHidden"]) || ((_b = child == null ? void 0 : child["type"]) == null ? void 0 : _b["isUnspaced"]);
1036
938
  }
1037
- function AbsoluteFill(props) {
1038
- return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react_native.View, {
1039
- pointerEvents: "box-none",
1040
- style: absoluteFill,
1041
- children: props.children
1042
- });
1043
- }
1044
- const absoluteFill = {
1045
- position: "absolute",
1046
- top: 0,
1047
- left: 0,
1048
- right: 0,
1049
- bottom: 0
1050
- };
1051
- function processIDRefList(idRefList) {
1052
- return Array.isArray(idRefList) ? idRefList.join(" ") : idRefList;
1053
- }
1054
- const accessibilityRoleToWebRole = {
1055
- adjustable: "slider",
1056
- button: "button",
1057
- header: "heading",
1058
- image: "img",
1059
- imagebutton: null,
1060
- keyboardkey: null,
1061
- label: null,
1062
- link: "link",
1063
- none: "presentation",
1064
- search: "search",
1065
- summary: "region",
1066
- text: null
1067
- };
1068
939
  function addPseudoToStyles(styles, initialPseudos, pseudos, name, force = false) {
1069
940
  const pseudoStyle = pseudos[name];
1070
941
  const shouldNestObject = import_constants.isWeb && name !== "enterStyle" && name !== "exitStyle";
@@ -1165,14 +1036,48 @@ function merge(base, next) {
1165
1036
  }
1166
1037
  }
1167
1038
  }
1039
+ function usePlatformMethods(hostRef) {
1040
+ (0, import_constants.useIsomorphicLayoutEffect)(() => {
1041
+ const node = hostRef.current;
1042
+ if (!node)
1043
+ return;
1044
+ node.measure = (callback) => (0, import_useElementLayout.measureLayout)(node, null, callback);
1045
+ node.measureLayout = (relativeToNode, success) => (0, import_useElementLayout.measureLayout)(node, relativeToNode, success);
1046
+ node.measureInWindow = (callback) => {
1047
+ if (!node)
1048
+ return;
1049
+ setTimeout(() => {
1050
+ const { height, left, top, width } = (0, import_useElementLayout.getRect)(node);
1051
+ callback(left, top, width, height);
1052
+ }, 0);
1053
+ };
1054
+ }, [hostRef]);
1055
+ }
1056
+ const AbsoluteFill = createComponent({
1057
+ componentName: "AbsoluteFill",
1058
+ defaultProps: {
1059
+ ...import_constants2.stackDefaultStyles,
1060
+ flexDirection: "column",
1061
+ position: "absolute",
1062
+ top: 0,
1063
+ right: 0,
1064
+ bottom: 0,
1065
+ left: 0,
1066
+ pointerEvents: "box-none"
1067
+ }
1068
+ });
1069
+ const styleDisplayContents = {
1070
+ display: "contents"
1071
+ };
1072
+ const dontComposePressabilityKeys = {
1073
+ onClick: true
1074
+ };
1168
1075
  // Annotate the CommonJS export names for ESM import in node:
1169
1076
  0 && (module.exports = {
1170
1077
  Spacer,
1171
1078
  Unspaced,
1172
- accessibilityRoleToWebRole,
1173
1079
  createComponent,
1174
1080
  mouseUps,
1175
- processIDRefList,
1176
1081
  spacedChildren
1177
1082
  });
1178
1083
  //# sourceMappingURL=createComponent.js.map