@tamagui/core 1.0.0-beta.153 → 1.0.0-beta.181

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 (173) 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 +12 -0
  10. package/dist/cjs/constants/rnw.js +4 -0
  11. package/dist/cjs/contexts/ButtonInsideButtonContext.js +4 -0
  12. package/dist/cjs/createComponent.js +78 -54
  13. package/dist/cjs/createComponent.js.map +2 -2
  14. package/dist/cjs/createFont.js +4 -0
  15. package/dist/cjs/createShorthands.js +4 -0
  16. package/dist/cjs/createTamagui.js +4 -0
  17. package/dist/cjs/createTamagui.js.map +2 -2
  18. package/dist/cjs/createTheme.js +4 -0
  19. package/dist/cjs/createTokens.js +5 -0
  20. package/dist/cjs/createTokens.js.map +1 -1
  21. package/dist/cjs/createVariable.js +9 -0
  22. package/dist/cjs/helpers/RNComponents.js +4 -0
  23. package/dist/cjs/helpers/addStylesUsingClassname.js +8 -0
  24. package/dist/cjs/helpers/addStylesUsingClassname.js.map +2 -2
  25. package/dist/cjs/helpers/areEqualSets.js +4 -0
  26. package/dist/cjs/helpers/createMediaStyle.js +5 -2
  27. package/dist/cjs/helpers/createMediaStyle.js.map +2 -2
  28. package/dist/cjs/helpers/createPropMapper.js +11 -12
  29. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  30. package/dist/cjs/helpers/createShallowUpdate.js +4 -0
  31. package/dist/cjs/helpers/createTamaguiProvider.js +4 -0
  32. package/dist/cjs/helpers/extendStaticConfig.js +8 -6
  33. package/dist/cjs/helpers/extendStaticConfig.js.map +2 -2
  34. package/dist/cjs/helpers/fixNativeShadow.js +4 -0
  35. package/dist/cjs/helpers/fixNativeShadow.native.js +6 -2
  36. package/dist/cjs/helpers/fixNativeShadow.native.js.map +2 -2
  37. package/dist/cjs/helpers/getExpandedShorthands.js +4 -0
  38. package/dist/cjs/helpers/getSplitStyles.js +70 -34
  39. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  40. package/dist/cjs/helpers/getStylesAtomic.js +20 -3
  41. package/dist/cjs/helpers/getStylesAtomic.js.map +2 -2
  42. package/dist/cjs/helpers/getStylesAtomic.native.js +4 -0
  43. package/dist/cjs/helpers/insertStyleRule.js +41 -27
  44. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  45. package/dist/cjs/helpers/isObj.js +4 -0
  46. package/dist/cjs/helpers/isTamaguiElement.js +4 -0
  47. package/dist/cjs/helpers/matchMedia.js +4 -0
  48. package/dist/cjs/helpers/matchMedia.native.js +4 -0
  49. package/dist/cjs/helpers/themeable.js +8 -2
  50. package/dist/cjs/helpers/themeable.js.map +2 -2
  51. package/dist/cjs/helpers/validate.js +46 -5
  52. package/dist/cjs/helpers/validate.js.map +2 -2
  53. package/dist/cjs/helpers/withStaticProperties.js +4 -0
  54. package/dist/cjs/helpers/wrapThemeManagerContext.js +4 -0
  55. package/dist/cjs/hooks/useConstant.js +4 -0
  56. package/dist/cjs/hooks/useFeatures.js +4 -0
  57. package/dist/cjs/hooks/useIsMounted.js +4 -0
  58. package/dist/cjs/hooks/useIsTouchDevice.js +4 -0
  59. package/dist/cjs/hooks/useMedia.js +15 -0
  60. package/dist/cjs/hooks/useMedia.js.map +2 -2
  61. package/dist/cjs/hooks/usePressable.js +4 -0
  62. package/dist/cjs/hooks/useTheme.js +16 -0
  63. package/dist/cjs/hooks/useTheme.js.map +2 -2
  64. package/dist/cjs/hooks/useUnmountEffect.js +4 -0
  65. package/dist/cjs/index.js +14 -0
  66. package/dist/cjs/index.js.map +2 -2
  67. package/dist/cjs/styled.js +7 -4
  68. package/dist/cjs/styled.js.map +2 -2
  69. package/dist/cjs/types.js.map +1 -1
  70. package/dist/cjs/views/Stack.js +4 -0
  71. package/dist/cjs/views/Text.js +4 -0
  72. package/dist/cjs/views/TextAncestorContext.js +6 -0
  73. package/dist/cjs/views/Theme.js +10 -3
  74. package/dist/cjs/views/Theme.js.map +2 -2
  75. package/dist/cjs/views/ThemeInverse.js +5 -0
  76. package/dist/cjs/views/ThemeProvider.js +4 -0
  77. package/dist/cjs/views/ThemeReset.js +4 -0
  78. package/dist/esm/Tamagui.js +8 -2
  79. package/dist/esm/Tamagui.js.map +2 -2
  80. package/dist/esm/ThemeManager.js +21 -11
  81. package/dist/esm/ThemeManager.js.map +2 -2
  82. package/dist/esm/conf.js +0 -1
  83. package/dist/esm/conf.js.map +2 -2
  84. package/dist/esm/createComponent.js +68 -54
  85. package/dist/esm/createComponent.js.map +2 -2
  86. package/dist/esm/createTamagui.js.map +2 -2
  87. package/dist/esm/createTokens.js.map +1 -1
  88. package/dist/esm/helpers/addStylesUsingClassname.js +4 -1
  89. package/dist/esm/helpers/addStylesUsingClassname.js.map +2 -2
  90. package/dist/esm/helpers/createMediaStyle.js +0 -2
  91. package/dist/esm/helpers/createMediaStyle.js.map +2 -2
  92. package/dist/esm/helpers/createPropMapper.js +7 -12
  93. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  94. package/dist/esm/helpers/extendStaticConfig.js +5 -6
  95. package/dist/esm/helpers/extendStaticConfig.js.map +2 -2
  96. package/dist/esm/helpers/fixNativeShadow.native.js +2 -2
  97. package/dist/esm/helpers/fixNativeShadow.native.js.map +2 -2
  98. package/dist/esm/helpers/getSplitStyles.js +65 -35
  99. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  100. package/dist/esm/helpers/getStylesAtomic.js +15 -3
  101. package/dist/esm/helpers/getStylesAtomic.js.map +2 -2
  102. package/dist/esm/helpers/insertStyleRule.js +31 -27
  103. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  104. package/dist/esm/helpers/themeable.js +4 -2
  105. package/dist/esm/helpers/themeable.js.map +2 -2
  106. package/dist/esm/helpers/validate.js +17 -5
  107. package/dist/esm/helpers/validate.js.map +2 -2
  108. package/dist/esm/hooks/useMedia.js +4 -0
  109. package/dist/esm/hooks/useMedia.js.map +2 -2
  110. package/dist/esm/hooks/useTheme.js +8 -0
  111. package/dist/esm/hooks/useTheme.js.map +2 -2
  112. package/dist/esm/index.js +3 -0
  113. package/dist/esm/index.js.map +2 -2
  114. package/dist/esm/styled.js +3 -4
  115. package/dist/esm/styled.js.map +2 -2
  116. package/dist/esm/views/Theme.js +6 -3
  117. package/dist/esm/views/Theme.js.map +2 -2
  118. package/dist/jsx/Tamagui.js +8 -2
  119. package/dist/jsx/ThemeManager.js +21 -11
  120. package/dist/jsx/conf.js +0 -1
  121. package/dist/jsx/createComponent.js +64 -50
  122. package/dist/jsx/helpers/addStylesUsingClassname.js +4 -1
  123. package/dist/jsx/helpers/createMediaStyle.js +0 -2
  124. package/dist/jsx/helpers/createPropMapper.js +7 -12
  125. package/dist/jsx/helpers/extendStaticConfig.js +5 -6
  126. package/dist/jsx/helpers/fixNativeShadow.native.js +2 -2
  127. package/dist/jsx/helpers/getSplitStyles.js +65 -35
  128. package/dist/jsx/helpers/getStylesAtomic.js +15 -3
  129. package/dist/jsx/helpers/insertStyleRule.js +31 -27
  130. package/dist/jsx/helpers/themeable.js +4 -3
  131. package/dist/jsx/helpers/validate.js +17 -5
  132. package/dist/jsx/hooks/useMedia.js +4 -0
  133. package/dist/jsx/hooks/useTheme.js +8 -0
  134. package/dist/jsx/index.js +3 -0
  135. package/dist/jsx/styled.js +3 -4
  136. package/dist/jsx/views/Theme.js +7 -4
  137. package/package.json +6 -6
  138. package/types/Tamagui.d.ts +14 -1
  139. package/types/Tamagui.d.ts.map +1 -1
  140. package/types/ThemeManager.d.ts +3 -3
  141. package/types/ThemeManager.d.ts.map +1 -1
  142. package/types/conf.d.ts.map +1 -1
  143. package/types/createComponent.d.ts +3 -4
  144. package/types/createComponent.d.ts.map +1 -1
  145. package/types/createTamagui.d.ts.map +1 -1
  146. package/types/createTokens.d.ts +8 -0
  147. package/types/createTokens.d.ts.map +1 -1
  148. package/types/helpers/addStylesUsingClassname.d.ts.map +1 -1
  149. package/types/helpers/createMediaStyle.d.ts.map +1 -1
  150. package/types/helpers/createPropMapper.d.ts +1 -1
  151. package/types/helpers/createPropMapper.d.ts.map +1 -1
  152. package/types/helpers/extendStaticConfig.d.ts +2 -2
  153. package/types/helpers/extendStaticConfig.d.ts.map +1 -1
  154. package/types/helpers/getSplitStyles.d.ts +2 -1
  155. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  156. package/types/helpers/getStylesAtomic.d.ts.map +1 -1
  157. package/types/helpers/insertStyleRule.d.ts +2 -1
  158. package/types/helpers/insertStyleRule.d.ts.map +1 -1
  159. package/types/helpers/themeable.d.ts +3 -1
  160. package/types/helpers/themeable.d.ts.map +1 -1
  161. package/types/helpers/validate.d.ts.map +1 -1
  162. package/types/hooks/useMedia.d.ts +3 -3
  163. package/types/hooks/useMedia.d.ts.map +1 -1
  164. package/types/hooks/useTheme.d.ts +1 -1
  165. package/types/hooks/useTheme.d.ts.map +1 -1
  166. package/types/index.d.ts +1 -0
  167. package/types/index.d.ts.map +1 -1
  168. package/types/styled.d.ts +12 -3
  169. package/types/styled.d.ts.map +1 -1
  170. package/types/types.d.ts +43 -25
  171. package/types/types.d.ts.map +1 -1
  172. package/types/views/Theme.d.ts +1 -0
  173. package/types/views/Theme.d.ts.map +1 -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
@@ -40,4 +40,16 @@ const isChrome = typeof navigator !== "undefined" && /Chrome/.test(navigator.use
40
40
  const supportsTouchWeb = typeof window !== "undefined" && "ontouchstart" in window;
41
41
  const isTouchDevice = !isWeb || supportsTouchWeb;
42
42
  const isWebIOS = isWeb && typeof navigator !== "undefined" && (/iPad|iPhone|iPod/.test(navigator.platform) || navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1) && !window["MSStream"];
43
+ // Annotate the CommonJS export names for ESM import in node:
44
+ 0 && (module.exports = {
45
+ isAndroid,
46
+ isChrome,
47
+ isIOS,
48
+ isSSR,
49
+ isTouchDevice,
50
+ isWeb,
51
+ isWebIOS,
52
+ supportsTouchWeb,
53
+ useIsomorphicLayoutEffect
54
+ });
43
55
  //# sourceMappingURL=platform.js.map
@@ -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
  });
@@ -92,33 +91,37 @@ if (typeof document !== "undefined") {
92
91
  mouseUps.clear();
93
92
  });
94
93
  }
95
- function createComponent(configIn) {
96
- let staticConfig;
97
- if ("parsed" in configIn) {
98
- staticConfig = configIn;
99
- } else {
100
- staticConfig = (0, import_extendStaticConfig.parseStaticConfig)(configIn);
94
+ function mergeShorthands({ defaultProps }, { shorthands }) {
95
+ for (const key in defaultProps) {
96
+ defaultProps[shorthands[key] || key] = defaultProps[key];
101
97
  }
102
- const { Component, validStyles, isText, isZStack, componentName } = staticConfig;
103
- const componentClassName = `is_${componentName}`;
104
- const validStyleProps = validStyles || import_helpers.stylePropsView;
98
+ }
99
+ __name(mergeShorthands, "mergeShorthands");
100
+ function createComponent(configIn, ParentComponent) {
101
+ const staticConfig = (() => {
102
+ const config = (0, import_extendStaticConfig.extendStaticConfig)(configIn, ParentComponent);
103
+ if ("parsed" in config) {
104
+ return config;
105
+ } else {
106
+ return (0, import_extendStaticConfig.parseStaticConfig)(config);
107
+ }
108
+ })();
109
+ const componentClassName = `is_${staticConfig.componentName}`;
105
110
  let tamaguiConfig;
106
111
  let AnimatedText;
107
112
  let AnimatedView;
108
113
  let avoidClasses = true;
109
- let defaultPseudos = {};
110
114
  let defaultNativeStyle;
111
- let defaultNativeStyleSheet = null;
112
- let defaultsClassName = null;
115
+ let defaultNativeStyleSheet;
113
116
  let initialTheme;
114
- let defaultSplitStyleResult = null;
117
+ let initialSplitStyles;
115
118
  function addPseudoToStyles(styles, name, pseudos) {
116
119
  const pseudoStyle = pseudos[name];
117
120
  const shouldNestObject = import_platform.isWeb && name !== "enterStyle" && name !== "exitStyle";
118
121
  if (pseudoStyle) {
119
122
  styles.push(shouldNestObject ? { [name]: pseudoStyle } : pseudoStyle);
120
123
  }
121
- const defaultPseudoStyle = defaultPseudos[name];
124
+ const defaultPseudoStyle = initialSplitStyles.pseudos[name];
122
125
  if (defaultPseudoStyle) {
123
126
  styles.push(shouldNestObject ? { [name]: defaultPseudoStyle } : defaultPseudoStyle);
124
127
  }
@@ -126,20 +129,21 @@ function createComponent(configIn) {
126
129
  __name(addPseudoToStyles, "addPseudoToStyles");
127
130
  const component = (0, import_react.forwardRef)((props, forwardedRef) => {
128
131
  var _a, _c, _d, _e;
132
+ const { Component, componentName, isText, isZStack } = staticConfig;
129
133
  if (process.env.NODE_ENV === "development") {
130
134
  if (props["debug"]) {
131
- console.warn(componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
135
+ console.warn(staticConfig.componentName || (Component == null ? void 0 : Component.displayName) || (Component == null ? void 0 : Component.name) || "[Unnamed Component]", "debug on");
132
136
  console.log("props in:", props);
133
137
  if (props["debug"] === "break")
134
138
  debugger;
135
139
  }
136
140
  }
137
141
  const forceUpdate = (0, import_use_force_update.useForceUpdate)();
138
- const theme = (0, import_useTheme.useTheme)(props.theme, componentName, props, forceUpdate);
142
+ const theme = (0, import_useTheme.useTheme)(props.theme, staticConfig.componentName, props, forceUpdate);
139
143
  const [state, set_] = (0, import_react.useState)(defaultComponentState);
140
144
  const setStateShallow = (0, import_createShallowUpdate.createShallowUpdate)(set_);
141
145
  const shouldAvoidClasses = !!(props.animation && avoidClasses);
142
- const splitStyles = (0, import_getSplitStyles.getSplitStyles)(props, staticConfig, theme, shouldAvoidClasses ? __spreadProps(__spreadValues({}, state), { noClassNames: true, resolveVariablesAs: "value" }) : state, shouldAvoidClasses ? null : defaultsClassName);
146
+ const splitStyles = (0, import_getSplitStyles.getSplitStyles)(props, staticConfig, theme, shouldAvoidClasses ? __spreadProps(__spreadValues({}, state), { noClassNames: true, resolveVariablesAs: "value" }) : state, shouldAvoidClasses ? null : initialSplitStyles.classNames);
143
147
  const { viewProps: viewPropsIn, pseudos, medias, style, classNames } = splitStyles;
144
148
  const useAnimations = (_a = tamaguiConfig.animations) == null ? void 0 : _a.useAnimations;
145
149
  const isAnimated = !!(useAnimations && props.animation);
@@ -192,6 +196,7 @@ function createComponent(configIn) {
192
196
  accessibilityRole,
193
197
  collapsable,
194
198
  focusable,
199
+ onClick,
195
200
  theme: _themeProp,
196
201
  defaultVariants,
197
202
  onLayout
@@ -232,6 +237,7 @@ function createComponent(configIn) {
232
237
  "accessibilityRole",
233
238
  "collapsable",
234
239
  "focusable",
240
+ "onClick",
235
241
  "theme",
236
242
  "defaultVariants",
237
243
  "onLayout"
@@ -253,7 +259,7 @@ function createComponent(configIn) {
253
259
  };
254
260
  }
255
261
  (0, import_platform.useIsomorphicLayoutEffect)(() => {
256
- if (typeof window !== "undefined") {
262
+ if (typeof window !== "undefined" && (hasEnterStyle || props.animation)) {
257
263
  setStateShallow({
258
264
  mounted: true
259
265
  });
@@ -263,7 +269,7 @@ function createComponent(configIn) {
263
269
  mouseUps.delete(unPress);
264
270
  internal.current.isMounted = false;
265
271
  };
266
- }, [hasEnterStyle]);
272
+ }, [hasEnterStyle, props.animation]);
267
273
  if (nativeID) {
268
274
  viewProps.id = nativeID;
269
275
  }
@@ -336,7 +342,7 @@ function createComponent(configIn) {
336
342
  const className = classList.join(" ");
337
343
  if (process.env.NODE_ENV === "development") {
338
344
  if (props["debug"]) {
339
- 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]])) });
345
+ 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]])) });
340
346
  }
341
347
  }
342
348
  viewProps.className = className;
@@ -377,7 +383,8 @@ function createComponent(configIn) {
377
383
  viewProps.ref = forwardedRef;
378
384
  }
379
385
  }
380
- const attachPress = !!(pseudos && pseudos.pressStyle || defaultPseudos && defaultPseudos.pressStyle || onPress || onPressOut || onPressIn);
386
+ const initialPseudos = initialSplitStyles.pseudos;
387
+ const attachPress = !!(pseudos && pseudos.pressStyle || initialPseudos && initialPseudos.pressStyle || onPress || onPressOut || onPressIn || onClick);
381
388
  const isHoverable = import_platform.isWeb && !import_platform.isTouchDevice;
382
389
  const attachHover = isHoverable && !!(pseudos && pseudos.hoverStyle || onHoverIn || onHoverOut || onMouseEnter || onMouseLeave);
383
390
  const pressEventKey = isStringElement ? "onClick" : "onPress";
@@ -439,6 +446,7 @@ function createComponent(configIn) {
439
446
  onPress == null ? void 0 : onPress(e);
440
447
  unPress();
441
448
  onPressOut == null ? void 0 : onPressOut(e);
449
+ onClick == null ? void 0 : onClick(e);
442
450
  } : null
443
451
  }) : null;
444
452
  let childEls = !children ? children : (0, import_wrapThemeManagerContext.wrapThemeManagerContext)(spacedChildren({
@@ -494,7 +502,7 @@ function createComponent(configIn) {
494
502
  if (process.env.NODE_ENV === "development") {
495
503
  if (props["debug"]) {
496
504
  viewProps["debug"] = true;
497
- 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));
505
+ 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));
498
506
  }
499
507
  }
500
508
  if (features.length) {
@@ -502,18 +510,19 @@ function createComponent(configIn) {
502
510
  }
503
511
  return content;
504
512
  });
513
+ component.displayName = staticConfig.componentName;
505
514
  (0, import_conf.onConfiguredOnce)((conf) => {
506
515
  var _a, _b, _c, _d;
507
516
  if (process.env.IS_STATIC === "is_static") {
508
517
  return;
509
518
  }
510
- const shouldDebug = (_a = staticConfig.defaultProps) == null ? void 0 : _a.debug;
511
519
  tamaguiConfig = conf;
512
- avoidClasses = !!((_b = tamaguiConfig.animations) == null ? void 0 : _b.avoidClasses);
513
- AnimatedText = (_c = tamaguiConfig.animations) == null ? void 0 : _c.Text;
514
- AnimatedView = (_d = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _d.View;
520
+ mergeShorthands(staticConfig, tamaguiConfig);
521
+ avoidClasses = !!((_a = tamaguiConfig.animations) == null ? void 0 : _a.avoidClasses);
522
+ AnimatedText = (_b = tamaguiConfig.animations) == null ? void 0 : _b.Text;
523
+ AnimatedView = (_c = tamaguiConfig == null ? void 0 : tamaguiConfig.animations) == null ? void 0 : _c.View;
515
524
  initialTheme = conf.themes[conf.defaultTheme || Object.keys(conf.themes)[0]];
516
- defaultSplitStyleResult = (0, import_getSplitStyles.getSplitStyles)(staticConfig.defaultProps, staticConfig, initialTheme, {
525
+ initialSplitStyles = (0, import_getSplitStyles.getSplitStyles)(staticConfig.defaultProps, staticConfig, initialTheme, {
517
526
  mounted: true,
518
527
  hover: false,
519
528
  press: false,
@@ -521,11 +530,7 @@ function createComponent(configIn) {
521
530
  focus: false,
522
531
  resolveVariablesAs: "both"
523
532
  });
524
- const { classNames, pseudos, style, viewProps } = defaultSplitStyleResult;
525
- if (import_platform.isWeb) {
526
- defaultsClassName = classNames;
527
- }
528
- defaultPseudos = pseudos;
533
+ const { style, viewProps } = initialSplitStyles;
529
534
  defaultNativeStyle = {};
530
535
  for (const key in style) {
531
536
  const v = style[key];
@@ -534,26 +539,34 @@ function createComponent(configIn) {
534
539
  defaultNativeStyleSheet = import_react_native.StyleSheet.create({
535
540
  base: defaultNativeStyle
536
541
  });
537
- component.displayName = staticConfig.componentName;
538
542
  component.defaultProps = __spreadValues(__spreadValues({}, viewProps), component.defaultProps);
539
- if (process.env.NODE_ENV === "development" && shouldDebug && process.env.IS_STATIC !== "is_static") {
540
- console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, __spreadValues({ staticConfig }, defaultSplitStyleResult));
543
+ if (process.env.NODE_ENV === "development" && ((_d = staticConfig.defaultProps) == null ? void 0 : _d.debug)) {
544
+ if (process.env.IS_STATIC !== "is_static") {
545
+ console.log(`\u{1F41B} [${staticConfig.componentName || "Component"}]`, {
546
+ staticConfig,
547
+ initialSplitStyles
548
+ });
549
+ }
541
550
  }
542
551
  });
543
552
  let res = component;
544
553
  if (configIn.memo) {
545
554
  res = (0, import_react.memo)(res);
546
555
  }
547
- res["whyDidYouRender"] = true;
548
556
  res["staticConfig"] = __spreadValues({
549
- validStyles: validStyleProps
557
+ validStyles: staticConfig.validStyles || import_helpers.stylePropsView
550
558
  }, staticConfig);
551
- res["extractable"] = (Component2, conf) => {
552
- Component2["staticConfig"] = (0, import_extendStaticConfig.extendStaticConfig)(res, __spreadProps(__spreadValues({}, conf), {
559
+ if (process.env.NODE_ENV === "development") {
560
+ res["whyDidYouRender"] = true;
561
+ }
562
+ res["extractable"] = (Component, conf) => {
563
+ Component["staticConfig"] = (0, import_extendStaticConfig.extendStaticConfig)(__spreadProps(__spreadValues({
564
+ Component
565
+ }, conf), {
553
566
  neverFlatten: true,
554
- defaultProps: __spreadValues(__spreadValues({}, Component2.defaultProps), conf == null ? void 0 : conf.defaultProps)
555
- }));
556
- return Component2;
567
+ defaultProps: __spreadValues(__spreadValues({}, Component.defaultProps), conf == null ? void 0 : conf.defaultProps)
568
+ }), res);
569
+ return Component;
557
570
  };
558
571
  return res;
559
572
  }
@@ -637,15 +650,26 @@ function spacedChildren({
637
650
  return next;
638
651
  }
639
652
  __name(spacedChildren, "spacedChildren");
640
- const AbsoluteFill = /* @__PURE__ */ __name((props) => import_platform.isWeb ? /* @__PURE__ */ import_react.default.createElement("div", {
641
- style: {
642
- position: "absolute",
643
- top: 0,
644
- left: 0,
645
- right: 0,
646
- bottom: 0
647
- }
648
- }, props.children) : /* @__PURE__ */ import_react.default.createElement(import_react_native.View, {
649
- style: import_react_native.StyleSheet.absoluteFill
650
- }, props.child), "AbsoluteFill");
653
+ function AbsoluteFill(props) {
654
+ return import_platform.isWeb ? /* @__PURE__ */ import_react.default.createElement("div", {
655
+ style: {
656
+ position: "absolute",
657
+ top: 0,
658
+ left: 0,
659
+ right: 0,
660
+ bottom: 0
661
+ }
662
+ }, props.children) : /* @__PURE__ */ import_react.default.createElement(import_react_native.View, {
663
+ style: import_react_native.StyleSheet.absoluteFill
664
+ }, props.child);
665
+ }
666
+ __name(AbsoluteFill, "AbsoluteFill");
667
+ // Annotate the CommonJS export names for ESM import in node:
668
+ 0 && (module.exports = {
669
+ AbsoluteFill,
670
+ Spacer,
671
+ createComponent,
672
+ mouseUps,
673
+ spacedChildren
674
+ });
651
675
  //# sourceMappingURL=createComponent.js.map