@tamagui/core 1.0.0-beta.222 → 1.0.0-canary.204

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 (248) hide show
  1. package/dist/cjs/Tamagui.js +13 -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 +91 -61
  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 +55 -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/helpers/RNComponents.js +4 -0
  25. package/dist/cjs/helpers/addStylesUsingClassname.js +8 -0
  26. package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
  27. package/dist/cjs/helpers/areEqualSets.js +4 -0
  28. package/dist/cjs/helpers/createMediaStyle.js +5 -2
  29. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  30. package/dist/cjs/helpers/createPropMapper.js +44 -41
  31. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  32. package/dist/cjs/helpers/createShallowUpdate.js +4 -0
  33. package/dist/cjs/helpers/createTamaguiProvider.js +4 -0
  34. package/dist/cjs/helpers/extendStaticConfig.js +9 -6
  35. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  36. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  37. package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
  38. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  39. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  40. package/dist/cjs/{constants/pseudos.js → helpers/getSize.js} +17 -19
  41. package/dist/cjs/helpers/getSize.js.map +7 -0
  42. package/dist/cjs/helpers/getSplitStyles.js +101 -61
  43. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  44. package/dist/cjs/helpers/getStylesAtomic.js +20 -3
  45. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  46. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  47. package/dist/cjs/helpers/insertStyleRule.js +41 -26
  48. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  49. package/dist/cjs/helpers/isObj.js +4 -0
  50. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  51. package/dist/cjs/helpers/matchMedia.js +4 -0
  52. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  53. package/dist/cjs/helpers/proxyThemeVariables.js +40 -0
  54. package/dist/cjs/helpers/proxyThemeVariables.js.map +7 -0
  55. package/dist/cjs/helpers/themeable.js +7 -2
  56. package/dist/cjs/helpers/themeable.js.map +2 -2
  57. package/dist/cjs/helpers/validate.js +53 -11
  58. package/dist/cjs/helpers/validate.js.map +2 -2
  59. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  60. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  61. package/dist/cjs/hooks/useConstant.js +4 -0
  62. package/dist/cjs/hooks/useFeatures.js +8 -5
  63. package/dist/cjs/hooks/useFeatures.js.map +2 -2
  64. package/dist/cjs/hooks/useIsMounted.js +4 -0
  65. package/dist/cjs/hooks/useIsTouchDevice.js +4 -0
  66. package/dist/cjs/hooks/useMedia.js +31 -12
  67. package/dist/cjs/hooks/useMedia.js.map +2 -2
  68. package/dist/cjs/hooks/usePressable.js +4 -0
  69. package/dist/cjs/hooks/useTheme.js +30 -16
  70. package/dist/cjs/hooks/useTheme.js.map +2 -2
  71. package/dist/cjs/hooks/useUnmountEffect.js +4 -0
  72. package/dist/cjs/index.js +15 -0
  73. package/dist/cjs/index.js.map +2 -2
  74. package/dist/cjs/static.js +3 -0
  75. package/dist/cjs/static.js.map +2 -2
  76. package/dist/cjs/styled.js +7 -4
  77. package/dist/cjs/styled.js.map +2 -2
  78. package/dist/cjs/types.js.map +1 -1
  79. package/dist/cjs/views/Stack.js +4 -0
  80. package/dist/cjs/views/Text.js +4 -0
  81. package/dist/cjs/views/TextAncestorContext.js +6 -0
  82. package/dist/cjs/views/Theme.js +7 -3
  83. package/dist/cjs/views/Theme.js.map +2 -2
  84. package/dist/cjs/views/ThemeInverse.js +5 -0
  85. package/dist/cjs/views/ThemeProvider.js +6 -1
  86. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  87. package/dist/cjs/views/ThemeReset.js +4 -0
  88. package/dist/esm/Tamagui.js +8 -2
  89. package/dist/esm/Tamagui.js.map +2 -2
  90. package/dist/esm/ThemeManager.js +21 -11
  91. package/dist/esm/ThemeManager.js.map +2 -2
  92. package/dist/esm/conf.js +0 -1
  93. package/dist/esm/conf.js.map +2 -2
  94. package/dist/esm/constants/platform.js +2 -0
  95. package/dist/esm/constants/platform.js.map +2 -2
  96. package/dist/esm/createComponent.js +81 -61
  97. package/dist/esm/createComponent.js.map +2 -2
  98. package/dist/esm/createTamagui.js +51 -27
  99. package/dist/esm/createTamagui.js.map +2 -2
  100. package/dist/esm/createTokens.js +2 -6
  101. package/dist/esm/createTokens.js.map +2 -2
  102. package/dist/esm/createVariable.js +8 -2
  103. package/dist/esm/createVariable.js.map +2 -2
  104. package/dist/esm/helpers/addStylesUsingClassname.js +4 -1
  105. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  106. package/dist/esm/helpers/createMediaStyle.js +0 -2
  107. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  108. package/dist/esm/helpers/createPropMapper.js +40 -41
  109. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  110. package/dist/esm/helpers/extendStaticConfig.js +9 -6
  111. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  112. package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
  113. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  114. package/dist/esm/helpers/getSize.js +13 -0
  115. package/dist/esm/helpers/getSize.js.map +7 -0
  116. package/dist/esm/helpers/getSplitStyles.js +97 -63
  117. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  118. package/dist/esm/helpers/getStylesAtomic.js +15 -3
  119. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  120. package/dist/esm/helpers/insertStyleRule.js +31 -26
  121. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  122. package/dist/esm/helpers/proxyThemeVariables.js +18 -0
  123. package/dist/esm/helpers/proxyThemeVariables.js.map +7 -0
  124. package/dist/esm/helpers/themeable.js +3 -2
  125. package/dist/esm/helpers/themeable.js.map +2 -2
  126. package/dist/esm/helpers/validate.js +24 -11
  127. package/dist/esm/helpers/validate.js.map +2 -2
  128. package/dist/esm/hooks/useFeatures.js +3 -5
  129. package/dist/esm/hooks/useFeatures.js.map +2 -2
  130. package/dist/esm/hooks/useMedia.js +20 -12
  131. package/dist/esm/hooks/useMedia.js.map +2 -2
  132. package/dist/esm/hooks/useTheme.js +22 -16
  133. package/dist/esm/hooks/useTheme.js.map +2 -2
  134. package/dist/esm/index.js +4 -0
  135. package/dist/esm/index.js.map +2 -2
  136. package/dist/esm/static.js +3 -0
  137. package/dist/esm/static.js.map +2 -2
  138. package/dist/esm/styled.js +3 -4
  139. package/dist/esm/styled.js.map +2 -2
  140. package/dist/esm/views/Theme.js +3 -3
  141. package/dist/esm/views/Theme.js.map +2 -2
  142. package/dist/esm/views/ThemeProvider.js +2 -1
  143. package/dist/esm/views/ThemeProvider.js.map +2 -2
  144. package/dist/jsx/Tamagui.js +8 -2
  145. package/dist/jsx/ThemeManager.js +21 -11
  146. package/dist/jsx/conf.js +0 -1
  147. package/dist/jsx/constants/platform.js +2 -0
  148. package/dist/jsx/createComponent.js +77 -57
  149. package/dist/jsx/createTamagui.js +51 -27
  150. package/dist/jsx/createTokens.js +2 -6
  151. package/dist/jsx/createVariable.js +8 -2
  152. package/dist/jsx/helpers/addStylesUsingClassname.js +4 -1
  153. package/dist/jsx/helpers/createMediaStyle.js +0 -2
  154. package/dist/jsx/helpers/createPropMapper.js +40 -41
  155. package/dist/jsx/helpers/extendStaticConfig.js +9 -6
  156. package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
  157. package/dist/jsx/helpers/getSize.js +12 -0
  158. package/dist/jsx/helpers/getSplitStyles.js +97 -63
  159. package/dist/jsx/helpers/getStylesAtomic.js +15 -3
  160. package/dist/jsx/helpers/insertStyleRule.js +31 -26
  161. package/dist/jsx/helpers/proxyThemeVariables.js +17 -0
  162. package/dist/jsx/helpers/themeable.js +3 -3
  163. package/dist/jsx/helpers/validate.js +24 -11
  164. package/dist/jsx/hooks/useFeatures.js +3 -5
  165. package/dist/jsx/hooks/useMedia.js +20 -12
  166. package/dist/jsx/hooks/useTheme.js +22 -16
  167. package/dist/jsx/index.js +4 -0
  168. package/dist/jsx/static.js +3 -0
  169. package/dist/jsx/styled.js +3 -4
  170. package/dist/jsx/views/Theme.js +4 -4
  171. package/dist/jsx/views/ThemeProvider.js +2 -2
  172. package/package.json +6 -6
  173. package/types/Tamagui.d.ts +16 -1
  174. package/types/Tamagui.d.ts.map +1 -1
  175. package/types/ThemeManager.d.ts +3 -3
  176. package/types/ThemeManager.d.ts.map +1 -1
  177. package/types/conf.d.ts +2 -0
  178. package/types/conf.d.ts.map +1 -1
  179. package/types/constants/platform.d.ts +1 -0
  180. package/types/constants/platform.d.ts.map +1 -1
  181. package/types/createComponent.d.ts +3 -4
  182. package/types/createComponent.d.ts.map +1 -1
  183. package/types/createTamagui.d.ts +2 -1
  184. package/types/createTamagui.d.ts.map +1 -1
  185. package/types/createTokens.d.ts +0 -26
  186. package/types/createTokens.d.ts.map +1 -1
  187. package/types/createVariable.d.ts +1 -0
  188. package/types/createVariable.d.ts.map +1 -1
  189. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  190. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  191. package/types/helpers/createPropMapper.d.ts +1 -1
  192. package/types/helpers/createPropMapper.d.ts.map +1 -1
  193. package/types/helpers/extendStaticConfig.d.ts +2 -2
  194. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  195. package/types/helpers/getSize.d.ts +3 -0
  196. package/types/helpers/getSize.d.ts.map +1 -0
  197. package/types/helpers/getSplitStyles.d.ts +4 -1
  198. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  199. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  200. package/types/helpers/insertStyleRule.d.ts +2 -1
  201. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  202. package/types/helpers/proxyThemeVariables.d.ts +2 -0
  203. package/types/helpers/proxyThemeVariables.d.ts.map +1 -0
  204. package/types/helpers/themeable.d.ts +3 -1
  205. package/types/helpers/themeable.d.ts.map +1 -1
  206. package/types/helpers/validate.d.ts.map +1 -1
  207. package/types/hooks/useMedia.d.ts +3 -3
  208. package/types/hooks/useMedia.d.ts.map +1 -1
  209. package/types/hooks/useTheme.d.ts +1 -1
  210. package/types/hooks/useTheme.d.ts.map +1 -1
  211. package/types/index.d.ts +2 -0
  212. package/types/index.d.ts.map +1 -1
  213. package/types/static.d.ts +3 -0
  214. package/types/static.d.ts.map +1 -1
  215. package/types/styled.d.ts +12 -3
  216. package/types/styled.d.ts.map +1 -1
  217. package/types/types.d.ts +66 -40
  218. package/types/types.d.ts.map +1 -1
  219. package/types/views/Theme.d.ts +1 -0
  220. package/types/views/Theme.d.ts.map +1 -1
  221. package/types/views/ThemeProvider.d.ts +1 -0
  222. package/types/views/ThemeProvider.d.ts.map +1 -1
  223. package/dist/cjs/constants/pseudos.js.map +0 -7
  224. package/dist/cjs/createShallowUpdate.js +0 -1
  225. package/dist/cjs/createShallowUpdate.js.map +0 -7
  226. package/dist/cjs/devtools.js +0 -32
  227. package/dist/cjs/devtools.js.map +0 -7
  228. package/dist/cjs/spacedChildren.js +0 -86
  229. package/dist/cjs/spacedChildren.js.map +0 -7
  230. package/dist/cjs/tamagui-base.css +0 -8
  231. package/dist/cjs/tamagui-base.css.map +0 -7
  232. package/dist/esm/constants/pseudos.js +0 -18
  233. package/dist/esm/constants/pseudos.js.map +0 -7
  234. package/dist/esm/createShallowUpdate.js +0 -1
  235. package/dist/esm/createShallowUpdate.js.map +0 -7
  236. package/dist/esm/devtools.js +0 -14
  237. package/dist/esm/devtools.js.map +0 -7
  238. package/dist/esm/spacedChildren.js +0 -52
  239. package/dist/esm/spacedChildren.js.map +0 -7
  240. package/dist/esm/tamagui-base.css +0 -8
  241. package/dist/esm/tamagui-base.css.map +0 -7
  242. package/dist/jsx/constants/pseudos.js +0 -17
  243. package/dist/jsx/createShallowUpdate.js +0 -0
  244. package/dist/jsx/devtools.js +0 -13
  245. package/dist/jsx/spacedChildren.js +0 -44
  246. package/dist/jsx/tamagui-base.css +0 -7
  247. package/types/spacedChildren.d.ts +0 -9
  248. package/types/spacedChildren.d.ts.map +0 -1
@@ -27,14 +27,20 @@ __export(Tamagui_exports, {
27
27
  });
28
28
  module.exports = __toCommonJS(Tamagui_exports);
29
29
  var Helpers = __toESM(require("@tamagui/helpers"));
30
+ var import_conf = require("./conf");
30
31
  var import_rnw = require("./constants/rnw");
31
32
  var import_insertStyleRule = require("./helpers/insertStyleRule");
32
33
  class TamaguiManager {
33
34
  constructor() {
34
- this.config = null;
35
35
  this.rnw = import_rnw.rnw;
36
36
  this.Helpers = Helpers;
37
37
  }
38
+ get config() {
39
+ return (0, import_conf.getConfig)();
40
+ }
41
+ get insertedRules() {
42
+ return (0, import_insertStyleRule.getInsertedRules)();
43
+ }
38
44
  get allSelectors() {
39
45
  return (0, import_insertStyleRule.getAllSelectors)();
40
46
  }
@@ -54,4 +60,10 @@ const getValueFromIdentifier = /* @__PURE__ */ __name((identifier) => {
54
60
  const setIdentifierValue = /* @__PURE__ */ __name((identifier, value) => {
55
61
  identifierToValue.set(identifier, value);
56
62
  }, "setIdentifierValue");
63
+ // Annotate the CommonJS export names for ESM import in node:
64
+ 0 && (module.exports = {
65
+ Tamagui,
66
+ getValueFromIdentifier,
67
+ setIdentifierValue
68
+ });
57
69
  //# sourceMappingURL=Tamagui.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/Tamagui.ts"],
4
- "sourcesContent": ["import * as Helpers from '@tamagui/helpers'\n\nimport { rnw } from './constants/rnw'\nimport { getAllSelectors, getAllTransforms } from './helpers/insertStyleRule'\nimport { TamaguiInternalConfig } from './types'\n\n// serves a central store for state\n\nclass TamaguiManager {\n config: TamaguiInternalConfig | null = null\n rnw = rnw\n Helpers = Helpers\n\n get allSelectors() {\n return getAllSelectors()\n }\n\n get allTransforms() {\n return getAllTransforms()\n }\n\n get identifierToValue() {\n return identifierToValue\n }\n}\n\nexport const Tamagui = new TamaguiManager()\n\nconst identifierToValue = new Map<string, any>()\n\nexport const getValueFromIdentifier = (identifier: string) => {\n return identifierToValue.get(identifier)\n}\n\nexport const setIdentifierValue = (identifier: string, value: any) => {\n identifierToValue.set(identifier, value)\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAyB;AAEzB,iBAAoB;AACpB,6BAAkD;AAKlD,MAAM,eAAe;AAAA,EAArB;AACE,kBAAuC;AACvC,eAAM;AACN,mBAAU;AAAA;AAAA,MAEN,eAAe;AACjB,WAAO,4CAAgB;AAAA,EACzB;AAAA,MAEI,gBAAgB;AAClB,WAAO,6CAAiB;AAAA,EAC1B;AAAA,MAEI,oBAAoB;AACtB,WAAO;AAAA,EACT;AACF;AAhBA;AAkBO,MAAM,UAAU,IAAI,eAAe;AAE1C,MAAM,oBAAoB,oBAAI,IAAiB;AAExC,MAAM,yBAAyB,wBAAC,eAAuB;AAC5D,SAAO,kBAAkB,IAAI,UAAU;AACzC,GAFsC;AAI/B,MAAM,qBAAqB,wBAAC,YAAoB,UAAe;AACpE,oBAAkB,IAAI,YAAY,KAAK;AACzC,GAFkC;",
4
+ "sourcesContent": ["import * as Helpers from '@tamagui/helpers'\n\nimport { getConfig } from './conf'\nimport { rnw } from './constants/rnw'\nimport { getAllSelectors, getAllTransforms, getInsertedRules } from './helpers/insertStyleRule'\nimport { TamaguiInternalConfig } from './types'\n\n// serves a central store for state\n\nclass TamaguiManager {\n rnw = rnw\n Helpers = Helpers\n\n get config() {\n return getConfig()\n }\n\n get insertedRules() {\n return getInsertedRules()\n }\n\n get allSelectors() {\n return getAllSelectors()\n }\n\n get allTransforms() {\n return getAllTransforms()\n }\n\n get identifierToValue() {\n return identifierToValue\n }\n}\n\nexport const Tamagui = new TamaguiManager()\n\nconst identifierToValue = new Map<string, any>()\n\nexport const getValueFromIdentifier = (identifier: string) => {\n return identifierToValue.get(identifier)\n}\n\nexport const setIdentifierValue = (identifier: string, value: any) => {\n identifierToValue.set(identifier, value)\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,cAAyB;AAEzB,kBAA0B;AAC1B,iBAAoB;AACpB,6BAAoE;AAKpE,MAAM,eAAe;AAAA,EAArB;AACE,eAAM;AACN,mBAAU;AAAA;AAAA,MAEN,SAAS;AACX,WAAO,2BAAU;AAAA,EACnB;AAAA,MAEI,gBAAgB;AAClB,WAAO,6CAAiB;AAAA,EAC1B;AAAA,MAEI,eAAe;AACjB,WAAO,4CAAgB;AAAA,EACzB;AAAA,MAEI,gBAAgB;AAClB,WAAO,6CAAiB;AAAA,EAC1B;AAAA,MAEI,oBAAoB;AACtB,WAAO;AAAA,EACT;AACF;AAvBA;AAyBO,MAAM,UAAU,IAAI,eAAe;AAE1C,MAAM,oBAAoB,oBAAI,IAAiB;AAExC,MAAM,yBAAyB,wBAAC,eAAuB;AAC5D,SAAO,kBAAkB,IAAI,UAAU;AACzC,GAFsC;AAI/B,MAAM,qBAAqB,wBAAC,YAAoB,UAAe;AACpE,oBAAkB,IAAI,YAAY,KAAK;AACzC,GAFkC;",
6
6
  "names": []
7
7
  }
@@ -22,4 +22,8 @@ __export(ThemeContext_exports, {
22
22
  module.exports = __toCommonJS(ThemeContext_exports);
23
23
  var import_react = require("react");
24
24
  const ThemeContext = (0, import_react.createContext)(null);
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ ThemeContext
28
+ });
25
29
  //# sourceMappingURL=ThemeContext.js.map
@@ -38,10 +38,10 @@ __export(ThemeManager_exports, {
38
38
  module.exports = __toCommonJS(ThemeManager_exports);
39
39
  var import_react = require("react");
40
40
  var import_conf = require("./conf");
41
- var import_static = require("./static");
41
+ var import_constants = require("./constants/constants");
42
42
  var _getClassName, getClassName_fn;
43
43
  class ThemeManager {
44
- constructor(name = null, theme = null, parentManager = null) {
44
+ constructor(name = "", theme = null, parentManager = null) {
45
45
  this.name = name;
46
46
  this.theme = theme;
47
47
  this.parentManager = parentManager;
@@ -99,7 +99,7 @@ class ThemeManager {
99
99
  return false;
100
100
  }
101
101
  this.className = className || null;
102
- this.name = name || null;
102
+ this.name = name || "";
103
103
  this.theme = theme;
104
104
  this.notifyListeners();
105
105
  return true;
@@ -108,10 +108,14 @@ class ThemeManager {
108
108
  const { themes = (0, import_conf.getThemes)(), name, componentName } = opts;
109
109
  if (!name) {
110
110
  if (componentName) {
111
- const name2 = `${this.name}_${componentName}`;
112
- const theme2 = themes[name2];
113
- if (theme2) {
114
- return { name: name2, theme: theme2, className: __privateMethod(this, _getClassName, getClassName_fn).call(this, name2) };
111
+ const names = [
112
+ `${this.name}_${componentName}`,
113
+ `${withoutComponentName(this.name)}_${componentName}`
114
+ ];
115
+ for (const name2 of names) {
116
+ if (name2 in themes) {
117
+ return { name: name2, theme: themes[name2], className: __privateMethod(this, _getClassName, getClassName_fn).call(this, name2) };
118
+ }
115
119
  }
116
120
  }
117
121
  return {
@@ -129,16 +133,21 @@ class ThemeManager {
129
133
  if (nextName in themes) {
130
134
  break;
131
135
  }
132
- if (!parentName.includes(import_static.THEME_NAME_SEPARATOR)) {
136
+ if (!parentName.includes(import_constants.THEME_NAME_SEPARATOR)) {
133
137
  console.warn("theme not found", name);
134
138
  break;
135
139
  }
136
- parentName = parentName.slice(0, parentName.lastIndexOf(import_static.THEME_NAME_SEPARATOR));
140
+ parentName = parentName.slice(0, parentName.lastIndexOf(import_constants.THEME_NAME_SEPARATOR));
137
141
  }
138
142
  if (componentName) {
139
- const componentThemeName = `${nextName}_${componentName}`;
140
- if (componentThemeName in themes) {
141
- nextName = componentThemeName;
143
+ const names = [
144
+ `${nextName}_${componentName}`,
145
+ `${withoutComponentName(nextName)}_${componentName}`
146
+ ];
147
+ for (const name2 of names) {
148
+ if (name2 in themes) {
149
+ nextName = name2;
150
+ }
142
151
  }
143
152
  }
144
153
  let theme = themes[nextName];
@@ -146,7 +155,7 @@ class ThemeManager {
146
155
  theme = themes[`light_${nextName}`];
147
156
  }
148
157
  if (process.env.NODE_ENV === "development" && props && props["debug"]) {
149
- console.log("getNextTheme", { opts, nextName, parentName }, this);
158
+ console.log("getNextTheme", { name: opts.name, nextName, parentName });
150
159
  }
151
160
  return {
152
161
  name: nextName,
@@ -188,8 +197,15 @@ class ThemeManager {
188
197
  __name(ThemeManager, "ThemeManager");
189
198
  _getClassName = new WeakSet();
190
199
  getClassName_fn = /* @__PURE__ */ __name(function(name) {
191
- return `${import_static.THEME_CLASSNAME_PREFIX}${name} tui_theme`.replace("light_", "").replace("dark_", "");
200
+ return `${import_constants.THEME_CLASSNAME_PREFIX}${name} tui_theme`.replace("light_", "").replace("dark_", "");
192
201
  }, "#getClassName");
193
202
  const ThemeManagerContext = (0, import_react.createContext)(null);
194
203
  const emptyManager = new ThemeManager();
204
+ const withoutComponentName = /* @__PURE__ */ __name((name) => name.replace(/\_[A-Z][a-z]+$/, ""), "withoutComponentName");
205
+ // Annotate the CommonJS export names for ESM import in node:
206
+ 0 && (module.exports = {
207
+ ThemeManager,
208
+ ThemeManagerContext,
209
+ emptyManager
210
+ });
195
211
  //# sourceMappingURL=ThemeManager.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/ThemeManager.tsx"],
4
- "sourcesContent": ["import { createContext } from 'react'\n\nimport { getThemes } from './conf'\nimport { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from './static'\nimport { ThemeObject, Themes } from './types'\n\ntype ThemeListener = (name: string | null, themeManager: ThemeManager) => void\n\nexport type SetActiveThemeProps = {\n className?: string\n parentManager?: ThemeManager | null\n name?: string | null\n theme?: any\n}\n\nexport class ThemeManager {\n keys = new Map<any, Set<string>>()\n listeners = new Map<any, Function>()\n themeListeners = new Set<ThemeListener>()\n className: string | null = null\n\n constructor(\n public name: string | null = null,\n public theme: ThemeObject | null = null,\n public parentManager: ThemeManager | null = null\n ) {\n // find the nearest different parentManager\n let parent = parentManager\n let tries = 0\n while (true) {\n tries++\n if (tries > 10) {\n throw new Error(`Nested 10 of the same theme in a row, likely error`)\n }\n if (!parent) break\n if (parent.name === name) {\n // go up if same\n parent = parent.parentManager\n } else {\n this.parentManager = parent\n break\n }\n }\n }\n\n get parentName() {\n return this.parentManager?.name || null\n }\n\n get fullName(): string {\n return this.getNextTheme().name || this.name || ''\n // const parentName = this.parentManager?.fullName || ''\n // const name = this.name || ''\n // const parts = [...new Set([...`${parentName}_${name}`.split('_')])].filter(Boolean)\n // return parts.join('_')\n }\n\n // gets value going up to parents\n getValue(key: string) {\n let theme = this.theme\n let manager = this as ThemeManager | null\n while (true) {\n if (!theme) return\n if (key in theme) {\n return theme[key]\n }\n manager = this.parentManager\n if (!manager) {\n return\n }\n if (manager.theme === theme) {\n return\n }\n theme = manager.theme\n }\n }\n\n update({ name, theme, className }: SetActiveThemeProps = {}) {\n // className compare on web, avoids light/dark re-renders\n const sameNameOrClassName = this.className\n ? // == instead of === (sometimes its undefined/null)\n className == this.className\n : name === this.name\n if (sameNameOrClassName) {\n return false\n }\n this.className = className || null\n this.name = name || null\n this.theme = theme\n this.notifyListeners()\n return true\n }\n\n getNextTheme(\n opts: { themes?: Themes; name?: string | null; componentName?: string | null } = {},\n props?: any\n ) {\n const { themes = getThemes(), name, componentName } = opts\n\n if (!name) {\n if (componentName) {\n const name = `${this.name}_${componentName}`\n const theme = themes[name]\n if (theme) {\n return { name, theme, className: this.#getClassName(name) }\n }\n }\n return {\n name: this.name,\n theme: this.theme,\n }\n }\n\n let nextName = name || this.name || ''\n let parentName = this.fullName\n\n while (true) {\n if (nextName in themes) {\n break\n }\n nextName = `${parentName}_${name}`\n if (nextName in themes) {\n break\n }\n if (!parentName.includes(THEME_NAME_SEPARATOR)) {\n // not found!\n console.warn('theme not found', name)\n break\n }\n // go up one\n parentName = parentName.slice(0, parentName.lastIndexOf(THEME_NAME_SEPARATOR))\n }\n\n if (componentName) {\n const componentThemeName = `${nextName}_${componentName}`\n if (componentThemeName in themes) {\n nextName = componentThemeName\n }\n }\n\n let theme = themes[nextName]\n if (!theme) {\n theme = themes[`light_${nextName}`]\n }\n\n if (process.env.NODE_ENV === 'development' && props && props['debug']) {\n console.log('getNextTheme', { opts, nextName, parentName }, this)\n }\n\n return {\n name: nextName,\n theme,\n className: this.#getClassName(nextName),\n }\n }\n\n #getClassName(name: string) {\n return `${THEME_CLASSNAME_PREFIX}${name} tui_theme`.replace('light_', '').replace('dark_', '')\n }\n\n track(uuid: any, keys: Set<string>) {\n if (!this.name) return\n this.keys.set(uuid, keys)\n }\n\n notifyListeners() {\n if (!this.name) {\n this.keys.clear()\n }\n for (const [uuid, keys] of this.keys.entries()) {\n if (keys.size) {\n this.listeners.get(uuid)?.()\n }\n }\n this.themeListeners.forEach((cb) => cb(this.name, this))\n }\n\n onChangeTheme(cb: ThemeListener) {\n this.themeListeners.add(cb)\n return () => {\n this.themeListeners.delete(cb)\n }\n }\n\n onUpdate(uuid: any, cb: Function) {\n this.listeners.set(uuid, cb)\n return () => {\n this.listeners.delete(uuid)\n this.keys.delete(uuid)\n }\n }\n}\n\nexport const ThemeManagerContext = createContext<ThemeManager | null>(null)\nexport const emptyManager = new ThemeManager()\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { createContext } from 'react'\n\nimport { getThemes } from './conf'\nimport { THEME_CLASSNAME_PREFIX, THEME_NAME_SEPARATOR } from './constants/constants'\nimport { ThemeObject, Themes } from './types'\n\ntype ThemeListener = (name: string | null, themeManager: ThemeManager) => void\n\nexport type SetActiveThemeProps = {\n className?: string\n parentManager?: ThemeManager | null\n name?: string | null\n theme?: any\n}\n\nexport class ThemeManager {\n keys = new Map<any, Set<string>>()\n listeners = new Map<any, Function>()\n themeListeners = new Set<ThemeListener>()\n className: string | null = null\n\n constructor(\n public name: string = '',\n public theme: ThemeObject | null = null,\n public parentManager: ThemeManager | null = null\n ) {\n // find the nearest different parentManager\n let parent = parentManager\n let tries = 0\n while (true) {\n tries++\n if (tries > 10) {\n throw new Error(`Nested 10 of the same theme in a row, likely error`)\n }\n if (!parent) break\n if (parent.name === name) {\n // go up if same\n parent = parent.parentManager\n } else {\n this.parentManager = parent\n break\n }\n }\n }\n\n get parentName() {\n return this.parentManager?.name || null\n }\n\n get fullName(): string {\n return this.getNextTheme().name || this.name || ''\n // const parentName = this.parentManager?.fullName || ''\n // const name = this.name || ''\n // const parts = [...new Set([...`${parentName}_${name}`.split('_')])].filter(Boolean)\n // return parts.join('_')\n }\n\n // gets value going up to parents\n getValue(key: string) {\n let theme = this.theme\n let manager = this as ThemeManager | null\n while (true) {\n if (!theme) return\n if (key in theme) {\n return theme[key]\n }\n manager = this.parentManager\n if (!manager) {\n return\n }\n if (manager.theme === theme) {\n return\n }\n theme = manager.theme\n }\n }\n\n update({ name, theme, className }: SetActiveThemeProps = {}) {\n // className compare on web, avoids light/dark re-renders\n const sameNameOrClassName = this.className\n ? // == instead of === (sometimes its undefined/null)\n className == this.className\n : name === this.name\n if (sameNameOrClassName) {\n return false\n }\n this.className = className || null\n this.name = name || ''\n this.theme = theme\n this.notifyListeners()\n return true\n }\n\n getNextTheme(\n opts: { themes?: Themes; name?: string | null; componentName?: string | null } = {},\n props?: any\n ) {\n const { themes = getThemes(), name, componentName } = opts\n\n if (!name) {\n if (componentName) {\n // allow for _Card_Button or just _Button\n const names = [\n `${this.name}_${componentName}`,\n `${withoutComponentName(this.name)}_${componentName}`,\n ]\n for (const name of names) {\n if (name in themes) {\n return { name, theme: themes[name], className: this.#getClassName(name) }\n }\n }\n }\n return {\n name: this.name,\n theme: this.theme,\n }\n }\n\n let nextName = name || this.name || ''\n let parentName = this.fullName\n\n while (true) {\n if (nextName in themes) {\n break\n }\n nextName = `${parentName}_${name}`\n if (nextName in themes) {\n break\n }\n if (!parentName.includes(THEME_NAME_SEPARATOR)) {\n // not found!\n console.warn('theme not found', name)\n break\n }\n // go up one\n parentName = parentName.slice(0, parentName.lastIndexOf(THEME_NAME_SEPARATOR))\n }\n\n if (componentName) {\n // allow for _Card_Button or just _Button\n const names = [\n `${nextName}_${componentName}`,\n `${withoutComponentName(nextName)}_${componentName}`,\n ]\n for (const name of names) {\n if (name in themes) {\n nextName = name\n }\n }\n }\n\n let theme = themes[nextName]\n if (!theme) {\n theme = themes[`light_${nextName}`]\n }\n\n if (process.env.NODE_ENV === 'development' && props && props['debug']) {\n console.log('getNextTheme', { name: opts.name, nextName, parentName })\n }\n\n return {\n name: nextName,\n theme,\n className: this.#getClassName(nextName),\n }\n }\n\n #getClassName(name: string) {\n return `${THEME_CLASSNAME_PREFIX}${name} tui_theme`.replace('light_', '').replace('dark_', '')\n }\n\n track(uuid: any, keys: Set<string>) {\n if (!this.name) return\n this.keys.set(uuid, keys)\n }\n\n notifyListeners() {\n if (!this.name) {\n this.keys.clear()\n }\n for (const [uuid, keys] of this.keys.entries()) {\n if (keys.size) {\n this.listeners.get(uuid)?.()\n }\n }\n this.themeListeners.forEach((cb) => cb(this.name, this))\n }\n\n onChangeTheme(cb: ThemeListener) {\n this.themeListeners.add(cb)\n return () => {\n this.themeListeners.delete(cb)\n }\n }\n\n onUpdate(uuid: any, cb: Function) {\n this.listeners.set(uuid, cb)\n return () => {\n this.listeners.delete(uuid)\n this.keys.delete(uuid)\n }\n }\n}\n\nexport const ThemeManagerContext = createContext<ThemeManager | null>(null)\nexport const emptyManager = new ThemeManager()\n\nconst withoutComponentName = (name: string) => name.replace(/\\_[A-Z][a-z]+$/, '')\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/cjs/conf.js CHANGED
@@ -48,8 +48,17 @@ const onConfiguredOnce = /* @__PURE__ */ __name((cb) => {
48
48
  configListeners.add(cb);
49
49
  }
50
50
  if (!globalThis["Tamagui"]) {
51
- import_Tamagui.Tamagui.config = conf;
52
51
  globalThis["Tamagui"] = import_Tamagui.Tamagui;
53
52
  }
54
53
  }, "onConfiguredOnce");
54
+ // Annotate the CommonJS export names for ESM import in node:
55
+ 0 && (module.exports = {
56
+ configListeners,
57
+ getConfig,
58
+ getHasConfigured,
59
+ getThemes,
60
+ getTokens,
61
+ onConfiguredOnce,
62
+ setConfig
63
+ });
55
64
  //# sourceMappingURL=conf.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/conf.ts"],
4
- "sourcesContent": ["import { Tamagui } from './Tamagui'\nimport { ConfigListener, TamaguiInternalConfig } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(conf!))\n configListeners.clear()\n }\n}\n\nexport const getHasConfigured = () => !!conf\nexport const getConfig = () => conf!\nexport const getTokens = () => conf!.tokensParsed\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf)\n } else {\n configListeners.add(cb)\n }\n\n if (!globalThis['Tamagui']) {\n Tamagui.config = conf\n globalThis['Tamagui'] = Tamagui\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAwB;AAGxB,IAAI;AAEG,MAAM,YAAY,wBAAC,SAAgC;AACxD,SAAO;AACP,MAAI,gBAAgB,MAAM;AACxB,oBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAK,CAAC;AACzC,oBAAgB,MAAM;AAAA,EACxB;AACF,GANyB;AAQlB,MAAM,mBAAmB,6BAAM,CAAC,CAAC,MAAR;AACzB,MAAM,YAAY,6BAAM,MAAN;AAClB,MAAM,YAAY,6BAAM,KAAM,cAAZ;AAClB,MAAM,YAAY,6BAAM,KAAM,QAAZ;AAElB,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,wBAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,IAAI;AAAA,EACT,OAAO;AACL,oBAAgB,IAAI,EAAE;AAAA,EACxB;AAEA,MAAI,CAAC,WAAW,YAAY;AAC1B,2BAAQ,SAAS;AACjB,eAAW,aAAa;AAAA,EAC1B;AACF,GAXgC;",
4
+ "sourcesContent": ["import { Tamagui } from './Tamagui'\nimport { ConfigListener, TamaguiInternalConfig } from './types'\n\nlet conf: TamaguiInternalConfig | null\n\nexport const setConfig = (next: TamaguiInternalConfig) => {\n conf = next\n if (configListeners.size) {\n configListeners.forEach((cb) => cb(conf!))\n configListeners.clear()\n }\n}\n\nexport const getHasConfigured = () => !!conf\nexport const getConfig = () => conf!\nexport const getTokens = () => conf!.tokensParsed\nexport const getThemes = () => conf!.themes\n\nexport const configListeners = new Set<ConfigListener>()\n\nexport const onConfiguredOnce = (cb: ConfigListener) => {\n if (conf) {\n cb(conf!)\n } else {\n configListeners.add(cb)\n }\n\n if (!globalThis['Tamagui']) {\n globalThis['Tamagui'] = Tamagui\n }\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,qBAAwB;AAGxB,IAAI;AAEG,MAAM,YAAY,wBAAC,SAAgC;AACxD,SAAO;AACP,MAAI,gBAAgB,MAAM;AACxB,oBAAgB,QAAQ,CAAC,OAAO,GAAG,IAAK,CAAC;AACzC,oBAAgB,MAAM;AAAA,EACxB;AACF,GANyB;AAQlB,MAAM,mBAAmB,6BAAM,CAAC,CAAC,MAAR;AACzB,MAAM,YAAY,6BAAM,MAAN;AAClB,MAAM,YAAY,6BAAM,KAAM,cAAZ;AAClB,MAAM,YAAY,6BAAM,KAAM,QAAZ;AAElB,MAAM,kBAAkB,oBAAI,IAAoB;AAEhD,MAAM,mBAAmB,wBAAC,OAAuB;AACtD,MAAI,MAAM;AACR,OAAG,IAAK;AAAA,EACV,OAAO;AACL,oBAAgB,IAAI,EAAE;AAAA,EACxB;AAEA,MAAI,CAAC,WAAW,YAAY;AAC1B,eAAW,aAAa;AAAA,EAC1B;AACF,GAVgC;",
6
6
  "names": []
7
7
  }
@@ -47,4 +47,10 @@ const stackDefaultStyles = __spreadValues({
47
47
  flexBasis: "auto",
48
48
  boxSizing: "border-box"
49
49
  });
50
+ // Annotate the CommonJS export names for ESM import in node:
51
+ 0 && (module.exports = {
52
+ THEME_CLASSNAME_PREFIX,
53
+ THEME_NAME_SEPARATOR,
54
+ stackDefaultStyles
55
+ });
50
56
  //# sourceMappingURL=constants.js.map
@@ -19,6 +19,7 @@ var platform_exports = {};
19
19
  __export(platform_exports, {
20
20
  isAndroid: () => isAndroid,
21
21
  isChrome: () => isChrome,
22
+ isClient: () => isClient,
22
23
  isIOS: () => isIOS,
23
24
  isSSR: () => isSSR,
24
25
  isTouchDevice: () => isTouchDevice,
@@ -35,9 +36,23 @@ const isAndroid = ((_a = import_react_native.Platform) == null ? void 0 : _a.OS)
35
36
  const isIOS = ((_b = import_react_native.Platform) == null ? void 0 : _b.OS) === "ios";
36
37
  const isWeb = process.env.TAMAGUI_TARGET !== "native" && (process.env.TAMAGUI_TARGET === "web" || ((_c = import_react_native.Platform) == null ? void 0 : _c.OS) === "web");
37
38
  const isSSR = isWeb && typeof window === "undefined";
39
+ const isClient = isWeb && typeof window !== "undefined";
38
40
  const useIsomorphicLayoutEffect = isSSR ? import_react.useEffect : import_react.useLayoutEffect;
39
41
  const isChrome = typeof navigator !== "undefined" && /Chrome/.test(navigator.userAgent || "");
40
42
  const supportsTouchWeb = typeof window !== "undefined" && "ontouchstart" in window;
41
43
  const isTouchDevice = !isWeb || supportsTouchWeb;
42
44
  const isWebIOS = isWeb && typeof navigator !== "undefined" && (/iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1) && !window["MSStream"];
45
+ // Annotate the CommonJS export names for ESM import in node:
46
+ 0 && (module.exports = {
47
+ isAndroid,
48
+ isChrome,
49
+ isClient,
50
+ isIOS,
51
+ isSSR,
52
+ isTouchDevice,
53
+ isWeb,
54
+ isWebIOS,
55
+ supportsTouchWeb,
56
+ useIsomorphicLayoutEffect
57
+ });
43
58
  //# sourceMappingURL=platform.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/constants/platform.ts"],
4
- "sourcesContent": ["import { useEffect, useLayoutEffect } from 'react'\nimport { Platform } from 'react-native'\n\nexport const isAndroid = Platform?.OS === 'android'\nexport const isIOS = Platform?.OS === 'ios'\n\nexport const isWeb =\n process.env.TAMAGUI_TARGET !== 'native' &&\n (process.env.TAMAGUI_TARGET === 'web' || Platform?.OS === 'web')\n\nexport const isSSR = isWeb && typeof window === 'undefined'\nexport const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect\nexport const isChrome = typeof navigator !== 'undefined' && /Chrome/.test(navigator.userAgent || '')\nexport const supportsTouchWeb = typeof window !== 'undefined' && 'ontouchstart' in window\nexport const isTouchDevice = !isWeb || supportsTouchWeb\nexport const isWebIOS =\n isWeb &&\n typeof navigator !== 'undefined' &&\n (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n !window['MSStream']\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2C;AAC3C,0BAAyB;AADzB;AAGO,MAAM,YAAY,2DAAU,QAAO;AACnC,MAAM,QAAQ,2DAAU,QAAO;AAE/B,MAAM,QACX,QAAQ,IAAI,mBAAmB,YAC9B,SAAQ,IAAI,mBAAmB,SAAS,2DAAU,QAAO;AAErD,MAAM,QAAQ,SAAS,OAAO,WAAW;AACzC,MAAM,4BAA4B,QAAQ,yBAAY;AACtD,MAAM,WAAW,OAAO,cAAc,eAAe,SAAS,KAAK,UAAU,aAAa,EAAE;AAC5F,MAAM,mBAAmB,OAAO,WAAW,eAAe,kBAAkB;AAC5E,MAAM,gBAAgB,CAAC,SAAS;AAChC,MAAM,WACX,SACA,OAAO,cAAc,eACpB,oBAAmB,KAAK,UAAU,QAAQ,KACxC,UAAU,aAAa,cAAc,UAAU,iBAAiB,MACnE,CAAC,OAAO;",
4
+ "sourcesContent": ["import { useEffect, useLayoutEffect } from 'react'\nimport { Platform } from 'react-native'\n\nexport const isAndroid = Platform?.OS === 'android'\nexport const isIOS = Platform?.OS === 'ios'\n\nexport const isWeb =\n process.env.TAMAGUI_TARGET !== 'native' &&\n (process.env.TAMAGUI_TARGET === 'web' || Platform?.OS === 'web')\n\nexport const isSSR = isWeb && typeof window === 'undefined'\nexport const isClient = isWeb && typeof window !== 'undefined'\nexport const useIsomorphicLayoutEffect = isSSR ? useEffect : useLayoutEffect\nexport const isChrome = typeof navigator !== 'undefined' && /Chrome/.test(navigator.userAgent || '')\nexport const supportsTouchWeb = typeof window !== 'undefined' && 'ontouchstart' in window\nexport const isTouchDevice = !isWeb || supportsTouchWeb\nexport const isWebIOS =\n isWeb &&\n typeof navigator !== 'undefined' &&\n (/iPad|iPhone|iPod/.test(navigator.platform) ||\n (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1)) &&\n !window['MSStream']\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAA2C;AAC3C,0BAAyB;AADzB;AAGO,MAAM,YAAY,2DAAU,QAAO;AACnC,MAAM,QAAQ,2DAAU,QAAO;AAE/B,MAAM,QACX,QAAQ,IAAI,mBAAmB,YAC9B,SAAQ,IAAI,mBAAmB,SAAS,2DAAU,QAAO;AAErD,MAAM,QAAQ,SAAS,OAAO,WAAW;AACzC,MAAM,WAAW,SAAS,OAAO,WAAW;AAC5C,MAAM,4BAA4B,QAAQ,yBAAY;AACtD,MAAM,WAAW,OAAO,cAAc,eAAe,SAAS,KAAK,UAAU,aAAa,EAAE;AAC5F,MAAM,mBAAmB,OAAO,WAAW,eAAe,kBAAkB;AAC5E,MAAM,gBAAgB,CAAC,SAAS;AAChC,MAAM,WACX,SACA,OAAO,cAAc,eACpB,oBAAmB,KAAK,UAAU,QAAQ,KACxC,UAAU,aAAa,cAAc,UAAU,iBAAiB,MACnE,CAAC,OAAO;",
6
6
  "names": []
7
7
  }
@@ -39,4 +39,8 @@ if (process.env.IS_STATIC === "is_static") {
39
39
  } else if (process.env.TAMAGUI_TARGET === "web") {
40
40
  Object.assign(rnw, interopRequire(require("react-native-web").TamaguiExports));
41
41
  }
42
+ // Annotate the CommonJS export names for ESM import in node:
43
+ 0 && (module.exports = {
44
+ rnw
45
+ });
42
46
  //# sourceMappingURL=rnw.js.map
@@ -22,4 +22,8 @@ __export(ButtonInsideButtonContext_exports, {
22
22
  module.exports = __toCommonJS(ButtonInsideButtonContext_exports);
23
23
  var import_react = require("react");
24
24
  const ButtonInsideButtonContext = (0, import_react.createContext)(false);
25
+ // Annotate the CommonJS export names for ESM import in node:
26
+ 0 && (module.exports = {
27
+ ButtonInsideButtonContext
28
+ });
25
29
  //# sourceMappingURL=ButtonInsideButtonContext.js.map
@@ -53,7 +53,6 @@ __export(createComponent_exports, {
53
53
  AbsoluteFill: () => AbsoluteFill,
54
54
  Spacer: () => Spacer,
55
55
  createComponent: () => createComponent,
56
- defaultComponentState: () => defaultComponentState,
57
56
  mouseUps: () => mouseUps,
58
57
  spacedChildren: () => spacedChildren
59
58
  });
@@ -71,6 +70,7 @@ var import_createShallowUpdate = require("./helpers/createShallowUpdate");
71
70
  var import_extendStaticConfig = require("./helpers/extendStaticConfig");
72
71
  var import_getSplitStyles = require("./helpers/getSplitStyles");
73
72
  var import_insertStyleRule = require("./helpers/insertStyleRule");
73
+ var import_proxyThemeVariables = require("./helpers/proxyThemeVariables");
74
74
  var import_wrapThemeManagerContext = require("./helpers/wrapThemeManagerContext");
75
75
  var import_useFeatures = require("./hooks/useFeatures");
76
76
  var import_usePressable = require("./hooks/usePressable");
@@ -92,53 +92,59 @@ if (typeof document !== "undefined") {
92
92
  mouseUps.clear();
93
93
  });
94
94
  }
95
- function createComponent(configIn) {
96
- let staticConfig;
97
- if ("parsed" in configIn) {
98
- staticConfig = configIn;
99
- } else {
100
- staticConfig = (0, import_extendStaticConfig.parseStaticConfig)(configIn);
95
+ function mergeShorthands({ defaultProps }, { shorthands }) {
96
+ for (const key in defaultProps) {
97
+ defaultProps[shorthands[key] || key] = defaultProps[key];
101
98
  }
102
- const { Component, validStyles, isText, isZStack, componentName } = staticConfig;
103
- const componentClassName = `is_${componentName}`;
104
- const validStyleProps = validStyles || import_helpers.stylePropsView;
99
+ }
100
+ __name(mergeShorthands, "mergeShorthands");
101
+ let initialTheme;
102
+ function createComponent(configIn, ParentComponent) {
103
+ const staticConfig = (() => {
104
+ const config = (0, import_extendStaticConfig.extendStaticConfig)(configIn, ParentComponent);
105
+ if ("parsed" in config) {
106
+ return config;
107
+ } else {
108
+ return (0, import_extendStaticConfig.parseStaticConfig)(config);
109
+ }
110
+ })();
111
+ const componentClassName = `is_${staticConfig.componentName}`;
105
112
  let tamaguiConfig;
106
113
  let AnimatedText;
107
114
  let AnimatedView;
108
115
  let avoidClasses = true;
109
- let defaultPseudos = {};
110
116
  let defaultNativeStyle;
111
- let defaultNativeStyleSheet = null;
112
- let defaultsClassName = null;
113
- let initialTheme;
114
- let defaultSplitStyleResult = null;
117
+ let defaultNativeStyleSheet;
118
+ let initialSplitStyles;
115
119
  function addPseudoToStyles(styles, name, pseudos) {
116
120
  const pseudoStyle = pseudos[name];
121
+ const shouldNestObject = import_platform.isWeb && name !== "enterStyle" && name !== "exitStyle";
117
122
  if (pseudoStyle) {
118
- styles.push(import_platform.isWeb ? { [name]: pseudoStyle } : pseudoStyle);
123
+ styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle);
119
124
  }
120
- const defaultPseudoStyle = defaultPseudos[name];
125
+ const defaultPseudoStyle = initialSplitStyles.pseudos[name];
121
126
  if (defaultPseudoStyle) {
122
- styles.push(import_platform.isWeb ? { [name]: defaultPseudoStyle } : defaultPseudoStyle);
127
+ styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle);
123
128
  }
124
129
  }
125
130
  __name(addPseudoToStyles, "addPseudoToStyles");
126
131
  const component = (0, import_react.forwardRef)((props, forwardedRef) => {
127
132
  var _a, _c, _d, _e;
133
+ const { Component, componentName, isText, isZStack } = staticConfig;
128
134
  if (process.env.NODE_ENV === "development") {
129
135
  if (props["debug"]) {
130
- console.warn(componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
136
+ console.warn(staticConfig.componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
131
137
  console.log("props in:", props);
132
138
  if (props["debug"] === "break")
133
139
  debugger;
134
140
  }
135
141
  }
136
142
  const forceUpdate = (0, import_use_force_update.useForceUpdate)();
137
- const theme = (0, import_useTheme.useTheme)(props.theme, componentName, props, forceUpdate);
143
+ const theme = (0, import_useTheme.useTheme)(props.theme, staticConfig.componentName, props, forceUpdate);
138
144
  const [state, set_] = (0, import_react.useState)(defaultComponentState);
139
145
  const setStateShallow = (0, import_createShallowUpdate.createShallowUpdate)(set_);
140
146
  const shouldAvoidClasses = !!(props.animation && avoidClasses);
141
- const splitStyles = (0, import_getSplitStyles.getSplitStyles)(props, staticConfig, theme, shouldAvoidClasses ? __spreadProps(__spreadValues({}, state), { noClassNames: true, resolveVariablesAs: "value" }) : state, shouldAvoidClasses ? null : defaultsClassName);
147
+ const splitStyles = (0, import_getSplitStyles.getSplitStyles)(props, staticConfig, theme, shouldAvoidClasses ? __spreadProps(__spreadValues({}, state), { noClassNames: true, resolveVariablesAs: "value" }) : state, shouldAvoidClasses ? null : initialSplitStyles.classNames);
142
148
  const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles;
143
149
  const useAnimations = (_a = tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
144
150
  const isAnimated = !!(useAnimations && props.animation);
@@ -191,6 +197,7 @@ function createComponent(configIn) {
191
197
  accessibilityRole,
192
198
  collapsable,
193
199
  focusable,
200
+ onClick,
194
201
  theme: _themeProp,
195
202
  defaultVariants,
196
203
  onLayout
@@ -231,6 +238,7 @@ function createComponent(configIn) {
231
238
  "accessibilityRole",
232
239
  "collapsable",
233
240
  "focusable",
241
+ "onClick",
234
242
  "theme",
235
243
  "defaultVariants",
236
244
  "onLayout"
@@ -252,15 +260,17 @@ function createComponent(configIn) {
252
260
  };
253
261
  }
254
262
  (0, import_platform.useIsomorphicLayoutEffect)(() => {
255
- setStateShallow({
256
- mounted: true
257
- });
263
+ if (typeof window !== "undefined" && (hasEnterStyle || props.animation)) {
264
+ setStateShallow({
265
+ mounted: true
266
+ });
267
+ }
258
268
  internal.current.isMounted = true;
259
269
  return () => {
260
270
  mouseUps.delete(unPress);
261
271
  internal.current.isMounted = false;
262
272
  };
263
- }, [hasEnterStyle]);
273
+ }, [hasEnterStyle, props.animation]);
264
274
  if (nativeID) {
265
275
  viewProps.id = nativeID;
266
276
  }
@@ -314,6 +324,7 @@ function createComponent(configIn) {
314
324
  medias
315
325
  ];
316
326
  if (!animationStyles) {
327
+ !state.mounted && addPseudoToStyles(styles, "enterStyle", pseudos);
317
328
  state.hover && addPseudoToStyles(styles, "hoverStyle", pseudos);
318
329
  state.focus && addPseudoToStyles(styles, "focusStyle", pseudos);
319
330
  state.press && addPseudoToStyles(styles, "pressStyle", pseudos);
@@ -332,7 +343,7 @@ function createComponent(configIn) {
332
343
  const className = classList.join(" ");
333
344
  if (process.env.NODE_ENV === "development") {
334
345
  if (props["debug"]) {
335
- console.log(" \xBB className", { isStringElement, pseudos, state, defaultsClassName, 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]])) });
346
+ 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]])) });
336
347
  }
337
348
  }
338
349
  viewProps.className = className;
@@ -373,7 +384,8 @@ function createComponent(configIn) {
373
384
  viewProps.ref = forwardedRef;
374
385
  }
375
386
  }
376
- const attachPress = !!(pseudos && pseudos.pressStyle || defaultPseudos && defaultPseudos.pressStyle || onPress || onPressOut || onPressIn);
387
+ const initialPseudos = initialSplitStyles.pseudos;
388
+ const attachPress = !!(pseudos && pseudos.pressStyle || initialPseudos && initialPseudos.pressStyle || onPress || onPressOut || onPressIn || onClick);
377
389
  const isHoverable = import_platform.isWeb && !import_platform.isTouchDevice;
378
390
  const attachHover = isHoverable && !!(pseudos && pseudos.hoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave);
379
391
  const pressEventKey = isStringElement ? "onClick" : "onPress";
@@ -435,6 +447,7 @@ function createComponent(configIn) {
435
447
  onPress == null ? void 0 : onPress(e);
436
448
  unPress();
437
449
  onPressOut == null ? void 0 : onPressOut(e);
450
+ onClick == null ? void 0 : onClick(e);
438
451
  } : null
439
452
  }) : null;
440
453
  let childEls = !children ? children : (0, import_wrapThemeManagerContext.wrapThemeManagerContext)(spacedChildren({
@@ -490,7 +503,7 @@ function createComponent(configIn) {
490
503
  if (process.env.NODE_ENV === "development") {
491
504
  if (props["debug"]) {
492
505
  viewProps["debug"] = true;
493
- console.log(" \xBB ", __spreadValues({ propsIn: __spreadValues({}, props), propsOut: __spreadValues({}, viewProps), state, splitStyles, defaultsClassName, 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, defaultSplitStyleResult }, typeof window !== "undefined" ? { theme, themeState: theme.__state, themeClassName: theme.className, staticConfig, tamaguiConfig } : null));
506
+ 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));
494
507
  }
495
508
  }
496
509
  if (features.length) {
@@ -498,30 +511,28 @@ function createComponent(configIn) {
498
511
  }
499
512
  return content;
500
513
  });
514
+ component.displayName = staticConfig.componentName;
501
515
  (0, import_conf.onConfiguredOnce)((conf) => {
502
516
  var _a, _b, _c, _d;
503
517
  if (process.env.IS_STATIC === "is_static") {
504
518
  return;
505
519
  }
506
- const shouldDebug = (_a = staticConfig.defaultProps) == null ? void 0 : _a.debug;
507
520
  tamaguiConfig = conf;
508
- avoidClasses = !!((_b = tamaguiConfig.animations) == null ? void 0 : _b.avoidClasses);
509
- AnimatedText = (_c = tamaguiConfig.animations) == null ? void 0 : _c.Text;
510
- AnimatedView = (_d = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _d.View;
511
- initialTheme = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]];
512
- defaultSplitStyleResult = (0, import_getSplitStyles.getSplitStyles)(staticConfig.defaultProps, staticConfig, initialTheme, {
521
+ mergeShorthands(staticConfig, tamaguiConfig);
522
+ avoidClasses = !!((_a = tamaguiConfig.animations) == null ? void 0 : _a.avoidClasses);
523
+ AnimatedText = (_b = tamaguiConfig.animations) == null ? void 0 : _b.Text;
524
+ AnimatedView = (_c = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _c.View;
525
+ initialTheme = initialTheme || (0, import_proxyThemeVariables.proxyThemeVariables)(conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]]);
526
+ initialSplitStyles = (0, import_getSplitStyles.getSplitStyles)(staticConfig.defaultProps, staticConfig, initialTheme, {
513
527
  mounted: true,
514
528
  hover: false,
515
529
  press: false,
516
530
  pressIn: false,
517
531
  focus: false,
518
- resolveVariablesAs: "both"
532
+ resolveVariablesAs: "both",
533
+ keepVariantsAsProps: true
519
534
  });
520
- const { classNames, pseudos, style, viewProps } = defaultSplitStyleResult;
521
- if (import_platform.isWeb) {
522
- defaultsClassName = classNames;
523
- }
524
- defaultPseudos = pseudos;
535
+ const { style, viewProps } = initialSplitStyles;
525
536
  defaultNativeStyle = {};
526
537
  for (const key in style) {
527
538
  const v = style[key];
@@ -530,26 +541,34 @@ function createComponent(configIn) {
530
541
  defaultNativeStyleSheet = import_react_native.StyleSheet.create({
531
542
  base: defaultNativeStyle
532
543
  });
533
- component.displayName = staticConfig.componentName;
534
544
  component.defaultProps = __spreadValues(__spreadValues({}, viewProps), component.defaultProps);
535
- if (process.env.NODE_ENV === "development" && shouldDebug && process.env.IS_STATIC !== "is_static") {
536
- console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, __spreadValues({ staticConfig }, defaultSplitStyleResult));
545
+ if (process.env.NODE_ENV === "development" && ((_d = staticConfig.defaultProps) == null ? void 0 : _d.debug)) {
546
+ if (process.env.IS_STATIC !== "is_static") {
547
+ console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, {
548
+ staticConfig,
549
+ initialSplitStyles
550
+ });
551
+ }
537
552
  }
538
553
  });
539
554
  let res = component;
540
555
  if (configIn.memo) {
541
556
  res = (0, import_react.memo)(res);
542
557
  }
543
- res["whyDidYouRender"] = true;
544
558
  res["staticConfig"] = __spreadValues({
545
- validStyles: validStyleProps
559
+ validStyles: staticConfig.validStyles || import_helpers.stylePropsView
546
560
  }, staticConfig);
547
- res["extractable"] = (Component2, conf) => {
548
- Component2["staticConfig"] = (0, import_extendStaticConfig.extendStaticConfig)(res, __spreadProps(__spreadValues({}, conf), {
561
+ if (process.env.NODE_ENV === "development") {
562
+ res["whyDidYouRender"] = true;
563
+ }
564
+ res["extractable"] = (Component, conf) => {
565
+ Component["staticConfig"] = (0, import_extendStaticConfig.extendStaticConfig)(__spreadProps(__spreadValues({
566
+ Component
567
+ }, conf), {
549
568
  neverFlatten: true,
550
- defaultProps: __spreadValues(__spreadValues({}, Component2.defaultProps), conf == null ? void 0 : conf.defaultProps)
551
- }));
552
- return Component2;
569
+ defaultProps: __spreadValues(__spreadValues({}, Component.defaultProps), conf == null ? void 0 : conf.defaultProps)
570
+ }), res);
571
+ return Component;
553
572
  };
554
573
  return res;
555
574
  }
@@ -633,15 +652,26 @@ function spacedChildren({
633
652
  return next;
634
653
  }
635
654
  __name(spacedChildren, "spacedChildren");
636
- const AbsoluteFill = /* @__PURE__ */ __name((props) => import_platform.isWeb ? /* @__PURE__ */ import_react.default.createElement("div", {
637
- style: {
638
- position: "absolute",
639
- top: 0,
640
- left: 0,
641
- right: 0,
642
- bottom: 0
643
- }
644
- }, props.children) : /* @__PURE__ */ import_react.default.createElement(import_react_native.View, {
645
- style: import_react_native.StyleSheet.absoluteFill
646
- }, props.child), "AbsoluteFill");
655
+ function AbsoluteFill(props) {
656
+ return import_platform.isWeb ? /* @__PURE__ */ import_react.default.createElement("div", {
657
+ style: {
658
+ position: "absolute",
659
+ top: 0,
660
+ left: 0,
661
+ right: 0,
662
+ bottom: 0
663
+ }
664
+ }, props.children) : /* @__PURE__ */ import_react.default.createElement(import_react_native.View, {
665
+ style: import_react_native.StyleSheet.absoluteFill
666
+ }, props.child);
667
+ }
668
+ __name(AbsoluteFill, "AbsoluteFill");
669
+ // Annotate the CommonJS export names for ESM import in node:
670
+ 0 && (module.exports = {
671
+ AbsoluteFill,
672
+ Spacer,
673
+ createComponent,
674
+ mouseUps,
675
+ spacedChildren
676
+ });
647
677
  //# sourceMappingURL=createComponent.js.map