@tamagui/core 1.0.0-beta.187 → 1.0.0-beta.2

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 (273) hide show
  1. package/dist/cjs/Tamagui.js +18 -1
  2. package/dist/cjs/Tamagui.js.map +2 -2
  3. package/dist/cjs/ThemeContext.js +4 -0
  4. package/dist/cjs/ThemeManager.js +30 -14
  5. package/dist/cjs/ThemeManager.js.map +2 -2
  6. package/dist/cjs/conf.js +10 -1
  7. package/dist/cjs/conf.js.map +2 -2
  8. package/dist/cjs/constants/constants.js +6 -0
  9. package/dist/cjs/constants/platform.js +15 -0
  10. package/dist/cjs/constants/platform.js.map +2 -2
  11. package/dist/cjs/constants/rnw.js +4 -0
  12. package/dist/cjs/contexts/ButtonInsideButtonContext.js +4 -0
  13. package/dist/cjs/createComponent.js +156 -130
  14. package/dist/cjs/createComponent.js.map +2 -2
  15. package/dist/cjs/createFont.js +4 -0
  16. package/dist/cjs/createShorthands.js +4 -0
  17. package/dist/cjs/createTamagui.js +56 -27
  18. package/dist/cjs/createTamagui.js.map +2 -2
  19. package/dist/cjs/createTheme.js +4 -0
  20. package/dist/cjs/createTokens.js +7 -6
  21. package/dist/cjs/createTokens.js.map +2 -2
  22. package/dist/cjs/createVariable.js +18 -2
  23. package/dist/cjs/createVariable.js.map +2 -2
  24. package/dist/cjs/defaultComponentState.js +0 -30
  25. package/dist/cjs/defaultComponentState.js.map +3 -3
  26. package/dist/cjs/helpers/RNComponents.js +38 -0
  27. package/dist/cjs/helpers/RNComponents.js.map +7 -0
  28. package/dist/cjs/helpers/addStylesUsingClassname.js +19 -16
  29. package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
  30. package/dist/cjs/helpers/areEqualSets.js +4 -0
  31. package/dist/cjs/helpers/createMediaStyle.js +5 -0
  32. package/dist/cjs/helpers/createPropMapper.js +63 -61
  33. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  34. package/dist/cjs/helpers/createShallowUpdate.js +55 -0
  35. package/dist/cjs/helpers/createShallowUpdate.js.map +7 -0
  36. package/dist/cjs/helpers/createTamaguiProvider.js +5 -5
  37. package/dist/cjs/helpers/createTamaguiProvider.js.map +2 -2
  38. package/dist/cjs/helpers/extendStaticConfig.js +9 -6
  39. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  40. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  41. package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
  42. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  43. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  44. package/dist/cjs/helpers/getSize.js +35 -0
  45. package/dist/cjs/helpers/getSize.js.map +7 -0
  46. package/dist/cjs/helpers/getSplitStyles.js +152 -64
  47. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  48. package/dist/cjs/helpers/getStylesAtomic.js +20 -2
  49. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  50. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  51. package/dist/cjs/helpers/insertStyleRule.js +46 -26
  52. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  53. package/dist/cjs/helpers/isObj.js +4 -0
  54. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  55. package/dist/cjs/helpers/matchMedia.js +4 -0
  56. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  57. package/dist/cjs/helpers/proxyThemeVariables.js +40 -0
  58. package/dist/cjs/helpers/proxyThemeVariables.js.map +7 -0
  59. package/dist/cjs/helpers/themeable.js +7 -2
  60. package/dist/cjs/helpers/themeable.js.map +2 -2
  61. package/dist/cjs/helpers/validate.js +53 -11
  62. package/dist/cjs/helpers/validate.js.map +2 -2
  63. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  64. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  65. package/dist/cjs/hooks/useConstant.js +4 -0
  66. package/dist/cjs/hooks/useFeatures.js +101 -12
  67. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  68. package/dist/cjs/hooks/useIsMounted.js +4 -0
  69. package/dist/cjs/hooks/useIsTouchDevice.js +8 -4
  70. package/dist/cjs/hooks/useIsTouchDevice.js.map +2 -2
  71. package/dist/cjs/hooks/useMedia.js +30 -12
  72. package/dist/cjs/hooks/useMedia.js.map +2 -2
  73. package/dist/cjs/hooks/usePressable.js +4 -0
  74. package/dist/cjs/hooks/useTheme.js +36 -23
  75. package/dist/cjs/hooks/useTheme.js.map +2 -2
  76. package/dist/cjs/hooks/useUnmountEffect.js +4 -0
  77. package/dist/cjs/index.js +15 -0
  78. package/dist/cjs/index.js.map +2 -2
  79. package/dist/cjs/static.js +3 -0
  80. package/dist/cjs/static.js.map +2 -2
  81. package/dist/cjs/styled.js +8 -15
  82. package/dist/cjs/styled.js.map +2 -2
  83. package/dist/cjs/types-rnw.js.map +1 -1
  84. package/dist/cjs/types.js.map +1 -1
  85. package/dist/cjs/views/Stack.js +5 -0
  86. package/dist/cjs/views/Stack.js.map +2 -2
  87. package/dist/cjs/views/Text.js +5 -0
  88. package/dist/cjs/views/Text.js.map +2 -2
  89. package/dist/cjs/views/TextAncestorContext.js +6 -0
  90. package/dist/cjs/views/Theme.js +11 -4
  91. package/dist/cjs/views/Theme.js.map +2 -2
  92. package/dist/cjs/views/ThemeInverse.js +5 -0
  93. package/dist/cjs/views/ThemeProvider.js +6 -1
  94. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  95. package/dist/cjs/views/ThemeReset.js +4 -0
  96. package/dist/esm/Tamagui.js +10 -2
  97. package/dist/esm/Tamagui.js.map +2 -2
  98. package/dist/esm/ThemeManager.js +21 -11
  99. package/dist/esm/ThemeManager.js.map +2 -2
  100. package/dist/esm/conf.js +0 -1
  101. package/dist/esm/conf.js.map +2 -2
  102. package/dist/esm/constants/platform.js +2 -0
  103. package/dist/esm/constants/platform.js.map +2 -2
  104. package/dist/esm/createComponent.js +146 -133
  105. package/dist/esm/createComponent.js.map +2 -2
  106. package/dist/esm/createTamagui.js +53 -28
  107. package/dist/esm/createTamagui.js.map +2 -2
  108. package/dist/esm/createTokens.js +2 -6
  109. package/dist/esm/createTokens.js.map +2 -2
  110. package/dist/esm/createVariable.js +8 -2
  111. package/dist/esm/createVariable.js.map +2 -2
  112. package/dist/esm/defaultComponentState.js +0 -11
  113. package/dist/esm/defaultComponentState.js.map +3 -3
  114. package/dist/esm/helpers/RNComponents.js +12 -0
  115. package/dist/esm/helpers/RNComponents.js.map +7 -0
  116. package/dist/esm/helpers/addStylesUsingClassname.js +16 -18
  117. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  118. package/dist/esm/helpers/createPropMapper.js +59 -61
  119. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  120. package/dist/esm/helpers/createShallowUpdate.js +19 -0
  121. package/dist/esm/helpers/createShallowUpdate.js.map +7 -0
  122. package/dist/esm/helpers/createTamaguiProvider.js +1 -4
  123. package/dist/esm/helpers/createTamaguiProvider.js.map +2 -2
  124. package/dist/esm/helpers/extendStaticConfig.js +9 -6
  125. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  126. package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
  127. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  128. package/dist/esm/helpers/getSize.js +13 -0
  129. package/dist/esm/helpers/getSize.js.map +7 -0
  130. package/dist/esm/helpers/getSplitStyles.js +152 -67
  131. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  132. package/dist/esm/helpers/getStylesAtomic.js +15 -2
  133. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  134. package/dist/esm/helpers/insertStyleRule.js +36 -26
  135. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  136. package/dist/esm/helpers/proxyThemeVariables.js +18 -0
  137. package/dist/esm/helpers/proxyThemeVariables.js.map +7 -0
  138. package/dist/esm/helpers/themeable.js +3 -2
  139. package/dist/esm/helpers/themeable.js.map +2 -2
  140. package/dist/esm/helpers/validate.js +24 -11
  141. package/dist/esm/helpers/validate.js.map +2 -2
  142. package/dist/esm/hooks/useFeatures.js +96 -17
  143. package/dist/esm/hooks/useFeatures.js.map +2 -2
  144. package/dist/esm/hooks/useIsTouchDevice.js +6 -6
  145. package/dist/esm/hooks/useIsTouchDevice.js.map +2 -2
  146. package/dist/esm/hooks/useMedia.js +19 -12
  147. package/dist/esm/hooks/useMedia.js.map +2 -2
  148. package/dist/esm/hooks/useTheme.js +28 -23
  149. package/dist/esm/hooks/useTheme.js.map +2 -2
  150. package/dist/esm/index.js +4 -0
  151. package/dist/esm/index.js.map +2 -2
  152. package/dist/esm/static.js +3 -0
  153. package/dist/esm/static.js.map +2 -2
  154. package/dist/esm/styled.js +4 -12
  155. package/dist/esm/styled.js.map +2 -2
  156. package/dist/esm/views/Stack.js +1 -0
  157. package/dist/esm/views/Stack.js.map +2 -2
  158. package/dist/esm/views/Text.js +1 -0
  159. package/dist/esm/views/Text.js.map +2 -2
  160. package/dist/esm/views/Theme.js +7 -4
  161. package/dist/esm/views/Theme.js.map +2 -2
  162. package/dist/esm/views/ThemeProvider.js +2 -1
  163. package/dist/esm/views/ThemeProvider.js.map +2 -2
  164. package/dist/jsx/Tamagui.js +10 -2
  165. package/dist/jsx/ThemeManager.js +21 -11
  166. package/dist/jsx/conf.js +0 -1
  167. package/dist/jsx/constants/platform.js +2 -0
  168. package/dist/jsx/createComponent.js +139 -127
  169. package/dist/jsx/createTamagui.js +53 -28
  170. package/dist/jsx/createTokens.js +2 -6
  171. package/dist/jsx/createVariable.js +8 -2
  172. package/dist/jsx/defaultComponentState.js +0 -11
  173. package/dist/jsx/helpers/RNComponents.js +11 -0
  174. package/dist/jsx/helpers/addStylesUsingClassname.js +16 -18
  175. package/dist/jsx/helpers/createPropMapper.js +59 -61
  176. package/dist/jsx/helpers/createShallowUpdate.js +18 -0
  177. package/dist/jsx/helpers/createTamaguiProvider.js +1 -2
  178. package/dist/jsx/helpers/extendStaticConfig.js +9 -6
  179. package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
  180. package/dist/jsx/helpers/getSize.js +12 -0
  181. package/dist/jsx/helpers/getSplitStyles.js +152 -67
  182. package/dist/jsx/helpers/getStylesAtomic.js +15 -2
  183. package/dist/jsx/helpers/insertStyleRule.js +36 -26
  184. package/dist/jsx/helpers/proxyThemeVariables.js +17 -0
  185. package/dist/jsx/helpers/themeable.js +3 -3
  186. package/dist/jsx/helpers/validate.js +24 -11
  187. package/dist/jsx/hooks/useFeatures.js +96 -17
  188. package/dist/jsx/hooks/useIsTouchDevice.js +6 -6
  189. package/dist/jsx/hooks/useMedia.js +19 -12
  190. package/dist/jsx/hooks/useTheme.js +28 -23
  191. package/dist/jsx/index.js +4 -0
  192. package/dist/jsx/static.js +3 -0
  193. package/dist/jsx/styled.js +4 -12
  194. package/dist/jsx/views/Stack.js +1 -0
  195. package/dist/jsx/views/Text.js +1 -0
  196. package/dist/jsx/views/Theme.js +7 -4
  197. package/dist/jsx/views/ThemeProvider.js +2 -2
  198. package/package.json +6 -6
  199. package/types/Tamagui.d.ts +18 -1
  200. package/types/Tamagui.d.ts.map +1 -1
  201. package/types/ThemeManager.d.ts +3 -3
  202. package/types/ThemeManager.d.ts.map +1 -1
  203. package/types/conf.d.ts +2 -0
  204. package/types/conf.d.ts.map +1 -1
  205. package/types/constants/platform.d.ts +1 -0
  206. package/types/constants/platform.d.ts.map +1 -1
  207. package/types/createComponent.d.ts +5 -7
  208. package/types/createComponent.d.ts.map +1 -1
  209. package/types/createFont.d.ts +1 -1
  210. package/types/createFont.d.ts.map +1 -1
  211. package/types/createTamagui.d.ts +3 -1
  212. package/types/createTamagui.d.ts.map +1 -1
  213. package/types/createTokens.d.ts +0 -26
  214. package/types/createTokens.d.ts.map +1 -1
  215. package/types/createVariable.d.ts +1 -0
  216. package/types/createVariable.d.ts.map +1 -1
  217. package/types/defaultComponentState.d.ts +0 -12
  218. package/types/defaultComponentState.d.ts.map +1 -1
  219. package/types/helpers/RNComponents.d.ts +2 -0
  220. package/types/helpers/RNComponents.d.ts.map +1 -0
  221. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  222. package/types/helpers/createPropMapper.d.ts +2 -2
  223. package/types/helpers/createPropMapper.d.ts.map +1 -1
  224. package/types/helpers/createShallowUpdate.d.ts +4 -0
  225. package/types/helpers/createShallowUpdate.d.ts.map +1 -0
  226. package/types/helpers/createTamaguiProvider.d.ts +1 -1
  227. package/types/helpers/createTamaguiProvider.d.ts.map +1 -1
  228. package/types/helpers/extendStaticConfig.d.ts +2 -2
  229. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  230. package/types/helpers/getSize.d.ts +3 -0
  231. package/types/helpers/getSize.d.ts.map +1 -0
  232. package/types/helpers/getSplitStyles.d.ts +15 -18
  233. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  234. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  235. package/types/helpers/insertStyleRule.d.ts +2 -1
  236. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  237. package/types/helpers/proxyThemeVariables.d.ts +2 -0
  238. package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
  239. package/types/helpers/themeable.d.ts +3 -1
  240. package/types/helpers/themeable.d.ts.map +1 -1
  241. package/types/helpers/validate.d.ts.map +1 -1
  242. package/types/hooks/useFeatures.d.ts +7 -5
  243. package/types/hooks/useFeatures.d.ts.map +1 -1
  244. package/types/hooks/useMedia.d.ts +2 -6
  245. package/types/hooks/useMedia.d.ts.map +1 -1
  246. package/types/hooks/useTheme.d.ts +1 -1
  247. package/types/hooks/useTheme.d.ts.map +1 -1
  248. package/types/index.d.ts +2 -0
  249. package/types/index.d.ts.map +1 -1
  250. package/types/static.d.ts +3 -0
  251. package/types/static.d.ts.map +1 -1
  252. package/types/styled.d.ts +13 -8
  253. package/types/styled.d.ts.map +1 -1
  254. package/types/types-rnw.d.ts +0 -5
  255. package/types/types-rnw.d.ts.map +1 -1
  256. package/types/types.d.ts +147 -106
  257. package/types/types.d.ts.map +1 -1
  258. package/types/views/Stack.d.ts +2 -2
  259. package/types/views/Stack.d.ts.map +1 -1
  260. package/types/views/Text.d.ts +2 -2
  261. package/types/views/Text.d.ts.map +1 -1
  262. package/types/views/Theme.d.ts +1 -0
  263. package/types/views/Theme.d.ts.map +1 -1
  264. package/types/views/ThemeProvider.d.ts +1 -0
  265. package/types/views/ThemeProvider.d.ts.map +1 -1
  266. package/LICENSE +0 -21
  267. package/dist/cjs/spacedChildren.js +0 -86
  268. package/dist/cjs/spacedChildren.js.map +0 -7
  269. package/dist/esm/spacedChildren.js +0 -52
  270. package/dist/esm/spacedChildren.js.map +0 -7
  271. package/dist/jsx/spacedChildren.js +0 -44
  272. package/types/spacedChildren.d.ts +0 -9
  273. package/types/spacedChildren.d.ts.map +0 -1
@@ -66,91 +66,110 @@ var import_constants = require("./constants/constants");
66
66
  var import_platform = require("./constants/platform");
67
67
  var import_rnw = require("./constants/rnw");
68
68
  var import_createVariable = require("./createVariable");
69
- var import_defaultComponentState = require("./defaultComponentState");
69
+ var import_createShallowUpdate = require("./helpers/createShallowUpdate");
70
70
  var import_extendStaticConfig = require("./helpers/extendStaticConfig");
71
71
  var import_getSplitStyles = require("./helpers/getSplitStyles");
72
+ var import_insertStyleRule = require("./helpers/insertStyleRule");
73
+ var import_proxyThemeVariables = require("./helpers/proxyThemeVariables");
72
74
  var import_wrapThemeManagerContext = require("./helpers/wrapThemeManagerContext");
73
75
  var import_useFeatures = require("./hooks/useFeatures");
76
+ var import_useIsTouchDevice = require("./hooks/useIsTouchDevice");
74
77
  var import_usePressable = require("./hooks/usePressable");
75
78
  var import_useTheme = require("./hooks/useTheme");
76
79
  var import_TextAncestorContext = require("./views/TextAncestorContext");
80
+ import_react.default["keep"];
81
+ const defaultComponentState = {
82
+ hover: false,
83
+ press: false,
84
+ pressIn: false,
85
+ focus: false,
86
+ mounted: false,
87
+ animation: null
88
+ };
77
89
  const mouseUps = /* @__PURE__ */ new Set();
78
90
  if (typeof document !== "undefined") {
79
91
  document.addEventListener("mouseup", () => {
80
92
  mouseUps.forEach((x) => x());
81
93
  mouseUps.clear();
82
94
  });
95
+ document.addEventListener("touchend", () => {
96
+ mouseUps.forEach((x) => x());
97
+ mouseUps.clear();
98
+ });
99
+ document.addEventListener("touchcancel", () => {
100
+ mouseUps.forEach((x) => x());
101
+ mouseUps.clear();
102
+ });
83
103
  }
84
- function createShallowUpdate(setter) {
85
- return (next) => {
86
- setter((prev) => {
87
- for (const key in next) {
88
- if (prev[key] !== next[key]) {
89
- return __spreadValues(__spreadValues({}, prev), next);
90
- }
91
- }
92
- return prev;
93
- });
94
- };
95
- }
96
- __name(createShallowUpdate, "createShallowUpdate");
97
- function createComponent(configIn) {
98
- let staticConfig;
99
- if ("parsed" in configIn) {
100
- staticConfig = configIn;
101
- } else {
102
- staticConfig = (0, import_extendStaticConfig.parseStaticConfig)(configIn);
104
+ function mergeShorthands({ defaultProps }, { shorthands }) {
105
+ for (const key in defaultProps) {
106
+ defaultProps[shorthands[key] || key] = defaultProps[key];
103
107
  }
104
- const { Component, validStyles, isText, isZStack, componentName } = staticConfig;
105
- const componentClassName = `is_${componentName}`;
106
- const validStyleProps = validStyles || import_helpers.stylePropsView;
108
+ }
109
+ __name(mergeShorthands, "mergeShorthands");
110
+ let initialTheme;
111
+ function createComponent(configIn, ParentComponent) {
112
+ const staticConfig = (() => {
113
+ const config = (0, import_extendStaticConfig.extendStaticConfig)(configIn, ParentComponent);
114
+ if ("parsed" in config) {
115
+ return config;
116
+ } else {
117
+ return (0, import_extendStaticConfig.parseStaticConfig)(config);
118
+ }
119
+ })();
120
+ const componentClassName = `is_${staticConfig.componentName}`;
107
121
  let tamaguiConfig;
108
122
  let AnimatedText;
109
123
  let AnimatedView;
110
- let avoidClasses = false;
111
- let defaultPseudos = {};
124
+ let avoidClasses = true;
112
125
  let defaultNativeStyle;
113
- let defaultNativeStyleSheet = null;
114
- let defaultsClassName = null;
115
- let initialTheme;
116
- let splitStyleResult = null;
126
+ let defaultNativeStyleSheet;
127
+ let tamaguiDefaultProps;
128
+ let initialSplitStyles;
117
129
  function addPseudoToStyles(styles, name, pseudos) {
118
130
  const pseudoStyle = pseudos[name];
131
+ const shouldNestObject = import_platform.isWeb && name !== "enterStyle" && name !== "exitStyle";
119
132
  if (pseudoStyle) {
120
- styles.push(import_platform.isWeb ? { [name]: pseudoStyle } : pseudoStyle);
133
+ styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle);
121
134
  }
122
- const defaultPseudoStyle = defaultPseudos[name];
135
+ const defaultPseudoStyle = initialSplitStyles.pseudos[name];
123
136
  if (defaultPseudoStyle) {
124
- styles.push(import_platform.isWeb ? { [name]: defaultPseudoStyle } : defaultPseudoStyle);
137
+ styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle);
125
138
  }
126
139
  }
127
140
  __name(addPseudoToStyles, "addPseudoToStyles");
128
141
  const component = (0, import_react.forwardRef)((props, forwardedRef) => {
129
142
  var _a, _c, _d, _e;
143
+ props = tamaguiDefaultProps ? __spreadValues(__spreadValues({}, tamaguiDefaultProps), props) : props;
144
+ const { Component, componentName, isText, isZStack } = staticConfig;
130
145
  if (process.env.NODE_ENV === "development") {
131
146
  if (props["debug"]) {
132
- console.warn(componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", " debug prop on:", { props: Object.entries(props) });
147
+ console.warn(staticConfig.componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
148
+ console.log("props in:", props, Object.keys(props));
133
149
  if (props["debug"] === "break")
134
150
  debugger;
135
151
  }
136
152
  }
137
153
  const forceUpdate = (0, import_use_force_update.useForceUpdate)();
138
- const theme = (0, import_useTheme.useTheme)(props.theme, componentName, props, forceUpdate);
139
- const [state, set_] = (0, import_react.useState)(import_defaultComponentState.defaultComponentState);
140
- const setStateShallow = createShallowUpdate(set_);
141
- const shouldAvoidClasses = !!(state.animation && avoidClasses);
142
- const splitInfo = (0, import_getSplitStyles.getSplitStyles)(props, staticConfig, theme, shouldAvoidClasses ? __spreadProps(__spreadValues({}, state), { noClassNames: true, resolveVariablesAs: "value" }) : state, defaultsClassName);
143
- const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitInfo;
154
+ const theme = (0, import_useTheme.useTheme)(props.theme, staticConfig.componentName, props, forceUpdate);
155
+ const [state, set_] = (0, import_react.useState)(defaultComponentState);
156
+ const setStateShallow = (0, import_createShallowUpdate.createShallowUpdate)(set_);
157
+ const shouldAvoidClasses = !!(props.animation && avoidClasses);
158
+ const splitStyles = (0, import_getSplitStyles.useSplitStyles)(props, staticConfig, theme, shouldAvoidClasses ? __spreadProps(__spreadValues({}, state), { noClassNames: true, resolveVariablesAs: "value" }) : state, shouldAvoidClasses ? null : initialSplitStyles.classNames);
159
+ const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles;
144
160
  const useAnimations = (_a = tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
145
161
  const isAnimated = !!(useAnimations && props.animation);
146
- const styleWithPseudos = props.animation ? merge(__spreadValues(__spreadValues({}, defaultNativeStyle), style), state.hover && pseudos.hoverStyle, state.press && pseudos.pressStyle, state.focus && pseudos.focusStyle, ...Object.values(medias)) : null;
162
+ const hasEnterStyle = !!props.enterStyle;
147
163
  const features = (0, import_useFeatures.useFeatures)(props, {
148
164
  forceUpdate,
149
165
  setStateShallow,
150
166
  useAnimations,
151
167
  state,
152
- style: styleWithPseudos,
153
- pseudos
168
+ style: props.animation ? __spreadValues(__spreadValues({}, defaultNativeStyle), style) : null,
169
+ pseudos,
170
+ staticConfig,
171
+ theme,
172
+ onDidAnimate: props.onDidAnimate
154
173
  });
155
174
  const _b = viewPropsIn, {
156
175
  tag,
@@ -189,6 +208,7 @@ function createComponent(configIn) {
189
208
  accessibilityRole,
190
209
  collapsable,
191
210
  focusable,
211
+ onClick,
192
212
  theme: _themeProp,
193
213
  defaultVariants,
194
214
  onLayout
@@ -229,6 +249,7 @@ function createComponent(configIn) {
229
249
  "accessibilityRole",
230
250
  "collapsable",
231
251
  "focusable",
252
+ "onClick",
232
253
  "theme",
233
254
  "defaultVariants",
234
255
  "onLayout"
@@ -243,15 +264,14 @@ function createComponent(configIn) {
243
264
  }
244
265
  const hasTextAncestor = import_platform.isWeb ? (0, import_react.useContext)(import_TextAncestorContext.TextAncestorContext) : false;
245
266
  const hostRef = (0, import_react.useRef)(null);
246
- const hasEnterStyle = !!props.enterStyle;
247
267
  const internal = (0, import_react.useRef)();
248
268
  if (!internal.current) {
249
269
  internal.current = {
250
270
  isMounted: true
251
271
  };
252
272
  }
253
- (0, import_react.useEffect)(() => {
254
- if (hasEnterStyle) {
273
+ (0, import_platform.useIsomorphicLayoutEffect)(() => {
274
+ if (typeof window !== "undefined" && (hasEnterStyle || props.animation)) {
255
275
  setStateShallow({
256
276
  mounted: true
257
277
  });
@@ -261,7 +281,7 @@ function createComponent(configIn) {
261
281
  mouseUps.delete(unPress);
262
282
  internal.current.isMounted = false;
263
283
  };
264
- }, []);
284
+ }, [hasEnterStyle, props.animation]);
265
285
  if (nativeID) {
266
286
  viewProps.id = nativeID;
267
287
  }
@@ -315,6 +335,7 @@ function createComponent(configIn) {
315
335
  medias
316
336
  ];
317
337
  if (!animationStyles) {
338
+ !state.mounted && addPseudoToStyles(styles, "enterStyle", pseudos);
318
339
  state.hover && addPseudoToStyles(styles, "hoverStyle", pseudos);
319
340
  state.focus && addPseudoToStyles(styles, "focusStyle", pseudos);
320
341
  state.press && addPseudoToStyles(styles, "pressStyle", pseudos);
@@ -333,10 +354,11 @@ function createComponent(configIn) {
333
354
  const className = classList.join(" ");
334
355
  if (process.env.NODE_ENV === "development") {
335
356
  if (props["debug"]) {
336
- console.log(" \xBB className", { isStringElement, pseudos, state, defaultsClassName, classNames, propsClassName: props.className, style, classList, className: className.trim().split(" "), themeClassName: theme.className });
357
+ console.log(" \xBB className", { isStringElement, pseudos, state, classNames, propsClassName: props.className, style, classList, className: className.trim().split(" "), themeClassName: theme.className, values: Object.fromEntries(Object.entries(classNames).map(([k, v]) => [v, (0, import_insertStyleRule.getAllSelectors)()[v]])) });
337
358
  }
338
359
  }
339
360
  viewProps.className = className;
361
+ viewProps.style = animationStyles;
340
362
  } else {
341
363
  viewProps.style = styles;
342
364
  }
@@ -373,8 +395,10 @@ function createComponent(configIn) {
373
395
  viewProps.ref = forwardedRef;
374
396
  }
375
397
  }
376
- const attachPress = !!(pseudos && pseudos.pressStyle || onPress || onPressOut || onPressIn);
377
- const isHoverable = import_platform.isWeb && !import_platform.isTouchDevice;
398
+ const initialPseudos = initialSplitStyles.pseudos;
399
+ const attachPress = !!(pseudos && pseudos.pressStyle || initialPseudos && initialPseudos.pressStyle || onPress || onPressOut || onPressIn || onClick);
400
+ const isTouch = (0, import_useIsTouchDevice.useIsTouchDevice)();
401
+ const isHoverable = import_platform.isWeb && !isTouch;
378
402
  const attachHover = isHoverable && !!(pseudos && pseudos.hoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave);
379
403
  const pressEventKey = isStringElement ? "onClick" : "onPress";
380
404
  const shouldAttach = attachPress || attachHover || "pressStyle" in props || "onPress" in props || "onPressIn" in props || "onPressOut" in props || import_platform.isWeb && ("hoverStyle" in props || "onHoverIn" in props || "onHoverOut" in props || "onMouseEnter" in props || "onMouseLeave" in props);
@@ -430,8 +454,12 @@ function createComponent(configIn) {
430
454
  });
431
455
  onPressIn == null ? void 0 : onPressIn(e);
432
456
  onMouseDown == null ? void 0 : onMouseDown(e);
457
+ if (import_platform.isWeb) {
458
+ mouseUps.add(unPress);
459
+ }
433
460
  } : null,
434
461
  [pressEventKey]: attachPress ? (e) => {
462
+ onClick == null ? void 0 : onClick(e);
435
463
  onPress == null ? void 0 : onPress(e);
436
464
  unPress();
437
465
  onPressOut == null ? void 0 : onPressOut(e);
@@ -454,22 +482,6 @@ function createComponent(configIn) {
454
482
  }) : {
455
483
  disabled: true
456
484
  });
457
- if (events) {
458
- if (!isStringElement) {
459
- Object.assign(viewProps, pressProps);
460
- } else {
461
- Object.assign(viewProps, events);
462
- }
463
- if (import_platform.isWeb && isHoverable) {
464
- childEls = /* @__PURE__ */ import_react.default.createElement("span", {
465
- style: {
466
- display: "contents"
467
- },
468
- onMouseEnter: events.onMouseEnter,
469
- onMouseLeave: events.onMouseLeave
470
- }, children);
471
- }
472
- }
473
485
  let content;
474
486
  if (import_platform.isWeb) {
475
487
  if (staticConfig.isReactNativeWeb) {
@@ -485,11 +497,28 @@ function createComponent(configIn) {
485
497
  }
486
498
  }
487
499
  }
500
+ if (events) {
501
+ if (!isStringElement) {
502
+ Object.assign(viewProps, pressProps);
503
+ } else {
504
+ Object.assign(viewProps, events);
505
+ }
506
+ }
488
507
  content = (0, import_react.createElement)(ViewComponent, viewProps, childEls);
508
+ if (import_platform.isWeb && events && attachHover) {
509
+ content = /* @__PURE__ */ import_react.default.createElement("span", {
510
+ className: "tui_Hoverable",
511
+ style: {
512
+ display: "contents"
513
+ },
514
+ onMouseEnter: events.onMouseEnter,
515
+ onMouseLeave: events.onMouseLeave
516
+ }, content);
517
+ }
489
518
  if (process.env.NODE_ENV === "development") {
490
519
  if (props["debug"]) {
491
520
  viewProps["debug"] = true;
492
- console.log(" \xBB ", __spreadValues({ propsIn: __spreadValues({}, props), propsOut: __spreadValues({}, viewProps), animationStyles, isStringElement, classNamesIn: (_d = props.className) == null ? void 0 : _d.split(" "), classNamesOut: (_e = viewProps.className) == null ? void 0 : _e.split(" "), pressProps, events, shouldAttach, ViewComponent, viewProps, state, styles, pseudos, content, childEls, shouldAvoidClasses, animation: props.animation, style, defaultNativeStyle, splitStyleResult }, typeof window !== "undefined" ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null));
521
+ console.log(" \xBB ", __spreadValues({ propsIn: __spreadValues({}, props), propsOut: __spreadValues({}, viewProps), state, splitStyles, animationStyles, isStringElement, classNamesIn: (_d = props.className) == null ? void 0 : _d.split(" "), classNamesOut: (_e = viewProps.className) == null ? void 0 : _e.split(" "), pressProps, events, shouldAttach, ViewComponent, viewProps, styles, pseudos, content, childEls, shouldAvoidClasses, avoidClasses, animation: props.animation, style, defaultNativeStyle, initialSplitStyles }, typeof window !== "undefined" ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null));
493
522
  }
494
523
  }
495
524
  if (features.length) {
@@ -497,23 +526,28 @@ function createComponent(configIn) {
497
526
  }
498
527
  return content;
499
528
  });
529
+ component.displayName = staticConfig.componentName;
500
530
  (0, import_conf.onConfiguredOnce)((conf) => {
501
531
  var _a, _b, _c, _d;
502
- const shouldDebug = (_a = staticConfig.defaultProps) == null ? void 0 : _a.debug;
532
+ if (process.env.IS_STATIC === "is_static") {
533
+ return;
534
+ }
503
535
  tamaguiConfig = conf;
504
- avoidClasses = !!((_b = tamaguiConfig.animations) == null ? void 0 : _b.avoidClasses);
505
- AnimatedText = (_c = tamaguiConfig.animations) == null ? void 0 : _c.Text;
506
- AnimatedView = (_d = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _d.View;
507
- initialTheme = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]];
508
- splitStyleResult = (0, import_getSplitStyles.getSplitStyles)(staticConfig.defaultProps, staticConfig, initialTheme, {
536
+ mergeShorthands(staticConfig, tamaguiConfig);
537
+ avoidClasses = !!((_a = tamaguiConfig.animations) == null ? void 0 : _a.avoidClasses);
538
+ AnimatedText = (_b = tamaguiConfig.animations) == null ? void 0 : _b.Text;
539
+ AnimatedView = (_c = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _c.View;
540
+ initialTheme = initialTheme || (0, import_proxyThemeVariables.proxyThemeVariables)(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]]);
541
+ initialSplitStyles = (0, import_getSplitStyles.insertSplitStyles)(staticConfig.defaultProps, staticConfig, initialTheme, {
509
542
  mounted: true,
510
- resolveVariablesAs: "variable"
543
+ hover: false,
544
+ press: false,
545
+ pressIn: false,
546
+ focus: false,
547
+ resolveVariablesAs: "both",
548
+ keepVariantsAsProps: true
511
549
  });
512
- const { classNames, pseudos, style, viewProps } = splitStyleResult;
513
- if (import_platform.isWeb) {
514
- defaultsClassName = classNames;
515
- }
516
- defaultPseudos = pseudos;
550
+ const { style, viewProps } = initialSplitStyles;
517
551
  defaultNativeStyle = {};
518
552
  for (const key in style) {
519
553
  const v = style[key];
@@ -522,10 +556,17 @@ function createComponent(configIn) {
522
556
  defaultNativeStyleSheet = import_react_native.StyleSheet.create({
523
557
  base: defaultNativeStyle
524
558
  });
525
- component.displayName = staticConfig.componentName;
526
- component.defaultProps = __spreadValues(__spreadValues({}, viewProps), component.defaultProps);
527
- if (process.env.NODE_ENV === "development" && shouldDebug && process.env.IS_STATIC !== "is_static") {
528
- console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, __spreadValues({ staticConfig }, splitStyleResult));
559
+ const defaults = __spreadValues(__spreadValues({}, viewProps), component.defaultProps);
560
+ if (Object.keys(defaults).length) {
561
+ tamaguiDefaultProps = defaults;
562
+ }
563
+ if (process.env.NODE_ENV === "development" && ((_d = staticConfig.defaultProps) == null ? void 0 : _d.debug)) {
564
+ if (process.env.IS_STATIC !== "is_static") {
565
+ console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, {
566
+ staticConfig,
567
+ initialSplitStyles
568
+ });
569
+ }
529
570
  }
530
571
  });
531
572
  let res = component;
@@ -533,20 +574,26 @@ function createComponent(configIn) {
533
574
  res = (0, import_react.memo)(res);
534
575
  }
535
576
  res["staticConfig"] = __spreadValues({
536
- validStyles: validStyleProps
577
+ validStyles: staticConfig.validStyles || import_helpers.stylePropsView
537
578
  }, staticConfig);
538
- res["extractable"] = (Component2, conf) => {
539
- Component2["staticConfig"] = (0, import_extendStaticConfig.extendStaticConfig)(res, __spreadProps(__spreadValues({}, conf), {
579
+ if (process.env.NODE_ENV === "development") {
580
+ res["whyDidYouRender"] = true;
581
+ }
582
+ res["extractable"] = (Component, conf) => {
583
+ Component["staticConfig"] = (0, import_extendStaticConfig.extendStaticConfig)(__spreadProps(__spreadValues({
584
+ Component
585
+ }, conf), {
540
586
  neverFlatten: true,
541
- defaultProps: __spreadValues(__spreadValues({}, Component2.defaultProps), conf == null ? void 0 : conf.defaultProps)
542
- }));
543
- return Component2;
587
+ defaultProps: __spreadValues(__spreadValues({}, Component.defaultProps), conf == null ? void 0 : conf.defaultProps)
588
+ }), res);
589
+ return Component;
544
590
  };
545
591
  return res;
546
592
  }
547
593
  __name(createComponent, "createComponent");
548
594
  const Spacer = createComponent({
549
595
  memo: true,
596
+ componentName: "Spacer",
550
597
  defaultProps: __spreadProps(__spreadValues({}, import_constants.stackDefaultStyles), {
551
598
  size: true
552
599
  }),
@@ -623,47 +670,26 @@ function spacedChildren({
623
670
  return next;
624
671
  }
625
672
  __name(spacedChildren, "spacedChildren");
626
- const merge = /* @__PURE__ */ __name((...styles) => {
627
- if (!styles[0])
628
- return;
629
- const res = {};
630
- const len = styles.length;
631
- for (let i = len - 1; i >= 0; i--) {
632
- const cur = styles[i];
633
- if (!cur)
634
- continue;
635
- for (const key in cur) {
636
- const val = cur[key];
637
- if (key !== "transform") {
638
- if (!(key in res)) {
639
- res[key] = val;
640
- }
641
- continue;
642
- }
643
- if (!res.transform) {
644
- res.transform = val;
645
- continue;
646
- }
647
- for (const t of val) {
648
- const tkey = Object.keys(t)[0];
649
- if (res.transform.find((existing) => tkey in existing)) {
650
- continue;
651
- }
652
- res.transform.push(t);
653
- }
673
+ function AbsoluteFill(props) {
674
+ return import_platform.isWeb ? /* @__PURE__ */ import_react.default.createElement("div", {
675
+ style: {
676
+ position: "absolute",
677
+ top: 0,
678
+ left: 0,
679
+ right: 0,
680
+ bottom: 0
654
681
  }
655
- }
656
- return res;
657
- }, "merge");
658
- const AbsoluteFill = /* @__PURE__ */ __name((props) => import_platform.isWeb ? /* @__PURE__ */ import_react.default.createElement("div", {
659
- style: {
660
- position: "absolute",
661
- top: 0,
662
- left: 0,
663
- right: 0,
664
- bottom: 0
665
- }
666
- }, props.children) : /* @__PURE__ */ import_react.default.createElement(import_react_native.View, {
667
- style: import_react_native.StyleSheet.absoluteFill
668
- }, props.child), "AbsoluteFill");
682
+ }, props.children) : /* @__PURE__ */ import_react.default.createElement(import_react_native.View, {
683
+ style: import_react_native.StyleSheet.absoluteFill
684
+ }, props.child);
685
+ }
686
+ __name(AbsoluteFill, "AbsoluteFill");
687
+ // Annotate the CommonJS export names for ESM import in node:
688
+ 0 && (module.exports = {
689
+ AbsoluteFill,
690
+ Spacer,
691
+ createComponent,
692
+ mouseUps,
693
+ spacedChildren
694
+ });
669
695
  //# sourceMappingURL=createComponent.js.map