@tamagui/core 1.0.0-alpha.39 → 1.0.0-alpha.42

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 (165) hide show
  1. package/dist/cjs/conf.js +52 -0
  2. package/dist/cjs/conf.js.map +7 -0
  3. package/dist/cjs/constants/constants.js +15 -10
  4. package/dist/cjs/constants/constants.js.map +2 -2
  5. package/dist/cjs/constants/platform.js +12 -11
  6. package/dist/cjs/constants/platform.js.map +1 -1
  7. package/dist/cjs/constants/pseudos.js +19 -2
  8. package/dist/cjs/constants/pseudos.js.map +1 -1
  9. package/dist/cjs/constants/rnw.js +19 -2
  10. package/dist/cjs/constants/rnw.js.map +1 -1
  11. package/dist/cjs/createComponent.js +37 -27
  12. package/dist/cjs/createComponent.js.map +2 -2
  13. package/dist/cjs/createFont.js +11 -10
  14. package/dist/cjs/createFont.js.map +1 -1
  15. package/dist/cjs/createShorthands.js +19 -2
  16. package/dist/cjs/createShorthands.js.map +1 -1
  17. package/dist/cjs/createTamagui.js +32 -50
  18. package/dist/cjs/createTamagui.js.map +2 -2
  19. package/dist/cjs/createTheme.js +19 -2
  20. package/dist/cjs/createTheme.js.map +1 -1
  21. package/dist/cjs/createTokens.js +12 -11
  22. package/dist/cjs/createTokens.js.map +1 -1
  23. package/dist/cjs/createVariable.js +11 -10
  24. package/dist/cjs/createVariable.js.map +1 -1
  25. package/dist/cjs/getThemeParentClassName.js +34 -0
  26. package/dist/cjs/getThemeParentClassName.js.map +7 -0
  27. package/dist/cjs/helpers/addStylesUsingClassname.js +14 -13
  28. package/dist/cjs/helpers/addStylesUsingClassname.js.map +1 -1
  29. package/dist/cjs/helpers/createMediaStyle.js +11 -10
  30. package/dist/cjs/helpers/createMediaStyle.js.map +1 -1
  31. package/dist/cjs/helpers/createPropMapper.js +15 -14
  32. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  33. package/dist/cjs/helpers/createTamaguiProvider.js +15 -9
  34. package/dist/cjs/helpers/createTamaguiProvider.js.map +1 -1
  35. package/dist/cjs/helpers/extendStaticConfig.js +11 -10
  36. package/dist/cjs/helpers/extendStaticConfig.js.map +1 -1
  37. package/dist/cjs/helpers/fixNativeShadow.js +19 -2
  38. package/dist/cjs/helpers/fixNativeShadow.js.map +1 -1
  39. package/dist/cjs/helpers/fixNativeShadow.native.js +19 -2
  40. package/dist/cjs/helpers/fixNativeShadow.native.js.map +1 -1
  41. package/dist/cjs/helpers/getSplitStyles.js +17 -16
  42. package/dist/cjs/helpers/getSplitStyles.js.map +1 -1
  43. package/dist/cjs/helpers/getStylesAtomic.js +13 -12
  44. package/dist/cjs/helpers/getStylesAtomic.js.map +1 -1
  45. package/dist/cjs/helpers/getStylesAtomic.native.js +19 -2
  46. package/dist/cjs/helpers/getStylesAtomic.native.js.map +1 -1
  47. package/dist/cjs/helpers/getThemeParentClassName.js +34 -0
  48. package/dist/cjs/helpers/getThemeParentClassName.js.map +7 -0
  49. package/dist/cjs/helpers/insertStyleRule.js +11 -10
  50. package/dist/cjs/helpers/insertStyleRule.js.map +1 -1
  51. package/dist/cjs/helpers/isObj.js +19 -2
  52. package/dist/cjs/helpers/isObj.js.map +1 -1
  53. package/dist/cjs/helpers/isTamaguiElement.js +11 -10
  54. package/dist/cjs/helpers/isTamaguiElement.js.map +1 -1
  55. package/dist/cjs/helpers/matchMedia.js +19 -2
  56. package/dist/cjs/helpers/matchMedia.js.map +1 -1
  57. package/dist/cjs/helpers/matchMedia.native.js +13 -7
  58. package/dist/cjs/helpers/matchMedia.native.js.map +1 -1
  59. package/dist/cjs/helpers/themeable.js +15 -9
  60. package/dist/cjs/helpers/themeable.js.map +1 -1
  61. package/dist/cjs/helpers/validate.js +13 -7
  62. package/dist/cjs/helpers/validate.js.map +1 -1
  63. package/dist/cjs/hooks/useConstant.js +11 -10
  64. package/dist/cjs/hooks/useConstant.js.map +1 -1
  65. package/dist/cjs/hooks/useFeatures.js +15 -9
  66. package/dist/cjs/hooks/useFeatures.js.map +1 -1
  67. package/dist/cjs/hooks/useMedia.js +18 -17
  68. package/dist/cjs/hooks/useMedia.js.map +2 -2
  69. package/dist/cjs/hooks/usePressable.js +11 -10
  70. package/dist/cjs/hooks/usePressable.js.map +1 -1
  71. package/dist/cjs/hooks/useTheme.js +19 -18
  72. package/dist/cjs/hooks/useTheme.js.map +2 -2
  73. package/dist/cjs/index.js +47 -38
  74. package/dist/cjs/index.js.map +2 -2
  75. package/dist/cjs/static/postProcessStyles.js +11 -10
  76. package/dist/cjs/static/postProcessStyles.js.map +1 -1
  77. package/dist/cjs/static.js +23 -22
  78. package/dist/cjs/static.js.map +1 -1
  79. package/dist/cjs/styled.js +12 -11
  80. package/dist/cjs/styled.js.map +2 -2
  81. package/dist/cjs/types.js +18 -1
  82. package/dist/cjs/types.js.map +2 -2
  83. package/dist/cjs/views/Animated.js +17 -11
  84. package/dist/cjs/views/Animated.js.map +1 -1
  85. package/dist/cjs/views/Stack.js +12 -11
  86. package/dist/cjs/views/Stack.js.map +1 -1
  87. package/dist/cjs/views/Text.js +14 -13
  88. package/dist/cjs/views/Text.js.map +2 -2
  89. package/dist/cjs/views/TextAncestorContext.js +14 -8
  90. package/dist/cjs/views/TextAncestorContext.js.map +1 -1
  91. package/dist/cjs/views/Theme.js +19 -13
  92. package/dist/cjs/views/Theme.js.map +2 -2
  93. package/dist/cjs/views/ThemeContext.js +11 -10
  94. package/dist/cjs/views/ThemeContext.js.map +1 -1
  95. package/dist/cjs/views/ThemeInverse.js +15 -9
  96. package/dist/cjs/views/ThemeInverse.js.map +1 -1
  97. package/dist/cjs/views/ThemeManagerContext.js +14 -13
  98. package/dist/cjs/views/ThemeManagerContext.js.map +1 -1
  99. package/dist/cjs/views/ThemeProvider.js +22 -16
  100. package/dist/cjs/views/ThemeProvider.js.map +2 -2
  101. package/dist/esm/conf.js +29 -0
  102. package/dist/esm/conf.js.map +7 -0
  103. package/dist/esm/constants/constants.js +4 -0
  104. package/dist/esm/constants/constants.js.map +2 -2
  105. package/dist/esm/createComponent.js +10 -6
  106. package/dist/esm/createComponent.js.map +2 -2
  107. package/dist/esm/createTamagui.js +10 -29
  108. package/dist/esm/createTamagui.js.map +2 -2
  109. package/dist/esm/getThemeParentClassName.js +11 -0
  110. package/dist/esm/getThemeParentClassName.js.map +7 -0
  111. package/dist/esm/helpers/addStylesUsingClassname.js +1 -1
  112. package/dist/esm/helpers/addStylesUsingClassname.js.map +1 -1
  113. package/dist/esm/helpers/createPropMapper.js +1 -1
  114. package/dist/esm/helpers/createPropMapper.js.map +1 -1
  115. package/dist/esm/helpers/getThemeParentClassName.js +11 -0
  116. package/dist/esm/helpers/getThemeParentClassName.js.map +7 -0
  117. package/dist/esm/hooks/useMedia.js +3 -3
  118. package/dist/esm/hooks/useMedia.js.map +2 -2
  119. package/dist/esm/hooks/useTheme.js +2 -2
  120. package/dist/esm/hooks/useTheme.js.map +2 -2
  121. package/dist/esm/index.js +16 -1
  122. package/dist/esm/index.js.map +2 -2
  123. package/dist/esm/styled.js.map +1 -1
  124. package/dist/esm/views/Text.js +1 -1
  125. package/dist/esm/views/Text.js.map +1 -1
  126. package/dist/esm/views/Theme.js +1 -1
  127. package/dist/esm/views/Theme.js.map +1 -1
  128. package/dist/esm/views/ThemeManagerContext.js +3 -3
  129. package/dist/esm/views/ThemeManagerContext.js.map +1 -1
  130. package/dist/esm/views/ThemeProvider.js +3 -3
  131. package/dist/esm/views/ThemeProvider.js.map +2 -2
  132. package/dist/jsx/conf.js +28 -0
  133. package/dist/jsx/constants/constants.js +4 -0
  134. package/dist/jsx/createComponent.js +10 -6
  135. package/dist/jsx/createTamagui.js +10 -29
  136. package/dist/jsx/getThemeParentClassName.js +10 -0
  137. package/dist/jsx/helpers/addStylesUsingClassname.js +1 -1
  138. package/dist/jsx/helpers/createPropMapper.js +1 -1
  139. package/dist/jsx/helpers/getThemeParentClassName.js +10 -0
  140. package/dist/jsx/hooks/useMedia.js +3 -3
  141. package/dist/jsx/hooks/useTheme.js +2 -2
  142. package/dist/jsx/index.js +16 -1
  143. package/dist/jsx/views/Text.js +1 -1
  144. package/dist/jsx/views/Theme.js +1 -1
  145. package/dist/jsx/views/ThemeManagerContext.js +3 -3
  146. package/dist/jsx/views/ThemeProvider.js +3 -3
  147. package/package.json +6 -6
  148. package/types/conf.d.ts +45 -0
  149. package/types/conf.d.ts.map +1 -0
  150. package/types/constants/constants.d.ts +2 -0
  151. package/types/constants/constants.d.ts.map +1 -1
  152. package/types/createComponent.d.ts.map +1 -1
  153. package/types/createTamagui.d.ts +2 -43
  154. package/types/createTamagui.d.ts.map +1 -1
  155. package/types/helpers/getThemeParentClassName.d.ts +2 -0
  156. package/types/helpers/getThemeParentClassName.d.ts.map +1 -0
  157. package/types/hooks/useTheme.d.ts.map +1 -1
  158. package/types/index.d.ts +2 -0
  159. package/types/index.d.ts.map +1 -1
  160. package/types/styled.d.ts +1 -1
  161. package/types/styled.d.ts.map +1 -1
  162. package/types/types.d.ts +2 -2
  163. package/types/types.d.ts.map +1 -1
  164. package/types/views/ThemeProvider.d.ts +0 -1
  165. package/types/views/ThemeProvider.d.ts.map +1 -1
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { getTamagui } from "../conf";
3
4
  import { isWeb } from "../constants/platform";
4
- import { getTamagui } from "../createTamagui";
5
5
  import { Variable } from "../createVariable";
6
6
  import { isObj } from "./isObj";
7
7
  const createPropMapper = /* @__PURE__ */ __name((c) => {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/helpers/createPropMapper.ts"],
4
- "sourcesContent": ["import { isWeb } from '../constants/platform'\nimport { getTamagui } from '../createTamagui'\nimport { Variable } from '../createVariable'\nimport { StaticConfig, TamaguiInternalConfig } from '../types'\nimport { isObj } from './isObj'\n\nexport const createPropMapper = (c: StaticConfig) => {\n const variants = c.variants\n let variantsParsed\n const defaultProps = c.defaultProps || {}\n\n return (key: string, value: any, theme: any, props: any) => {\n const conf = getTamagui()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n if (variants && !variantsParsed) {\n variantsParsed = parseVariants(variants, conf)\n }\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n let fontFamily = props.fontFamily || defaultProps.fontFamily || '$body'\n\n // expand variants\n const variant = variantsParsed?.[key]\n if (variant && typeof value !== 'undefined') {\n const val =\n value === true\n ? variant['$true'] || variant['true']\n : variant[value] ?? variant['...'] ?? value\n\n const res =\n typeof val === 'function'\n ? val(value, { tokens: conf.tokensParsed, theme, props })\n : isObj(val)\n ? { ...val }\n : val\n\n if (isObj(res)) {\n resolveTokens(res, conf, theme, fontFamily)\n }\n\n return res\n }\n\n let shouldReturn = false\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value && value[0] === '$') {\n shouldReturn = true\n value = getToken(key, value, conf, theme, fontFamily)\n }\n\n if (value instanceof Variable) {\n shouldReturn = true\n value = value.variable\n }\n\n if (shouldReturn) {\n return {\n [key]: value,\n }\n }\n }\n}\n\nconst resolveTokens = (res: any, conf: TamaguiInternalConfig, theme: any, fontFamily: any) => {\n for (const rKey in res) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = res[rKey]\n if (val instanceof Variable) {\n res[fKey] = val.variable\n } else if (typeof val === 'string') {\n const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // for things like shadowOffset which is a sub-object\n resolveTokens(val, conf, theme, fontFamily)\n }\n // nullish values cant be tokens so need no exrta parsing\n }\n }\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed, themeParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body'\n) => {\n if (themeParsed[value]) {\n if (isWeb && themeParsed[value].variable) {\n return themeParsed[value].variable\n } else {\n if (value && value[0] === '$') {\n return theme[`${value.slice(1)}`]?.val || themeParsed[value]?.val\n }\n }\n }\n let valOrVar: any\n if (key === 'fontFamily') {\n valOrVar = tokensParsed.font[value]?.family || value\n }\n if (key === 'fontSize') {\n valOrVar = tokensParsed.font[fontFamily]?.size[value] || value\n }\n if (key === 'lineHeight') {\n valOrVar = tokensParsed.font[fontFamily]?.lineHeight[value] || value\n }\n if (key === 'letterSpacing') {\n valOrVar = tokensParsed.font[fontFamily]?.letterSpacing[value] || value\n }\n if (key === 'fontWeight') {\n valOrVar = tokensParsed.font[fontFamily]?.weight[value] || value\n }\n if (typeof valOrVar !== 'undefined') {\n if (valOrVar instanceof Variable) {\n return valOrVar.variable\n } else {\n return valOrVar\n }\n }\n for (const cat in tokenCategories) {\n if (tokenCategories[cat][key]) {\n const res = tokensParsed[cat][value]\n if (res) {\n return res.variable\n } else {\n const themeVar = themeParsed[value]\n if (themeVar) {\n return themeVar.variable\n }\n }\n }\n }\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n return spaceVar.variable\n }\n return value\n}\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n\n// turns variant spreads into individual lookups\nfunction parseVariants(variants: any, conf: TamaguiInternalConfig) {\n return Object.keys(variants).reduce((acc, key) => {\n acc[key] = Object.keys(variants[key]).reduce((vacc, vkey) => {\n const variantVal = variants[key][vkey]\n if (vkey.startsWith('...')) {\n // set the default one at '...' for easy fallback on non-exact-variant-match\n vacc['...'] = variantVal\n const tokenKey = vkey.slice(3)\n const tokens = conf.tokens[tokenKey]\n for (const tkey in tokens) {\n vacc[`$${tkey}`] = variantVal\n }\n } else {\n vacc[vkey] = variantVal\n }\n return vacc\n }, {})\n return acc\n }, {})\n}\n"],
4
+ "sourcesContent": ["import { getTamagui } from '../conf'\nimport { isWeb } from '../constants/platform'\nimport { Variable } from '../createVariable'\nimport { StaticConfig, TamaguiInternalConfig } from '../types'\nimport { isObj } from './isObj'\n\nexport const createPropMapper = (c: StaticConfig) => {\n const variants = c.variants\n let variantsParsed\n const defaultProps = c.defaultProps || {}\n\n return (key: string, value: any, theme: any, props: any) => {\n const conf = getTamagui()\n if (!conf) {\n console.trace('no conf! err')\n return\n }\n if (variants && !variantsParsed) {\n variantsParsed = parseVariants(variants, conf)\n }\n\n // handled here because we need to resolve this off tokens, its the only one-off like this\n let fontFamily = props.fontFamily || defaultProps.fontFamily || '$body'\n\n // expand variants\n const variant = variantsParsed?.[key]\n if (variant && typeof value !== 'undefined') {\n const val =\n value === true\n ? variant['$true'] || variant['true']\n : variant[value] ?? variant['...'] ?? value\n\n const res =\n typeof val === 'function'\n ? val(value, { tokens: conf.tokensParsed, theme, props })\n : isObj(val)\n ? { ...val }\n : val\n\n if (isObj(res)) {\n resolveTokens(res, conf, theme, fontFamily)\n }\n\n return res\n }\n\n let shouldReturn = false\n\n // handle shorthands\n if (conf.shorthands[key]) {\n shouldReturn = true\n key = conf.shorthands[key]\n }\n\n if (value && value[0] === '$') {\n shouldReturn = true\n value = getToken(key, value, conf, theme, fontFamily)\n }\n\n if (value instanceof Variable) {\n shouldReturn = true\n value = value.variable\n }\n\n if (shouldReturn) {\n return {\n [key]: value,\n }\n }\n }\n}\n\nconst resolveTokens = (res: any, conf: TamaguiInternalConfig, theme: any, fontFamily: any) => {\n for (const rKey in res) {\n const fKey = conf.shorthands[rKey] || rKey\n const val = res[rKey]\n if (val instanceof Variable) {\n res[fKey] = val.variable\n } else if (typeof val === 'string') {\n const fVal = val[0] === '$' ? getToken(fKey, val, conf, theme, fontFamily) : val\n res[fKey] = fVal\n } else {\n if (isObj(val)) {\n // for things like shadowOffset which is a sub-object\n resolveTokens(val, conf, theme, fontFamily)\n }\n // nullish values cant be tokens so need no exrta parsing\n }\n }\n}\n\nconst getToken = (\n key: string,\n value: string,\n { tokensParsed, themeParsed }: TamaguiInternalConfig,\n theme: any,\n fontFamily: string | undefined = '$body'\n) => {\n if (themeParsed[value]) {\n if (isWeb && themeParsed[value].variable) {\n return themeParsed[value].variable\n } else {\n if (value && value[0] === '$') {\n return theme[`${value.slice(1)}`]?.val || themeParsed[value]?.val\n }\n }\n }\n let valOrVar: any\n if (key === 'fontFamily') {\n valOrVar = tokensParsed.font[value]?.family || value\n }\n if (key === 'fontSize') {\n valOrVar = tokensParsed.font[fontFamily]?.size[value] || value\n }\n if (key === 'lineHeight') {\n valOrVar = tokensParsed.font[fontFamily]?.lineHeight[value] || value\n }\n if (key === 'letterSpacing') {\n valOrVar = tokensParsed.font[fontFamily]?.letterSpacing[value] || value\n }\n if (key === 'fontWeight') {\n valOrVar = tokensParsed.font[fontFamily]?.weight[value] || value\n }\n if (typeof valOrVar !== 'undefined') {\n if (valOrVar instanceof Variable) {\n return valOrVar.variable\n } else {\n return valOrVar\n }\n }\n for (const cat in tokenCategories) {\n if (tokenCategories[cat][key]) {\n const res = tokensParsed[cat][value]\n if (res) {\n return res.variable\n } else {\n const themeVar = themeParsed[value]\n if (themeVar) {\n return themeVar.variable\n }\n }\n }\n }\n const spaceVar = tokensParsed.space[value]\n if (spaceVar) {\n return spaceVar.variable\n }\n return value\n}\n\n// just specificy the least costly, all else go to `space` (most keys - we can exclude)\nconst tokenCategories = {\n size: {\n width: true,\n height: true,\n minWidth: true,\n minHeight: true,\n maxWidth: true,\n maxHeight: true,\n },\n color: {\n color: true,\n backgroundColor: true,\n borderColor: true,\n borderBottomColor: true,\n borderTopColor: true,\n borderLeftColor: true,\n borderRightColor: true,\n },\n}\n\n// turns variant spreads into individual lookups\nfunction parseVariants(variants: any, conf: TamaguiInternalConfig) {\n return Object.keys(variants).reduce((acc, key) => {\n acc[key] = Object.keys(variants[key]).reduce((vacc, vkey) => {\n const variantVal = variants[key][vkey]\n if (vkey.startsWith('...')) {\n // set the default one at '...' for easy fallback on non-exact-variant-match\n vacc['...'] = variantVal\n const tokenKey = vkey.slice(3)\n const tokens = conf.tokens[tokenKey]\n for (const tkey in tokens) {\n vacc[`$${tkey}`] = variantVal\n }\n } else {\n vacc[vkey] = variantVal\n }\n return vacc\n }, {})\n return acc\n }, {})\n}\n"],
5
5
  "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,11 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { PREFIX } from "../constants/constants";
4
+ function getThemeParentClassName(themeName) {
5
+ return `theme-parent ${themeName ? `${PREFIX}${themeName}` : ""}`;
6
+ }
7
+ __name(getThemeParentClassName, "getThemeParentClassName");
8
+ export {
9
+ getThemeParentClassName
10
+ };
11
+ //# sourceMappingURL=getThemeParentClassName.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/helpers/getThemeParentClassName.ts"],
4
+ "sourcesContent": ["import { PREFIX } from '../constants/constants'\n\nexport function getThemeParentClassName(themeName?: string | null) {\n return `theme-parent ${themeName ? `${PREFIX}${themeName}` : ''}`\n}\n"],
5
+ "mappings": ";;AAAA;AAEO,iCAAiC,WAA2B;AACjE,SAAO,gBAAgB,YAAY,GAAG,SAAS,cAAc;AAAA;AAD/C;",
6
+ "names": []
7
+ }
@@ -8,7 +8,7 @@ import { useConstant } from "./useConstant";
8
8
  const mediaState = {};
9
9
  const mediaQueryListeners = {};
10
10
  const addMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
11
- mediaQueryListeners[key] = mediaQueryListeners[key] || new Set();
11
+ mediaQueryListeners[key] = mediaQueryListeners[key] || /* @__PURE__ */ new Set();
12
12
  mediaQueryListeners[key].add(cb);
13
13
  }, "addMediaQueryListener");
14
14
  const removeMediaQueryListener = /* @__PURE__ */ __name((key, cb) => {
@@ -19,14 +19,14 @@ let conf = null;
19
19
  const mediaQueryConfig = new Proxy({}, {
20
20
  get(target, key) {
21
21
  if (!conf) {
22
- console.warn("Warning: accessing media query before init");
22
+ console.warn("Tamagui warning: accessing media query before init");
23
23
  return null;
24
24
  }
25
25
  return Reflect.get(conf, key);
26
26
  },
27
27
  ownKeys() {
28
28
  if (!conf) {
29
- console.warn("Warning: accessing media query before init");
29
+ console.warn("Tamagui warning: accessing media query before init");
30
30
  return [];
31
31
  }
32
32
  return Object.keys(conf);
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useMedia.tsx"],
4
- "sourcesContent": ["import { useForceUpdate } from '@tamagui/use-force-update'\nimport { useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { matchMedia } from '../helpers/matchMedia'\nimport {\n ConfigureMediaQueryOptions,\n MediaQueries,\n MediaQueryObject,\n MediaQueryState,\n} from '../types'\nimport { useConstant } from './useConstant'\n\nexport const mediaState: { [key in keyof MediaQueryState]: boolean } = {} as any\nconst mediaQueryListeners: { [key: string]: Set<Function> } = {}\n\nexport const addMediaQueryListener = (key: string, cb: any) => {\n mediaQueryListeners[key] = mediaQueryListeners[key] || new Set()\n mediaQueryListeners[key].add(cb)\n}\n\nexport const removeMediaQueryListener = (key: string, cb: any) => {\n mediaQueryListeners[key]?.delete(cb)\n}\n\nlet conf: MediaQueries | null = null\n\nexport const mediaQueryConfig = new Proxy<MediaQueries>({} as any, {\n get(target, key) {\n if (!conf) {\n console.warn('Warning: accessing media query before init')\n return null\n }\n return Reflect.get(conf, key)\n },\n ownKeys() {\n if (!conf) {\n console.warn('Warning: accessing media query before init')\n return []\n }\n return Object.keys(conf)\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n})\n\nexport const getMedia = () => {\n if (!conf) {\n throw new Error(`not configured yet`)\n }\n return mediaState\n}\n\nexport const configureMedia = ({\n queries,\n defaultActive = ['sm', 'xs'],\n}: ConfigureMediaQueryOptions = {}) => {\n if (conf) {\n console.warn(\n `Already configured mediaQueries once (you may have called getMedia() before configureMedia())`\n )\n }\n\n if (queries) {\n conf = queries\n }\n\n // setup\n for (const key in queries) {\n const str = mediaObjectToString(queries[key])\n try {\n const getMatch = () => matchMedia(str)\n const match = getMatch()\n if (!match || typeof match.addListener !== 'function') {\n // caught below\n throw new Error('\u26A0\uFE0F No match (seeing this in RN sometimes)')\n }\n mediaState[key] = !!match.matches\n match.addListener(() => {\n const next = !!getMatch().matches\n if (next === mediaState[key]) return\n mediaState[key] = next\n const listeners = mediaQueryListeners[key]\n if (listeners?.size) {\n for (const cb of [...listeners]) {\n cb()\n }\n }\n })\n } catch (err: any) {\n console.error('Error running media query', str, err.message, err.stack)\n const isDefaultActive = defaultActive?.includes(key as any) ?? true\n mediaState[key] = isDefaultActive\n }\n }\n}\n\ntype UseMediaState = {\n selections: { [key: string]: boolean }\n nextSelections: { [key: string]: boolean }\n isRendering: boolean\n isUnmounted: boolean\n}\n\nexport const useMedia = () => {\n const forceUpdate = useForceUpdate()\n const state = useRef() as React.MutableRefObject<UseMediaState>\n if (!state.current) {\n state.current = {\n selections: {},\n nextSelections: {},\n isUnmounted: false,\n isRendering: true,\n }\n }\n state.current.isRendering = true\n\n // track usage\n useIsomorphicLayoutEffect(() => {\n const st = state.current\n st.isRendering = false\n // delete old\n for (const key in st.selections) {\n if (!(key in st.nextSelections)) {\n removeMediaQueryListener(key, forceUpdate)\n }\n }\n // add new\n for (const key in st.nextSelections) {\n if (!(key in st.selections)) {\n addMediaQueryListener(key, forceUpdate)\n }\n }\n })\n\n // unmount\n useIsomorphicLayoutEffect(() => {\n return () => {\n const st = state.current\n st.isUnmounted = true\n const allKeys = {\n ...st.selections,\n ...st.nextSelections,\n }\n for (const key in allKeys) {\n removeMediaQueryListener(key, forceUpdate)\n }\n }\n }, [])\n\n return useConstant(() => {\n const st = state.current\n return new Proxy(mediaState, {\n get(target, key: string) {\n if (!(key in mediaState)) {\n return Reflect.get(target, key)\n }\n if (!st.isUnmounted) {\n if (st.isRendering) {\n st.nextSelections[key] = true\n }\n }\n if (key in mediaState) {\n return mediaState[key]\n }\n return Reflect.get(mediaState, key)\n },\n })\n })\n}\n\nfunction camelToHyphen(str: string) {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase()\n}\n\nexport function mediaObjectToString(query: string | MediaQueryObject) {\n if (typeof query === 'string') {\n return query\n }\n return Object.entries(query)\n .map(([feature, value]) => {\n feature = camelToHyphen(feature)\n if (typeof value === 'string') {\n return `(${feature}: ${value})`\n }\n if (typeof value === 'number' && /[height|width]$/.test(feature)) {\n value = `${value}px`\n }\n return `(${feature}: ${value})`\n })\n .join(' and ')\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useForceUpdate } from '@tamagui/use-force-update'\nimport { useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { matchMedia } from '../helpers/matchMedia'\nimport {\n ConfigureMediaQueryOptions,\n MediaQueries,\n MediaQueryObject,\n MediaQueryState,\n} from '../types'\nimport { useConstant } from './useConstant'\n\nexport const mediaState: { [key in keyof MediaQueryState]: boolean } = {} as any\nconst mediaQueryListeners: { [key: string]: Set<Function> } = {}\n\nexport const addMediaQueryListener = (key: string, cb: any) => {\n mediaQueryListeners[key] = mediaQueryListeners[key] || new Set()\n mediaQueryListeners[key].add(cb)\n}\n\nexport const removeMediaQueryListener = (key: string, cb: any) => {\n mediaQueryListeners[key]?.delete(cb)\n}\n\nlet conf: MediaQueries | null = null\n\nexport const mediaQueryConfig = new Proxy<MediaQueries>({} as any, {\n get(target, key) {\n if (!conf) {\n console.warn('Tamagui warning: accessing media query before init')\n return null\n }\n return Reflect.get(conf, key)\n },\n ownKeys() {\n if (!conf) {\n console.warn('Tamagui warning: accessing media query before init')\n return []\n }\n return Object.keys(conf)\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n }\n },\n})\n\nexport const getMedia = () => {\n if (!conf) {\n throw new Error(`not configured yet`)\n }\n return mediaState\n}\n\nexport const configureMedia = ({\n queries,\n defaultActive = ['sm', 'xs'],\n}: ConfigureMediaQueryOptions = {}) => {\n if (conf) {\n console.warn(\n `Already configured mediaQueries once (you may have called getMedia() before configureMedia())`\n )\n }\n\n if (queries) {\n conf = queries\n }\n\n // setup\n for (const key in queries) {\n const str = mediaObjectToString(queries[key])\n try {\n const getMatch = () => matchMedia(str)\n const match = getMatch()\n if (!match || typeof match.addListener !== 'function') {\n // caught below\n throw new Error('\u26A0\uFE0F No match (seeing this in RN sometimes)')\n }\n mediaState[key] = !!match.matches\n match.addListener(() => {\n const next = !!getMatch().matches\n if (next === mediaState[key]) return\n mediaState[key] = next\n const listeners = mediaQueryListeners[key]\n if (listeners?.size) {\n for (const cb of [...listeners]) {\n cb()\n }\n }\n })\n } catch (err: any) {\n console.error('Error running media query', str, err.message, err.stack)\n const isDefaultActive = defaultActive?.includes(key as any) ?? true\n mediaState[key] = isDefaultActive\n }\n }\n}\n\ntype UseMediaState = {\n selections: { [key: string]: boolean }\n nextSelections: { [key: string]: boolean }\n isRendering: boolean\n isUnmounted: boolean\n}\n\nexport const useMedia = () => {\n const forceUpdate = useForceUpdate()\n const state = useRef() as React.MutableRefObject<UseMediaState>\n if (!state.current) {\n state.current = {\n selections: {},\n nextSelections: {},\n isUnmounted: false,\n isRendering: true,\n }\n }\n state.current.isRendering = true\n\n // track usage\n useIsomorphicLayoutEffect(() => {\n const st = state.current\n st.isRendering = false\n // delete old\n for (const key in st.selections) {\n if (!(key in st.nextSelections)) {\n removeMediaQueryListener(key, forceUpdate)\n }\n }\n // add new\n for (const key in st.nextSelections) {\n if (!(key in st.selections)) {\n addMediaQueryListener(key, forceUpdate)\n }\n }\n })\n\n // unmount\n useIsomorphicLayoutEffect(() => {\n return () => {\n const st = state.current\n st.isUnmounted = true\n const allKeys = {\n ...st.selections,\n ...st.nextSelections,\n }\n for (const key in allKeys) {\n removeMediaQueryListener(key, forceUpdate)\n }\n }\n }, [])\n\n return useConstant(() => {\n const st = state.current\n return new Proxy(mediaState, {\n get(target, key: string) {\n if (!(key in mediaState)) {\n return Reflect.get(target, key)\n }\n if (!st.isUnmounted) {\n if (st.isRendering) {\n st.nextSelections[key] = true\n }\n }\n if (key in mediaState) {\n return mediaState[key]\n }\n return Reflect.get(mediaState, key)\n },\n })\n })\n}\n\nfunction camelToHyphen(str: string) {\n return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase()\n}\n\nexport function mediaObjectToString(query: string | MediaQueryObject) {\n if (typeof query === 'string') {\n return query\n }\n return Object.entries(query)\n .map(([feature, value]) => {\n feature = camelToHyphen(feature)\n if (typeof value === 'string') {\n return `(${feature}: ${value})`\n }\n if (typeof value === 'number' && /[height|width]$/.test(feature)) {\n value = `${value}px`\n }\n return `(${feature}: ${value})`\n })\n .join(' and ')\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -2,11 +2,11 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import { useForceUpdate } from "@tamagui/use-force-update";
4
4
  import { useContext, useEffect, useMemo, useRef, useState } from "react";
5
+ import { GET_DEFAULT_THEME } from "../constants/constants";
5
6
  import { useIsomorphicLayoutEffect } from "../constants/platform";
6
7
  import { Variable } from "../createVariable";
7
8
  import { ThemeContext } from "../views/ThemeContext";
8
9
  import { ThemeManagerContext } from "../views/ThemeManagerContext";
9
- import { GET_DEFAULT_THEME } from "../views/ThemeProvider";
10
10
  const areEqualSets = /* @__PURE__ */ __name((a, b) => {
11
11
  if (a.size !== b.size)
12
12
  return false;
@@ -39,7 +39,7 @@ const useTheme = /* @__PURE__ */ __name(() => {
39
39
  if (!state.current) {
40
40
  state.current = {
41
41
  uuid: {},
42
- keys: new Set(),
42
+ keys: /* @__PURE__ */ new Set(),
43
43
  isRendering: true
44
44
  };
45
45
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/useTheme.tsx"],
4
- "sourcesContent": ["import { useForceUpdate } from '@tamagui/use-force-update'\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { Variable } from '../createVariable'\nimport { ThemeName, ThemeObject } from '../types'\nimport { ThemeContext } from '../views/ThemeContext'\nimport { ThemeManagerContext } from '../views/ThemeManagerContext'\nimport { GET_DEFAULT_THEME } from '../views/ThemeProvider'\n\ntype UseThemeState = {\n uuid: Object\n keys: Set<string>\n isRendering: boolean\n}\n\nconst areEqualSets = (a: Set<string>, b: Set<string>) => {\n if (a.size !== b.size) return false\n for (const val in a) {\n if (!b.has(val)) {\n return false\n }\n }\n return true\n}\n\nexport const useThemeName = (opts?: { parent?: true }) => {\n const parent = useContext(ThemeManagerContext)\n const [name, setName] = useState(parent.name)\n\n useIsomorphicLayoutEffect(() => {\n return parent.onChangeTheme((next, manager) => {\n setName(opts?.parent ? manager.parentName : next)\n })\n }, [parent])\n\n return name || 'light'\n}\n\nexport const useDefaultThemeName = () => {\n return useContext(ThemeContext)[GET_DEFAULT_THEME] as any as ThemeName\n}\n\nexport const useTheme = (): ThemeObject => {\n const forceUpdate = useForceUpdate()\n const manager = useContext(ThemeManagerContext)\n const themes = useContext(ThemeContext)\n const state = useRef() as React.MutableRefObject<UseThemeState>\n if (!state.current) {\n state.current = {\n uuid: {},\n keys: new Set(),\n isRendering: true,\n }\n }\n state.current.isRendering = true\n\n // track usage\n useIsomorphicLayoutEffect(() => {\n const st = state.current\n st.isRendering = false\n const cur = manager.keys.get(st.uuid)\n if (!cur || !areEqualSets(st.keys, cur)) {\n manager.track(st.uuid, st.keys)\n }\n })\n\n useEffect(() => {\n return manager.onUpdate(state.current.uuid, forceUpdate)\n }, [])\n\n const theme = (manager.name ? themes[manager.name] : themes.light) ?? themes.light\n\n return useMemo(\n () => {\n return new Proxy(theme, {\n get(_, key: string) {\n const name = manager.name\n if (!name) {\n return Reflect.get(_, key)\n }\n let activeTheme = themes[name]\n if (!activeTheme) {\n console.error('No theme by name', name, 'only:', themes, 'keeping current theme')\n activeTheme = theme\n }\n const val = activeTheme[key]\n if (process.env.NODE_ENV === 'development') {\n if (typeof val === 'undefined') {\n console.warn(`No theme value \"${String(key)}\" in`, activeTheme, themes)\n return null\n }\n if (!(val instanceof Variable)) {\n console.warn('Non variable!', val)\n }\n if (val.name !== key) {\n console.warn('Non-matching name for variable to key', key, val.name)\n }\n }\n if (state.current.isRendering) {\n state.current.keys.add(key)\n }\n return val\n },\n })\n },\n [\n /* if concurrent mode wanted put manager.name here */\n ]\n )\n}\n"],
5
- "mappings": ";;AAAA;AACA;AAEA;AACA;AAEA;AACA;AACA;AAQA,MAAM,eAAe,wBAAC,GAAgB,MAAmB;AACvD,MAAI,EAAE,SAAS,EAAE;AAAM,WAAO;AAC9B,aAAW,OAAO,GAAG;AACnB,QAAI,CAAC,EAAE,IAAI,MAAM;AACf,aAAO;AAAA;AAAA;AAGX,SAAO;AAAA,GAPY;AAUd,MAAM,eAAe,wBAAC,SAA6B;AACxD,QAAM,SAAS,WAAW;AAC1B,QAAM,CAAC,MAAM,WAAW,SAAS,OAAO;AAExC,4BAA0B,MAAM;AAC9B,WAAO,OAAO,cAAc,CAAC,MAAM,YAAY;AAC7C,cAAQ,8BAAM,UAAS,QAAQ,aAAa;AAAA;AAAA,KAE7C,CAAC;AAEJ,SAAO,QAAQ;AAAA,GAVW;AAarB,MAAM,sBAAsB,6BAAM;AACvC,SAAO,WAAW,cAAc;AAAA,GADC;AAI5B,MAAM,WAAW,6BAAmB;AA3C3C;AA4CE,QAAM,cAAc;AACpB,QAAM,UAAU,WAAW;AAC3B,QAAM,SAAS,WAAW;AAC1B,QAAM,QAAQ;AACd,MAAI,CAAC,MAAM,SAAS;AAClB,UAAM,UAAU;AAAA,MACd,MAAM;AAAA,MACN,MAAM,IAAI;AAAA,MACV,aAAa;AAAA;AAAA;AAGjB,QAAM,QAAQ,cAAc;AAG5B,4BAA0B,MAAM;AAC9B,UAAM,KAAK,MAAM;AACjB,OAAG,cAAc;AACjB,UAAM,MAAM,QAAQ,KAAK,IAAI,GAAG;AAChC,QAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM,MAAM;AACvC,cAAQ,MAAM,GAAG,MAAM,GAAG;AAAA;AAAA;AAI9B,YAAU,MAAM;AACd,WAAO,QAAQ,SAAS,MAAM,QAAQ,MAAM;AAAA,KAC3C;AAEH,QAAM,QAAS,cAAQ,OAAO,OAAO,QAAQ,QAAQ,OAAO,UAA7C,YAAuD,OAAO;AAE7E,SAAO,QACL,MAAM;AACJ,WAAO,IAAI,MAAM,OAAO;AAAA,MACtB,IAAI,GAAG,KAAa;AAClB,cAAM,OAAO,QAAQ;AACrB,YAAI,CAAC,MAAM;AACT,iBAAO,QAAQ,IAAI,GAAG;AAAA;AAExB,YAAI,cAAc,OAAO;AACzB,YAAI,CAAC,aAAa;AAChB,kBAAQ,MAAM,oBAAoB,MAAM,SAAS,QAAQ;AACzD,wBAAc;AAAA;AAEhB,cAAM,MAAM,YAAY;AACxB,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,cAAI,OAAO,QAAQ,aAAa;AAC9B,oBAAQ,KAAK,mBAAmB,OAAO,YAAY,aAAa;AAChE,mBAAO;AAAA;AAET,cAAI,CAAE,gBAAe,WAAW;AAC9B,oBAAQ,KAAK,iBAAiB;AAAA;AAEhC,cAAI,IAAI,SAAS,KAAK;AACpB,oBAAQ,KAAK,yCAAyC,KAAK,IAAI;AAAA;AAAA;AAGnE,YAAI,MAAM,QAAQ,aAAa;AAC7B,gBAAM,QAAQ,KAAK,IAAI;AAAA;AAEzB,eAAO;AAAA;AAAA;AAAA,KAIb;AAAA,GA/DoB;",
4
+ "sourcesContent": ["import { useForceUpdate } from '@tamagui/use-force-update'\nimport React, { useContext, useEffect, useMemo, useRef, useState } from 'react'\n\nimport { GET_DEFAULT_THEME } from '../constants/constants'\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { Variable } from '../createVariable'\nimport { ThemeName, ThemeObject } from '../types'\nimport { ThemeContext } from '../views/ThemeContext'\nimport { ThemeManagerContext } from '../views/ThemeManagerContext'\n\ntype UseThemeState = {\n uuid: Object\n keys: Set<string>\n isRendering: boolean\n}\n\nconst areEqualSets = (a: Set<string>, b: Set<string>) => {\n if (a.size !== b.size) return false\n for (const val in a) {\n if (!b.has(val)) {\n return false\n }\n }\n return true\n}\n\nexport const useThemeName = (opts?: { parent?: true }) => {\n const parent = useContext(ThemeManagerContext)\n const [name, setName] = useState(parent.name)\n\n useIsomorphicLayoutEffect(() => {\n return parent.onChangeTheme((next, manager) => {\n setName(opts?.parent ? manager.parentName : next)\n })\n }, [parent])\n\n return name || 'light'\n}\n\nexport const useDefaultThemeName = () => {\n return useContext(ThemeContext)[GET_DEFAULT_THEME] as any as ThemeName\n}\n\nexport const useTheme = (): ThemeObject => {\n const forceUpdate = useForceUpdate()\n const manager = useContext(ThemeManagerContext)\n const themes = useContext(ThemeContext)\n const state = useRef() as React.MutableRefObject<UseThemeState>\n if (!state.current) {\n state.current = {\n uuid: {},\n keys: new Set(),\n isRendering: true,\n }\n }\n state.current.isRendering = true\n\n // track usage\n useIsomorphicLayoutEffect(() => {\n const st = state.current\n st.isRendering = false\n const cur = manager.keys.get(st.uuid)\n if (!cur || !areEqualSets(st.keys, cur)) {\n manager.track(st.uuid, st.keys)\n }\n })\n\n useEffect(() => {\n return manager.onUpdate(state.current.uuid, forceUpdate)\n }, [])\n\n const theme = (manager.name ? themes[manager.name] : themes.light) ?? themes.light\n\n return useMemo(\n () => {\n return new Proxy(theme, {\n get(_, key: string) {\n const name = manager.name\n if (!name) {\n return Reflect.get(_, key)\n }\n let activeTheme = themes[name]\n if (!activeTheme) {\n console.error('No theme by name', name, 'only:', themes, 'keeping current theme')\n activeTheme = theme\n }\n const val = activeTheme[key]\n if (process.env.NODE_ENV === 'development') {\n if (typeof val === 'undefined') {\n console.warn(`No theme value \"${String(key)}\" in`, activeTheme, themes)\n return null\n }\n if (!(val instanceof Variable)) {\n console.warn('Non variable!', val)\n }\n if (val.name !== key) {\n console.warn('Non-matching name for variable to key', key, val.name)\n }\n }\n if (state.current.isRendering) {\n state.current.keys.add(key)\n }\n return val\n },\n })\n },\n [\n /* if concurrent mode wanted put manager.name here */\n ]\n )\n}\n"],
5
+ "mappings": ";;AAAA;AACA;AAEA;AACA;AACA;AAEA;AACA;AAQA,MAAM,eAAe,wBAAC,GAAgB,MAAmB;AACvD,MAAI,EAAE,SAAS,EAAE;AAAM,WAAO;AAC9B,aAAW,OAAO,GAAG;AACnB,QAAI,CAAC,EAAE,IAAI,MAAM;AACf,aAAO;AAAA;AAAA;AAGX,SAAO;AAAA,GAPY;AAUd,MAAM,eAAe,wBAAC,SAA6B;AACxD,QAAM,SAAS,WAAW;AAC1B,QAAM,CAAC,MAAM,WAAW,SAAS,OAAO;AAExC,4BAA0B,MAAM;AAC9B,WAAO,OAAO,cAAc,CAAC,MAAM,YAAY;AAC7C,cAAQ,8BAAM,UAAS,QAAQ,aAAa;AAAA;AAAA,KAE7C,CAAC;AAEJ,SAAO,QAAQ;AAAA,GAVW;AAarB,MAAM,sBAAsB,6BAAM;AACvC,SAAO,WAAW,cAAc;AAAA,GADC;AAI5B,MAAM,WAAW,6BAAmB;AA3C3C;AA4CE,QAAM,cAAc;AACpB,QAAM,UAAU,WAAW;AAC3B,QAAM,SAAS,WAAW;AAC1B,QAAM,QAAQ;AACd,MAAI,CAAC,MAAM,SAAS;AAClB,UAAM,UAAU;AAAA,MACd,MAAM;AAAA,MACN,MAAM,oBAAI;AAAA,MACV,aAAa;AAAA;AAAA;AAGjB,QAAM,QAAQ,cAAc;AAG5B,4BAA0B,MAAM;AAC9B,UAAM,KAAK,MAAM;AACjB,OAAG,cAAc;AACjB,UAAM,MAAM,QAAQ,KAAK,IAAI,GAAG;AAChC,QAAI,CAAC,OAAO,CAAC,aAAa,GAAG,MAAM,MAAM;AACvC,cAAQ,MAAM,GAAG,MAAM,GAAG;AAAA;AAAA;AAI9B,YAAU,MAAM;AACd,WAAO,QAAQ,SAAS,MAAM,QAAQ,MAAM;AAAA,KAC3C;AAEH,QAAM,QAAS,cAAQ,OAAO,OAAO,QAAQ,QAAQ,OAAO,UAA7C,YAAuD,OAAO;AAE7E,SAAO,QACL,MAAM;AACJ,WAAO,IAAI,MAAM,OAAO;AAAA,MACtB,IAAI,GAAG,KAAa;AAClB,cAAM,OAAO,QAAQ;AACrB,YAAI,CAAC,MAAM;AACT,iBAAO,QAAQ,IAAI,GAAG;AAAA;AAExB,YAAI,cAAc,OAAO;AACzB,YAAI,CAAC,aAAa;AAChB,kBAAQ,MAAM,oBAAoB,MAAM,SAAS,QAAQ;AACzD,wBAAc;AAAA;AAEhB,cAAM,MAAM,YAAY;AACxB,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,cAAI,OAAO,QAAQ,aAAa;AAC9B,oBAAQ,KAAK,mBAAmB,OAAO,YAAY,aAAa;AAChE,mBAAO;AAAA;AAET,cAAI,CAAE,gBAAe,WAAW;AAC9B,oBAAQ,KAAK,iBAAiB;AAAA;AAEhC,cAAI,IAAI,SAAS,KAAK;AACpB,oBAAQ,KAAK,yCAAyC,KAAK,IAAI;AAAA;AAAA;AAGnE,YAAI,MAAM,QAAQ,aAAa;AAC7B,gBAAM,QAAQ,KAAK,IAAI;AAAA;AAEzB,eAAO;AAAA;AAAA;AAAA,KAIb;AAAA,GA/DoB;",
6
6
  "names": []
7
7
  }
package/dist/esm/index.js CHANGED
@@ -7,10 +7,19 @@ import { createTokens } from "./createTokens";
7
7
  export * from "./createVariable";
8
8
  export * from "./styled";
9
9
  export * from "./types";
10
+ import {
11
+ getHasConfigured,
12
+ getTamagui,
13
+ getThemes,
14
+ getTokens,
15
+ onConfiguredOnce,
16
+ ConfigListener
17
+ } from "./conf";
10
18
  export * from "./constants/pseudos";
11
19
  export * from "./constants/constants";
12
20
  export * from "./constants/platform";
13
21
  export * from "./constants/rnw";
22
+ export * from "./helpers/getThemeParentClassName";
14
23
  export * from "./helpers/isObj";
15
24
  export * from "./helpers/getStylesAtomic";
16
25
  export * from "./helpers/matchMedia";
@@ -27,6 +36,12 @@ export * from "./views/ThemeInverse";
27
36
  export * from "./views/ThemeProvider";
28
37
  export * from "./views/TextAncestorContext";
29
38
  export {
30
- createTokens
39
+ ConfigListener,
40
+ createTokens,
41
+ getHasConfigured,
42
+ getTamagui,
43
+ getThemes,
44
+ getTokens,
45
+ onConfiguredOnce
31
46
  };
32
47
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport { createTokens } from './createTokens'\nexport * from './createVariable'\nexport * from './styled'\nexport * from './types'\n\nexport * from './constants/pseudos'\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport * from './constants/rnw'\n\nexport * from './helpers/isObj'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/matchMedia'\nexport * from './helpers/themeable'\nexport * from './helpers/isTamaguiElement'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useMedia'\nexport * from './hooks/useTheme'\n\nexport * from './views/Animated'\nexport * from './views/Stack'\nexport * from './views/Text'\nexport * from './views/Theme'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/TextAncestorContext'\n"],
5
- "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;",
4
+ "sourcesContent": ["export * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport { createTokens } from './createTokens'\nexport * from './createVariable'\nexport * from './styled'\nexport * from './types'\nexport {\n getHasConfigured,\n getTamagui,\n getThemes,\n getTokens,\n onConfiguredOnce,\n ConfigListener,\n} from './conf'\n\nexport * from './constants/pseudos'\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport * from './constants/rnw'\n\nexport * from './helpers/getThemeParentClassName'\nexport * from './helpers/isObj'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/matchMedia'\nexport * from './helpers/themeable'\nexport * from './helpers/isTamaguiElement'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useMedia'\nexport * from './hooks/useTheme'\n\nexport * from './views/Animated'\nexport * from './views/Stack'\nexport * from './views/Text'\nexport * from './views/Theme'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/TextAncestorContext'\n"],
5
+ "mappings": "AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/styled.ts"],
4
- "sourcesContent": ["import React from 'react'\n\nimport { createComponent } from './createComponent'\nimport { extendStaticConfig } from './helpers/extendStaticConfig'\nimport { MediaProps, StaticComponent, StaticConfig, TamaguiConfig, Themes, Tokens } from './types'\n\nexport function styled<\n ParentComponent extends StaticComponent | React.Component<any>,\n Variants extends GetVariants<ParentComponent>\n>(\n Component: ParentComponent,\n options?: GetProps<ParentComponent> & {\n variants?: Variants\n },\n staticExtractionOptions?: StaticConfig\n) {\n const staticConfigProps: StaticConfig = (() => {\n if (options) {\n const { variants, ...defaultProps } = options\n return { ...staticExtractionOptions, variants, defaultProps }\n }\n return {}\n })()\n const config = extendStaticConfig(Component, staticConfigProps)\n const component = createComponent(config!) // error is good here its on init\n type VariantProps = GetVariantProps<Variants>\n return component as StaticComponent<\n // if not options/variants passed just styled(Text):\n keyof VariantProps extends never\n ? GetProps<ParentComponent>\n : // if options passed: styled(Text, { ... })\n Omit<GetProps<ParentComponent>, keyof VariantProps> &\n VariantProps &\n MediaProps<VariantProps>,\n void\n >\n}\n\n// type ParentVariants = A extends StaticComponent<any, infer Variants> ? Variants : {}\n\nexport type GetProps<A> = A extends StaticComponent<infer Props>\n ? Props\n : A extends React.Component<infer Props>\n ? Props\n : {}\n\nexport type GetVariants<ParentComponent extends StaticComponent | React.Component<any>> = void | {\n [key: string]: {\n [key: string]:\n | Partial<GetProps<ParentComponent>>\n | ((\n val: any,\n config: {\n tokens: TamaguiConfig['tokens']\n theme: Themes extends { [key: string]: infer B } ? B : unknown\n props: GetProps<ParentComponent>\n }\n ) => Partial<GetProps<ParentComponent>>)\n }\n}\n\nexport type GetVariantProps<Variants> = Variants extends void\n ? {}\n : {\n // ensure variants actually defined\n [Key in keyof Variants]?: keyof Variants[Key] extends `...${infer VariantSpread}`\n ? VariantSpread extends keyof Tokens\n ? keyof Tokens[VariantSpread] extends string | number\n ? `$${keyof Tokens[VariantSpread]}` | null\n : unknown\n : unknown\n : keyof Variants[Key] extends 'true'\n ? boolean | null\n : keyof Exclude<Variants[Key], undefined>\n }\n\n// type X = { ok: 1 }\n// type Y = { okk: 2; ok: 3 }\n// type Z = X & Y\n// type Z2 = Z\n\n// TODO get name\n// const displayName = `styled(Component)`\n// Object.defineProperty(component, 'name', {\n// value: displayName,\n// writable: false,\n// })\n"],
4
+ "sourcesContent": ["import * as React from 'react'\n\nimport { createComponent } from './createComponent'\nimport { extendStaticConfig } from './helpers/extendStaticConfig'\nimport { MediaProps, StaticComponent, StaticConfig, TamaguiConfig, Themes, Tokens } from './types'\n\nexport function styled<\n ParentComponent extends StaticComponent | React.Component<any>,\n Variants extends GetVariants<ParentComponent>\n>(\n Component: ParentComponent,\n options?: GetProps<ParentComponent> & {\n variants?: Variants\n },\n staticExtractionOptions?: StaticConfig\n) {\n const staticConfigProps: StaticConfig = (() => {\n if (options) {\n const { variants, ...defaultProps } = options\n return { ...staticExtractionOptions, variants, defaultProps }\n }\n return {}\n })()\n const config = extendStaticConfig(Component, staticConfigProps)\n const component = createComponent(config!) // error is good here its on init\n type VariantProps = GetVariantProps<Variants>\n return component as StaticComponent<\n // if not options/variants passed just styled(Text):\n keyof VariantProps extends never\n ? GetProps<ParentComponent>\n : // if options passed: styled(Text, { ... })\n Omit<GetProps<ParentComponent>, keyof VariantProps> &\n VariantProps &\n MediaProps<VariantProps>,\n void\n >\n}\n\n// type ParentVariants = A extends StaticComponent<any, infer Variants> ? Variants : {}\n\nexport type GetProps<A> = A extends StaticComponent<infer Props>\n ? Props\n : A extends React.Component<infer Props>\n ? Props\n : {}\n\nexport type GetVariants<ParentComponent extends StaticComponent | React.Component<any>> = void | {\n [key: string]: {\n [key: string]:\n | Partial<GetProps<ParentComponent>>\n | ((\n val: any,\n config: {\n tokens: TamaguiConfig['tokens']\n theme: Themes extends { [key: string]: infer B } ? B : unknown\n props: GetProps<ParentComponent>\n }\n ) => Partial<GetProps<ParentComponent>>)\n }\n}\n\nexport type GetVariantProps<Variants> = Variants extends void\n ? {}\n : {\n // ensure variants actually defined\n [Key in keyof Variants]?: keyof Variants[Key] extends `...${infer VariantSpread}`\n ? VariantSpread extends keyof Tokens\n ? keyof Tokens[VariantSpread] extends string | number\n ? `$${keyof Tokens[VariantSpread]}` | null\n : unknown\n : unknown\n : keyof Variants[Key] extends 'true'\n ? boolean | null\n : keyof Exclude<Variants[Key], undefined>\n }\n\n// type X = { ok: 1 }\n// type Y = { okk: 2; ok: 3 }\n// type Z = X & Y\n// type Z2 = Z\n\n// TODO get name\n// const displayName = `styled(Component)`\n// Object.defineProperty(component, 'name', {\n// value: displayName,\n// writable: false,\n// })\n"],
5
5
  "mappings": ";;AAEA;AACA;AAGO,gBAIL,WACA,SAGA,yBACA;AACA,QAAM,oBAAmC,OAAM;AAC7C,QAAI,SAAS;AACX,YAAM,EAAE,aAAa,iBAAiB;AACtC,aAAO,KAAK,yBAAyB,UAAU;AAAA;AAEjD,WAAO;AAAA;AAET,QAAM,SAAS,mBAAmB,WAAW;AAC7C,QAAM,YAAY,gBAAgB;AAElC,SAAO;AAAA;AApBO;",
6
6
  "names": []
7
7
  }
@@ -10,7 +10,7 @@ const ellipseStyle = {
10
10
  const Text = createComponent({
11
11
  isText: true,
12
12
  defaultProps: {
13
- display: isWeb ? "inline" : "inline-flex",
13
+ display: isWeb ? "inline" : "flex",
14
14
  boxSizing: "border-box",
15
15
  fontFamily: "System",
16
16
  wordWrap: "break-word"
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Text.tsx"],
4
- "sourcesContent": ["import { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\n\nimport { isWeb } from '../constants/platform'\nimport { createComponent } from '../createComponent'\nimport { TextProps } from '../types'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps>({\n isText: true,\n defaultProps: {\n display: isWeb ? 'inline' : 'inline-flex',\n boxSizing: 'border-box',\n fontFamily: 'System',\n wordWrap: 'break-word',\n },\n variants: {\n numberOfLines: {\n 1: ellipseStyle,\n // TODO imply fn, test 1, could do types `>1` `<2`\n '[number]': (lines) => (lines > 1 ? { WebkitLineClamp: 1 } : null),\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n },\n false: {\n userSelect: 'none',\n },\n },\n\n pressable: {\n true: {\n cursor: 'pointer',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n ...(isWeb && {\n userSelect: true,\n textOverflow: true,\n whiteSpace: true,\n wordWrap: true,\n selectable: true,\n cursor: true,\n }),\n },\n})\n"],
4
+ "sourcesContent": ["import { stylePropsTextOnly, validStyles } from '@tamagui/helpers'\n\nimport { isWeb } from '../constants/platform'\nimport { createComponent } from '../createComponent'\nimport { TextProps } from '../types'\n\nconst ellipseStyle = {\n maxWidth: '100%',\n overflow: 'hidden',\n textOverflow: 'ellipsis',\n whiteSpace: 'nowrap',\n}\n\nexport const Text = createComponent<TextProps>({\n isText: true,\n defaultProps: {\n display: isWeb ? 'inline' : 'flex',\n boxSizing: 'border-box',\n fontFamily: 'System',\n wordWrap: 'break-word',\n },\n variants: {\n numberOfLines: {\n 1: ellipseStyle,\n // TODO imply fn, test 1, could do types `>1` `<2`\n '[number]': (lines) => (lines > 1 ? { WebkitLineClamp: 1 } : null),\n },\n\n selectable: {\n true: {\n userSelect: 'text',\n },\n false: {\n userSelect: 'none',\n },\n },\n\n pressable: {\n true: {\n cursor: 'pointer',\n },\n },\n\n ellipse: {\n true: isWeb\n ? ellipseStyle\n : {\n numberOfLines: 1,\n lineBreakMode: 'clip',\n },\n },\n },\n deoptProps: new Set(isWeb ? [] : ['ellipse']),\n validStyles: {\n ...validStyles,\n ...stylePropsTextOnly,\n ...(isWeb && {\n userSelect: true,\n textOverflow: true,\n whiteSpace: true,\n wordWrap: true,\n selectable: true,\n cursor: true,\n }),\n },\n})\n"],
5
5
  "mappings": "AAAA;AAEA;AACA;AAGA,MAAM,eAAe;AAAA,EACnB,UAAU;AAAA,EACV,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AAAA;AAGP,MAAM,OAAO,gBAA2B;AAAA,EAC7C,QAAQ;AAAA,EACR,cAAc;AAAA,IACZ,SAAS,QAAQ,WAAW;AAAA,IAC5B,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,UAAU;AAAA;AAAA,EAEZ,UAAU;AAAA,IACR,eAAe;AAAA,MACb,GAAG;AAAA,MAEH,YAAY,CAAC,UAAW,QAAQ,IAAI,EAAE,iBAAiB,MAAM;AAAA;AAAA,IAG/D,YAAY;AAAA,MACV,MAAM;AAAA,QACJ,YAAY;AAAA;AAAA,MAEd,OAAO;AAAA,QACL,YAAY;AAAA;AAAA;AAAA,IAIhB,WAAW;AAAA,MACT,MAAM;AAAA,QACJ,QAAQ;AAAA;AAAA;AAAA,IAIZ,SAAS;AAAA,MACP,MAAM,QACF,eACA;AAAA,QACE,eAAe;AAAA,QACf,eAAe;AAAA;AAAA;AAAA;AAAA,EAIzB,YAAY,IAAI,IAAI,QAAQ,KAAK,CAAC;AAAA,EAClC,aAAa;AAAA,OACR;AAAA,OACA;AAAA,OACC,SAAS;AAAA,MACX,YAAY;AAAA,MACZ,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,UAAU;AAAA,MACV,YAAY;AAAA,MACZ,QAAQ;AAAA;AAAA;AAAA;",
6
6
  "names": []
7
7
  }
@@ -2,7 +2,7 @@ var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import React, { useContext, useState } from "react";
4
4
  import { isWeb, useIsomorphicLayoutEffect } from "../constants/platform";
5
- import { getThemeParentClassName } from "../createTamagui";
5
+ import { getThemeParentClassName } from "../helpers/getThemeParentClassName";
6
6
  import { useConstant } from "../hooks/useConstant";
7
7
  import { ThemeContext } from "./ThemeContext";
8
8
  import { ThemeManager, ThemeManagerContext } from "./ThemeManagerContext";
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/Theme.tsx"],
4
- "sourcesContent": ["import React, { useContext, useState } from 'react'\n\nimport { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getThemeParentClassName } from '../createTamagui'\nimport { useConstant } from '../hooks/useConstant'\nimport { ThemeName } from '../types'\nimport { ThemeContext } from './ThemeContext'\nimport { ThemeManager, ThemeManagerContext } from './ThemeManagerContext'\n\nexport type ThemeProps = {\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n children?: any\n}\n\nexport const Theme = (props: ThemeProps) => {\n const parent = useContext(ThemeManagerContext)\n const themes = useContext(ThemeContext)\n const [parentName, setParentName] = useState(parent.name || 'light')\n if (!themes) {\n console.warn('Error, no themes in context', props)\n return props.children\n }\n\n const nextNameParent = `${props.name}-${parentName}`\n const nextNameParentParent = `${props.name}-${parent.parentName}`\n const name = !props.name\n ? null\n : props.name in themes\n ? props.name\n : nextNameParent in themes\n ? nextNameParent\n : nextNameParentParent in themes\n ? nextNameParentParent\n : null\n const theme = name ? themes[name] : null\n const themeManager = useConstant<ThemeManager | null>(() => {\n if (!theme) {\n return null\n }\n const manager = new ThemeManager()\n if (name) {\n manager.setActiveTheme({ name, theme: themes[name], parentName })\n }\n return manager\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!themeManager) {\n return\n }\n if (name) {\n themeManager.setActiveTheme({ name, theme, parentName })\n }\n return parent.onChangeTheme((next) => {\n if (next) {\n themeManager.setActiveTheme({ name: next, theme: themes[next], parentName })\n setParentName(next)\n }\n })\n }, [themes, name, parentName])\n\n if (!name || !theme) {\n return props.children\n }\n\n const contents = themeManager ? (\n <ThemeManagerContext.Provider value={themeManager}>\n {props.children}\n </ThemeManagerContext.Provider>\n ) : (\n props.children\n )\n\n if (isWeb) {\n if (props.disableThemeClass) {\n return contents\n }\n if (name) {\n const color = themes[name]?.['color']?.['variable']\n return (\n <div\n className={getThemeParentClassName(props.name)}\n // in order to provide currentColor, set color by default\n style={{ display: 'contents', color }}\n >\n {contents}\n </div>\n )\n }\n }\n\n return contents\n}\n"],
4
+ "sourcesContent": ["import React, { useContext, useState } from 'react'\n\nimport { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getThemeParentClassName } from '../helpers/getThemeParentClassName'\nimport { useConstant } from '../hooks/useConstant'\nimport { ThemeName } from '../types'\nimport { ThemeContext } from './ThemeContext'\nimport { ThemeManager, ThemeManagerContext } from './ThemeManagerContext'\n\nexport type ThemeProps = {\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n children?: any\n}\n\nexport const Theme = (props: ThemeProps) => {\n const parent = useContext(ThemeManagerContext)\n const themes = useContext(ThemeContext)\n const [parentName, setParentName] = useState(parent.name || 'light')\n if (!themes) {\n console.warn('Error, no themes in context', props)\n return props.children\n }\n\n const nextNameParent = `${props.name}-${parentName}`\n const nextNameParentParent = `${props.name}-${parent.parentName}`\n const name = !props.name\n ? null\n : props.name in themes\n ? props.name\n : nextNameParent in themes\n ? nextNameParent\n : nextNameParentParent in themes\n ? nextNameParentParent\n : null\n const theme = name ? themes[name] : null\n const themeManager = useConstant<ThemeManager | null>(() => {\n if (!theme) {\n return null\n }\n const manager = new ThemeManager()\n if (name) {\n manager.setActiveTheme({ name, theme: themes[name], parentName })\n }\n return manager\n })\n\n useIsomorphicLayoutEffect(() => {\n if (!themeManager) {\n return\n }\n if (name) {\n themeManager.setActiveTheme({ name, theme, parentName })\n }\n return parent.onChangeTheme((next) => {\n if (next) {\n themeManager.setActiveTheme({ name: next, theme: themes[next], parentName })\n setParentName(next)\n }\n })\n }, [themes, name, parentName])\n\n if (!name || !theme) {\n return props.children\n }\n\n const contents = themeManager ? (\n <ThemeManagerContext.Provider value={themeManager}>\n {props.children}\n </ThemeManagerContext.Provider>\n ) : (\n props.children\n )\n\n if (isWeb) {\n if (props.disableThemeClass) {\n return contents\n }\n if (name) {\n const color = themes[name]?.['color']?.['variable']\n return (\n <div\n className={getThemeParentClassName(props.name)}\n // in order to provide currentColor, set color by default\n style={{ display: 'contents', color }}\n >\n {contents}\n </div>\n )\n }\n }\n\n return contents\n}\n"],
5
5
  "mappings": ";;AAAA;AAEA;AACA;AACA;AAEA;AACA;AAQO,MAAM,QAAQ,wBAAC,UAAsB;AAf5C;AAgBE,QAAM,SAAS,WAAW;AAC1B,QAAM,SAAS,WAAW;AAC1B,QAAM,CAAC,YAAY,iBAAiB,SAAS,OAAO,QAAQ;AAC5D,MAAI,CAAC,QAAQ;AACX,YAAQ,KAAK,+BAA+B;AAC5C,WAAO,MAAM;AAAA;AAGf,QAAM,iBAAiB,GAAG,MAAM,QAAQ;AACxC,QAAM,uBAAuB,GAAG,MAAM,QAAQ,OAAO;AACrD,QAAM,OAAO,CAAC,MAAM,OAChB,OACA,MAAM,QAAQ,SACd,MAAM,OACN,kBAAkB,SAClB,iBACA,wBAAwB,SACxB,uBACA;AACJ,QAAM,QAAQ,OAAO,OAAO,QAAQ;AACpC,QAAM,eAAe,YAAiC,MAAM;AAC1D,QAAI,CAAC,OAAO;AACV,aAAO;AAAA;AAET,UAAM,UAAU,IAAI;AACpB,QAAI,MAAM;AACR,cAAQ,eAAe,EAAE,MAAM,OAAO,OAAO,OAAO;AAAA;AAEtD,WAAO;AAAA;AAGT,4BAA0B,MAAM;AAC9B,QAAI,CAAC,cAAc;AACjB;AAAA;AAEF,QAAI,MAAM;AACR,mBAAa,eAAe,EAAE,MAAM,OAAO;AAAA;AAE7C,WAAO,OAAO,cAAc,CAAC,SAAS;AACpC,UAAI,MAAM;AACR,qBAAa,eAAe,EAAE,MAAM,MAAM,OAAO,OAAO,OAAO;AAC/D,sBAAc;AAAA;AAAA;AAAA,KAGjB,CAAC,QAAQ,MAAM;AAElB,MAAI,CAAC,QAAQ,CAAC,OAAO;AACnB,WAAO,MAAM;AAAA;AAGf,QAAM,WAAW,eACf,oCAAC,oBAAoB,UAArB;AAAA,IAA8B,OAAO;AAAA,KAClC,MAAM,YAGT,MAAM;AAGR,MAAI,OAAO;AACT,QAAI,MAAM,mBAAmB;AAC3B,aAAO;AAAA;AAET,QAAI,MAAM;AACR,YAAM,QAAQ,mBAAO,UAAP,mBAAe,aAAf,mBAA0B;AACxC,aACE,oCAAC,OAAD;AAAA,QACE,WAAW,wBAAwB,MAAM;AAAA,QAEzC,OAAO,EAAE,SAAS,YAAY;AAAA,SAE7B;AAAA;AAAA;AAMT,SAAO;AAAA,GA7EY;",
6
6
  "names": []
7
7
  }
@@ -5,9 +5,9 @@ class ThemeManager {
5
5
  constructor() {
6
6
  this.name = "light";
7
7
  this.parentName = null;
8
- this.keys = new Map();
9
- this.listeners = new Map();
10
- this.themeListeners = new Set();
8
+ this.keys = /* @__PURE__ */ new Map();
9
+ this.listeners = /* @__PURE__ */ new Map();
10
+ this.themeListeners = /* @__PURE__ */ new Set();
11
11
  this.theme = null;
12
12
  }
13
13
  setActiveTheme({
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/ThemeManagerContext.tsx"],
4
4
  "sourcesContent": ["import { createContext } from 'react'\n\ntype ThemeListener = (name: string | null, themeManager: ThemeManager) => void\n\nexport class ThemeManager {\n name: string | null = 'light'\n parentName: string | null = null\n keys = new Map<any, Set<string>>()\n listeners = new Map<any, Function>()\n themeListeners = new Set<ThemeListener>()\n theme = null\n\n setActiveTheme({\n name,\n theme,\n parentName,\n }: {\n parentName?: string | null\n name: string | null\n theme?: any\n }) {\n if (name === this.name) return\n this.name = name\n this.theme = theme\n this.parentName = parentName || null\n this.update()\n }\n\n track(uuid: any, keys: Set<string>) {\n if (!this.name) return\n this.keys.set(uuid, keys)\n }\n\n update() {\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>(new ThemeManager())\n"],
5
- "mappings": ";;AAAA;AAIO,mBAAmB;AAAA,EAAnB,cAJP;AAKE,gBAAsB;AACtB,sBAA4B;AAC5B,gBAAO,IAAI;AACX,qBAAY,IAAI;AAChB,0BAAiB,IAAI;AACrB,iBAAQ;AAAA;AAAA,EAER,eAAe;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,KAKC;AACD,QAAI,SAAS,KAAK;AAAM;AACxB,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,aAAa,cAAc;AAChC,SAAK;AAAA;AAAA,EAGP,MAAM,MAAW,MAAmB;AAClC,QAAI,CAAC,KAAK;AAAM;AAChB,SAAK,KAAK,IAAI,MAAM;AAAA;AAAA,EAGtB,SAAS;AAjCX;AAkCI,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,KAAK;AAAA;AAEZ,eAAW,CAAC,MAAM,SAAS,KAAK,KAAK,WAAW;AAC9C,UAAI,KAAK,MAAM;AACb,mBAAK,UAAU,IAAI,UAAnB;AAAA;AAAA;AAGJ,SAAK,eAAe,QAAQ,CAAC,OAAO,GAAG,KAAK,MAAM;AAAA;AAAA,EAGpD,cAAc,IAAmB;AAC/B,SAAK,eAAe,IAAI;AACxB,WAAO,MAAM;AACX,WAAK,eAAe,OAAO;AAAA;AAAA;AAAA,EAI/B,SAAS,MAAW,IAAc;AAChC,SAAK,UAAU,IAAI,MAAM;AACzB,WAAO,MAAM;AACX,WAAK,UAAU,OAAO;AACtB,WAAK,KAAK,OAAO;AAAA;AAAA;AAAA;AApDhB;AAyDA,MAAM,sBAAsB,cAA4B,IAAI;",
5
+ "mappings": ";;AAAA;AAIO,mBAAmB;AAAA,EAAnB,cAJP;AAKE,gBAAsB;AACtB,sBAA4B;AAC5B,gBAAO,oBAAI;AACX,qBAAY,oBAAI;AAChB,0BAAiB,oBAAI;AACrB,iBAAQ;AAAA;AAAA,EAER,eAAe;AAAA,IACb;AAAA,IACA;AAAA,IACA;AAAA,KAKC;AACD,QAAI,SAAS,KAAK;AAAM;AACxB,SAAK,OAAO;AACZ,SAAK,QAAQ;AACb,SAAK,aAAa,cAAc;AAChC,SAAK;AAAA;AAAA,EAGP,MAAM,MAAW,MAAmB;AAClC,QAAI,CAAC,KAAK;AAAM;AAChB,SAAK,KAAK,IAAI,MAAM;AAAA;AAAA,EAGtB,SAAS;AAjCX;AAkCI,QAAI,CAAC,KAAK,MAAM;AACd,WAAK,KAAK;AAAA;AAEZ,eAAW,CAAC,MAAM,SAAS,KAAK,KAAK,WAAW;AAC9C,UAAI,KAAK,MAAM;AACb,mBAAK,UAAU,IAAI,UAAnB;AAAA;AAAA;AAGJ,SAAK,eAAe,QAAQ,CAAC,OAAO,GAAG,KAAK,MAAM;AAAA;AAAA,EAGpD,cAAc,IAAmB;AAC/B,SAAK,eAAe,IAAI;AACxB,WAAO,MAAM;AACX,WAAK,eAAe,OAAO;AAAA;AAAA;AAAA,EAI/B,SAAS,MAAW,IAAc;AAChC,SAAK,UAAU,IAAI,MAAM;AACzB,WAAO,MAAM;AACX,WAAK,UAAU,OAAO;AACtB,WAAK,KAAK,OAAO;AAAA;AAAA;AAAA;AApDhB;AAyDA,MAAM,sBAAsB,cAA4B,IAAI;",
6
6
  "names": []
7
7
  }
@@ -1,11 +1,12 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import React, { useMemo } from "react";
4
+ import { getHasConfigured } from "../conf";
5
+ import { GET_DEFAULT_THEME } from "../constants/constants";
4
6
  import { useIsomorphicLayoutEffect } from "../constants/platform";
5
- import { getHasConfigured, getThemeParentClassName } from "../createTamagui";
7
+ import { getThemeParentClassName } from "../helpers/getThemeParentClassName";
6
8
  import { Theme } from "./Theme";
7
9
  import { ThemeContext } from "./ThemeContext";
8
- const GET_DEFAULT_THEME = "___TGUI";
9
10
  const ThemeProvider = /* @__PURE__ */ __name((props) => {
10
11
  if (!getHasConfigured()) {
11
12
  throw new Error(`Missing configureThemes() call, add to your root file`);
@@ -39,7 +40,6 @@ const ThemeProvider = /* @__PURE__ */ __name((props) => {
39
40
  }, props.children));
40
41
  }, "ThemeProvider");
41
42
  export {
42
- GET_DEFAULT_THEME,
43
43
  ThemeProvider
44
44
  };
45
45
  //# sourceMappingURL=ThemeProvider.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/views/ThemeProvider.tsx"],
4
- "sourcesContent": ["import React, { useMemo } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getHasConfigured, getThemeParentClassName } from '../createTamagui'\nimport { Theme } from './Theme'\nimport { ThemeContext } from './ThemeContext'\n\nexport type ThemeProviderProps = {\n themes: any\n defaultTheme: string\n disableRootThemeClass?: boolean\n children?: any\n}\n\nexport const GET_DEFAULT_THEME = '___TGUI'\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n if (!getHasConfigured()) {\n throw new Error(`Missing configureThemes() call, add to your root file`)\n }\n\n // ensure theme is attached to root body node as well to work with modals by default\n useIsomorphicLayoutEffect(() => {\n if (props.disableRootThemeClass) {\n return\n }\n if (typeof document !== 'undefined') {\n const cns = getThemeParentClassName(`${props.defaultTheme}`).split(' ')\n cns.forEach((cn) => document.body.classList.add(cn))\n return () => {\n cns.forEach((cn) => document.body.classList.remove(cn))\n }\n }\n }, [])\n\n const themeContext = useMemo(() => {\n return new Proxy(props.themes, {\n get(target, key) {\n if (key === GET_DEFAULT_THEME) return props.defaultTheme\n return Reflect.get(target, key)\n },\n })\n }, [props.themes])\n\n return (\n <ThemeContext.Provider value={themeContext}>\n <Theme name={props.defaultTheme} disableThemeClass={props.disableRootThemeClass}>\n {props.children}\n </Theme>\n </ThemeContext.Provider>\n )\n}\n"],
5
- "mappings": ";;AAAA;AAEA;AACA;AACA;AACA;AASO,MAAM,oBAAoB;AAE1B,MAAM,gBAAgB,wBAAC,UAA8B;AAC1D,MAAI,CAAC,oBAAoB;AACvB,UAAM,IAAI,MAAM;AAAA;AAIlB,4BAA0B,MAAM;AAC9B,QAAI,MAAM,uBAAuB;AAC/B;AAAA;AAEF,QAAI,OAAO,aAAa,aAAa;AACnC,YAAM,MAAM,wBAAwB,GAAG,MAAM,gBAAgB,MAAM;AACnE,UAAI,QAAQ,CAAC,OAAO,SAAS,KAAK,UAAU,IAAI;AAChD,aAAO,MAAM;AACX,YAAI,QAAQ,CAAC,OAAO,SAAS,KAAK,UAAU,OAAO;AAAA;AAAA;AAAA,KAGtD;AAEH,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO,IAAI,MAAM,MAAM,QAAQ;AAAA,MAC7B,IAAI,QAAQ,KAAK;AACf,YAAI,QAAQ;AAAmB,iBAAO,MAAM;AAC5C,eAAO,QAAQ,IAAI,QAAQ;AAAA;AAAA;AAAA,KAG9B,CAAC,MAAM;AAEV,SACE,oCAAC,aAAa,UAAd;AAAA,IAAuB,OAAO;AAAA,KAC5B,oCAAC,OAAD;AAAA,IAAO,MAAM,MAAM;AAAA,IAAc,mBAAmB,MAAM;AAAA,KACvD,MAAM;AAAA,GA/Bc;",
4
+ "sourcesContent": ["import React, { useMemo } from 'react'\n\nimport { getHasConfigured } from '../conf'\nimport { GET_DEFAULT_THEME } from '../constants/constants'\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { getThemeParentClassName } from '../helpers/getThemeParentClassName'\nimport { Theme } from './Theme'\nimport { ThemeContext } from './ThemeContext'\n\nexport type ThemeProviderProps = {\n themes: any\n defaultTheme: string\n disableRootThemeClass?: boolean\n children?: any\n}\n\nexport const ThemeProvider = (props: ThemeProviderProps) => {\n if (!getHasConfigured()) {\n throw new Error(`Missing configureThemes() call, add to your root file`)\n }\n\n // ensure theme is attached to root body node as well to work with modals by default\n useIsomorphicLayoutEffect(() => {\n if (props.disableRootThemeClass) {\n return\n }\n if (typeof document !== 'undefined') {\n const cns = getThemeParentClassName(`${props.defaultTheme}`).split(' ')\n cns.forEach((cn) => document.body.classList.add(cn))\n return () => {\n cns.forEach((cn) => document.body.classList.remove(cn))\n }\n }\n }, [])\n\n const themeContext = useMemo(() => {\n return new Proxy(props.themes, {\n get(target, key) {\n if (key === GET_DEFAULT_THEME) return props.defaultTheme\n return Reflect.get(target, key)\n },\n })\n }, [props.themes])\n\n return (\n <ThemeContext.Provider value={themeContext}>\n <Theme name={props.defaultTheme} disableThemeClass={props.disableRootThemeClass}>\n {props.children}\n </Theme>\n </ThemeContext.Provider>\n )\n}\n"],
5
+ "mappings": ";;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AASO,MAAM,gBAAgB,wBAAC,UAA8B;AAC1D,MAAI,CAAC,oBAAoB;AACvB,UAAM,IAAI,MAAM;AAAA;AAIlB,4BAA0B,MAAM;AAC9B,QAAI,MAAM,uBAAuB;AAC/B;AAAA;AAEF,QAAI,OAAO,aAAa,aAAa;AACnC,YAAM,MAAM,wBAAwB,GAAG,MAAM,gBAAgB,MAAM;AACnE,UAAI,QAAQ,CAAC,OAAO,SAAS,KAAK,UAAU,IAAI;AAChD,aAAO,MAAM;AACX,YAAI,QAAQ,CAAC,OAAO,SAAS,KAAK,UAAU,OAAO;AAAA;AAAA;AAAA,KAGtD;AAEH,QAAM,eAAe,QAAQ,MAAM;AACjC,WAAO,IAAI,MAAM,MAAM,QAAQ;AAAA,MAC7B,IAAI,QAAQ,KAAK;AACf,YAAI,QAAQ;AAAmB,iBAAO,MAAM;AAC5C,eAAO,QAAQ,IAAI,QAAQ;AAAA;AAAA;AAAA,KAG9B,CAAC,MAAM;AAEV,SACE,oCAAC,aAAa,UAAd;AAAA,IAAuB,OAAO;AAAA,KAC5B,oCAAC,OAAD;AAAA,IAAO,MAAM,MAAM;AAAA,IAAc,mBAAmB,MAAM;AAAA,KACvD,MAAM;AAAA,GA/Bc;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,28 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ let conf;
4
+ const setConfig = /* @__PURE__ */ __name((next) => {
5
+ conf = next;
6
+ }, "setConfig");
7
+ const getHasConfigured = /* @__PURE__ */ __name(() => !!conf, "getHasConfigured");
8
+ const getTamagui = /* @__PURE__ */ __name(() => conf, "getTamagui");
9
+ const getTokens = /* @__PURE__ */ __name(() => conf.tokensParsed, "getTokens");
10
+ const getThemes = /* @__PURE__ */ __name(() => conf.themes, "getThemes");
11
+ const configListeners = /* @__PURE__ */ new Set();
12
+ const onConfiguredOnce = /* @__PURE__ */ __name((cb) => {
13
+ if (conf) {
14
+ cb(conf);
15
+ } else {
16
+ configListeners.add(cb);
17
+ }
18
+ }, "onConfiguredOnce");
19
+ export {
20
+ conf,
21
+ configListeners,
22
+ getHasConfigured,
23
+ getTamagui,
24
+ getThemes,
25
+ getTokens,
26
+ onConfiguredOnce,
27
+ setConfig
28
+ };
@@ -1,4 +1,6 @@
1
1
  import { isWeb } from "./platform";
2
+ const GET_DEFAULT_THEME = "___TGUI";
3
+ const PREFIX = `theme--`;
2
4
  const stackDefaultStyles = {
3
5
  alignItems: "stretch",
4
6
  flexShrink: 0,
@@ -9,5 +11,7 @@ const stackDefaultStyles = {
9
11
  }
10
12
  };
11
13
  export {
14
+ GET_DEFAULT_THEME,
15
+ PREFIX,
12
16
  stackDefaultStyles
13
17
  };
@@ -14,10 +14,10 @@ import {
14
14
  useState
15
15
  } from "react";
16
16
  import { StyleSheet, Text, View } from "react-native";
17
+ import { onConfiguredOnce } from "./conf";
17
18
  import { stackDefaultStyles } from "./constants/constants";
18
19
  import { isTouchDevice, isWeb } from "./constants/platform";
19
20
  import { rnw } from "./constants/rnw";
20
- import { onConfiguredOnce } from "./createTamagui";
21
21
  import { addStylesUsingClassname, useStylesAsClassname } from "./helpers/addStylesUsingClassname";
22
22
  import { extendStaticConfig, parseStaticConfig } from "./helpers/extendStaticConfig";
23
23
  import { getSplitStyles } from "./helpers/getSplitStyles";
@@ -25,7 +25,7 @@ import { useFeatures } from "./hooks/useFeatures";
25
25
  import { usePressable } from "./hooks/usePressable";
26
26
  import { useTheme } from "./hooks/useTheme";
27
27
  import { TextAncestorContext } from "./views/TextAncestorContext";
28
- const mouseUps = new Set();
28
+ const mouseUps = /* @__PURE__ */ new Set();
29
29
  if (typeof document !== "undefined") {
30
30
  document.addEventListener("mouseup", () => {
31
31
  mouseUps.forEach((x) => x());
@@ -61,7 +61,7 @@ function createComponent(configIn) {
61
61
  const validStyleProps = validStyles != null ? validStyles : stylePropsView;
62
62
  let defaultProps = null;
63
63
  let tamaguiConfig;
64
- let defaultsStyle;
64
+ let defaultNativeStyle = null;
65
65
  let defaultsClassName = "";
66
66
  let initialTheme;
67
67
  const component = forwardRef((props, forwardedRef) => {
@@ -170,6 +170,7 @@ function createComponent(configIn) {
170
170
  const isHovering = !isTouchDevice && !disabled && pseudos && state.hover;
171
171
  const isPressing = !disabled && pseudos && state.press;
172
172
  const styles = [
173
+ defaultNativeStyle ? defaultNativeStyle.base : null,
173
174
  style,
174
175
  isHovering ? pseudos.hoverStyle || null : null,
175
176
  isPressing ? pseudos.pressStyle || null : null
@@ -346,10 +347,13 @@ function createComponent(configIn) {
346
347
  }
347
348
  defaultsClassName += addStylesUsingClassname([next.style, next.pseudos]);
348
349
  } else {
349
- if (!hasWarnedOnce) {
350
- hasWarnedOnce = true;
351
- console.log("\u26A0\uFE0F TODO account for default styles for media queries");
350
+ const sheetStyles = {};
351
+ for (const style of next.style) {
352
+ Object.assign(sheetStyles, style);
352
353
  }
354
+ defaultNativeStyle = StyleSheet.create({
355
+ base: sheetStyles
356
+ });
353
357
  }
354
358
  component.defaultProps = {
355
359
  ...next.viewProps,
@@ -1,29 +1,18 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
3
  import { getStyleRules } from "@tamagui/helpers";
4
+ import { configListeners, getHasConfigured, setConfig } from "./conf";
5
+ import { PREFIX } from "./constants/constants";
4
6
  import { isWeb } from "./constants/platform";
5
7
  import { Variable, createVariable } from "./createVariable";
6
8
  import { createTamaguiProvider } from "./helpers/createTamaguiProvider";
7
9
  import { configureMedia } from "./hooks/useMedia";
8
- let conf;
9
- const getHasConfigured = /* @__PURE__ */ __name(() => !!conf, "getHasConfigured");
10
- const getTamagui = /* @__PURE__ */ __name(() => conf, "getTamagui");
11
- const getTokens = /* @__PURE__ */ __name(() => conf.tokensParsed, "getTokens");
12
- const getThemes = /* @__PURE__ */ __name(() => conf.themes, "getThemes");
13
- const configListeners = new Set();
14
- const onConfiguredOnce = /* @__PURE__ */ __name((cb) => {
15
- if (conf) {
16
- cb(conf);
17
- } else {
18
- configListeners.add(cb);
19
- }
20
- }, "onConfiguredOnce");
21
- const PREFIX = `theme--`;
10
+ const createdConfigs = /* @__PURE__ */ new WeakMap();
22
11
  function createTamagui(config) {
23
- if (config["parsed"]) {
12
+ if (createdConfigs.has(config)) {
24
13
  return config;
25
14
  }
26
- if (conf) {
15
+ if (getHasConfigured()) {
27
16
  console.warn("Called createTamagui twice! Should never do so");
28
17
  }
29
18
  configureMedia({
@@ -33,7 +22,7 @@ function createTamagui(config) {
33
22
  const themeConfig = (() => {
34
23
  var _a;
35
24
  let cssRules = [];
36
- const varsByValue = new Map();
25
+ const varsByValue = /* @__PURE__ */ new Map();
37
26
  if (isWeb) {
38
27
  let tokenRule = `:root {`;
39
28
  const addVar = /* @__PURE__ */ __name((v) => {
@@ -102,6 +91,7 @@ ${vars}
102
91
  }
103
92
  const next = {
104
93
  shorthands: {},
94
+ media: {},
105
95
  ...config,
106
96
  Provider: createTamaguiProvider({
107
97
  defaultTheme: "light",
@@ -116,18 +106,15 @@ ${vars}
116
106
  ${[...getStyleRules()].join("\n")}`;
117
107
  }
118
108
  };
119
- conf = next;
109
+ setConfig(next);
120
110
  if (configListeners.size) {
121
111
  configListeners.forEach((cb) => cb(next));
122
112
  configListeners.clear();
123
113
  }
114
+ createdConfigs.set(next, true);
124
115
  return next;
125
116
  }
126
117
  __name(createTamagui, "createTamagui");
127
- function getThemeParentClassName(themeName) {
128
- return `theme-parent ${themeName ? `${PREFIX}${themeName}` : ""}`;
129
- }
130
- __name(getThemeParentClassName, "getThemeParentClassName");
131
118
  const parseTokens = /* @__PURE__ */ __name((tokens) => {
132
119
  const res = {};
133
120
  for (const key in tokens) {
@@ -174,11 +161,5 @@ function ensureThemeVariable(theme, key) {
174
161
  }
175
162
  __name(ensureThemeVariable, "ensureThemeVariable");
176
163
  export {
177
- createTamagui,
178
- getHasConfigured,
179
- getTamagui,
180
- getThemeParentClassName,
181
- getThemes,
182
- getTokens,
183
- onConfiguredOnce
164
+ createTamagui
184
165
  };
@@ -0,0 +1,10 @@
1
+ var __defProp = Object.defineProperty;
2
+ var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
3
+ import { PREFIX } from "./constants/constants";
4
+ function getThemeParentClassName(themeName) {
5
+ return `theme-parent ${themeName ? `${PREFIX}${themeName}` : ""}`;
6
+ }
7
+ __name(getThemeParentClassName, "getThemeParentClassName");
8
+ export {
9
+ getThemeParentClassName
10
+ };
@@ -3,7 +3,7 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
3
3
  import { useInsertionEffect } from "react";
4
4
  import { getStylesAtomic } from "./getStylesAtomic";
5
5
  import { insertStyleRule } from "./insertStyleRule";
6
- let added = new Set();
6
+ let added = /* @__PURE__ */ new Set();
7
7
  function useStylesAsClassname(styles) {
8
8
  if (!useInsertionEffect) {
9
9
  return addStylesUsingClassname(styles);