@tamagui/web 1.123.17 → 1.124.0

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 (246) hide show
  1. package/dist/cjs/Tamagui.cjs +1 -6
  2. package/dist/cjs/Tamagui.js +1 -5
  3. package/dist/cjs/Tamagui.js.map +1 -1
  4. package/dist/cjs/Tamagui.native.js +2 -8
  5. package/dist/cjs/Tamagui.native.js.map +2 -2
  6. package/dist/cjs/createComponent.cjs +9 -13
  7. package/dist/cjs/createComponent.js +10 -8
  8. package/dist/cjs/createComponent.js.map +1 -1
  9. package/dist/cjs/createComponent.native.js +17 -19
  10. package/dist/cjs/createComponent.native.js.map +2 -2
  11. package/dist/cjs/helpers/createShallowSetState.cjs +7 -4
  12. package/dist/cjs/helpers/createShallowSetState.js +12 -6
  13. package/dist/cjs/helpers/createShallowSetState.js.map +1 -1
  14. package/dist/cjs/helpers/createShallowSetState.native.js +10 -4
  15. package/dist/cjs/helpers/createShallowSetState.native.js.map +2 -2
  16. package/dist/cjs/hooks/{shouldDeoptDueToParentScheme.cjs → doesRootSchemeMatchSystem.cjs} +5 -5
  17. package/dist/cjs/hooks/{shouldDeoptDueToParentScheme.js → doesRootSchemeMatchSystem.js} +6 -6
  18. package/dist/cjs/hooks/doesRootSchemeMatchSystem.js.map +6 -0
  19. package/dist/cjs/hooks/doesRootSchemeMatchSystem.native.js +30 -0
  20. package/dist/cjs/hooks/doesRootSchemeMatchSystem.native.js.map +6 -0
  21. package/dist/cjs/hooks/getThemeProxied.cjs +58 -0
  22. package/dist/cjs/hooks/getThemeProxied.js +53 -0
  23. package/dist/cjs/hooks/getThemeProxied.js.map +6 -0
  24. package/dist/cjs/hooks/getThemeProxied.native.js +76 -0
  25. package/dist/cjs/hooks/getThemeProxied.native.js.map +6 -0
  26. package/dist/cjs/hooks/useComponentState.cjs +16 -16
  27. package/dist/cjs/hooks/useComponentState.js +22 -15
  28. package/dist/cjs/hooks/useComponentState.js.map +1 -1
  29. package/dist/cjs/hooks/useComponentState.native.js +15 -15
  30. package/dist/cjs/hooks/useComponentState.native.js.map +2 -2
  31. package/dist/cjs/hooks/useProps.cjs +2 -2
  32. package/dist/cjs/hooks/useProps.js +2 -2
  33. package/dist/cjs/hooks/useProps.js.map +1 -1
  34. package/dist/cjs/hooks/useProps.native.js +2 -2
  35. package/dist/cjs/hooks/useProps.native.js.map +2 -2
  36. package/dist/cjs/hooks/useTheme.cjs +10 -208
  37. package/dist/cjs/hooks/useTheme.js +7 -207
  38. package/dist/cjs/hooks/useTheme.js.map +2 -2
  39. package/dist/cjs/hooks/useTheme.native.js +8 -252
  40. package/dist/cjs/hooks/useTheme.native.js.map +2 -2
  41. package/dist/cjs/hooks/useThemeName.cjs +15 -27
  42. package/dist/cjs/hooks/useThemeName.js +6 -20
  43. package/dist/cjs/hooks/useThemeName.js.map +2 -2
  44. package/dist/cjs/hooks/useThemeName.native.js +16 -22
  45. package/dist/cjs/hooks/useThemeName.native.js.map +2 -2
  46. package/dist/cjs/hooks/useThemeState.cjs +187 -0
  47. package/dist/cjs/hooks/useThemeState.js +159 -0
  48. package/dist/cjs/hooks/useThemeState.js.map +6 -0
  49. package/dist/cjs/hooks/useThemeState.native.js +206 -0
  50. package/dist/cjs/hooks/useThemeState.native.js.map +6 -0
  51. package/dist/cjs/index.cjs +2 -0
  52. package/dist/cjs/index.js +2 -0
  53. package/dist/cjs/index.js.map +1 -1
  54. package/dist/cjs/index.native.js +3 -0
  55. package/dist/cjs/index.native.js.map +1 -1
  56. package/dist/cjs/views/TamaguiProvider.js.map +1 -1
  57. package/dist/cjs/views/TamaguiProvider.native.js.map +1 -1
  58. package/dist/cjs/views/Theme.cjs +81 -85
  59. package/dist/cjs/views/Theme.js +44 -51
  60. package/dist/cjs/views/Theme.js.map +2 -2
  61. package/dist/cjs/views/Theme.native.js +58 -58
  62. package/dist/cjs/views/Theme.native.js.map +2 -2
  63. package/dist/cjs/views/ThemeDebug.cjs +21 -43
  64. package/dist/cjs/views/ThemeDebug.js +18 -38
  65. package/dist/cjs/views/ThemeDebug.js.map +2 -2
  66. package/dist/cjs/views/ThemeProvider.cjs +1 -1
  67. package/dist/cjs/views/ThemeProvider.js +1 -1
  68. package/dist/cjs/views/ThemeProvider.js.map +1 -1
  69. package/dist/cjs/views/ThemeProvider.native.js +1 -1
  70. package/dist/cjs/views/ThemeProvider.native.js.map +2 -2
  71. package/dist/esm/Tamagui.js +0 -5
  72. package/dist/esm/Tamagui.js.map +1 -1
  73. package/dist/esm/Tamagui.mjs +0 -5
  74. package/dist/esm/Tamagui.mjs.map +1 -1
  75. package/dist/esm/Tamagui.native.js +1 -8
  76. package/dist/esm/Tamagui.native.js.map +2 -2
  77. package/dist/esm/createComponent.js +9 -8
  78. package/dist/esm/createComponent.js.map +1 -1
  79. package/dist/esm/createComponent.mjs +9 -13
  80. package/dist/esm/createComponent.mjs.map +1 -1
  81. package/dist/esm/createComponent.native.js +16 -19
  82. package/dist/esm/createComponent.native.js.map +2 -2
  83. package/dist/esm/helpers/createShallowSetState.js +13 -7
  84. package/dist/esm/helpers/createShallowSetState.js.map +1 -1
  85. package/dist/esm/helpers/createShallowSetState.mjs +8 -5
  86. package/dist/esm/helpers/createShallowSetState.mjs.map +1 -1
  87. package/dist/esm/helpers/createShallowSetState.native.js +11 -5
  88. package/dist/esm/helpers/createShallowSetState.native.js.map +2 -2
  89. package/dist/esm/hooks/doesRootSchemeMatchSystem.js +7 -0
  90. package/dist/esm/hooks/doesRootSchemeMatchSystem.js.map +6 -0
  91. package/dist/esm/hooks/doesRootSchemeMatchSystem.mjs +5 -0
  92. package/dist/esm/hooks/doesRootSchemeMatchSystem.mjs.map +1 -0
  93. package/dist/esm/hooks/doesRootSchemeMatchSystem.native.js +10 -0
  94. package/dist/esm/hooks/doesRootSchemeMatchSystem.native.js.map +6 -0
  95. package/dist/esm/hooks/getThemeProxied.js +40 -0
  96. package/dist/esm/hooks/getThemeProxied.js.map +6 -0
  97. package/dist/esm/hooks/getThemeProxied.mjs +35 -0
  98. package/dist/esm/hooks/getThemeProxied.mjs.map +1 -0
  99. package/dist/esm/hooks/getThemeProxied.native.js +59 -0
  100. package/dist/esm/hooks/getThemeProxied.native.js.map +6 -0
  101. package/dist/esm/hooks/useComponentState.js +22 -15
  102. package/dist/esm/hooks/useComponentState.js.map +1 -1
  103. package/dist/esm/hooks/useComponentState.mjs +16 -16
  104. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  105. package/dist/esm/hooks/useComponentState.native.js +15 -15
  106. package/dist/esm/hooks/useComponentState.native.js.map +2 -2
  107. package/dist/esm/hooks/useProps.js +2 -2
  108. package/dist/esm/hooks/useProps.js.map +1 -1
  109. package/dist/esm/hooks/useProps.mjs +2 -2
  110. package/dist/esm/hooks/useProps.mjs.map +1 -1
  111. package/dist/esm/hooks/useProps.native.js +2 -2
  112. package/dist/esm/hooks/useProps.native.js.map +2 -2
  113. package/dist/esm/hooks/useTheme.js +9 -220
  114. package/dist/esm/hooks/useTheme.js.map +2 -2
  115. package/dist/esm/hooks/useTheme.mjs +10 -205
  116. package/dist/esm/hooks/useTheme.mjs.map +1 -1
  117. package/dist/esm/hooks/useTheme.native.js +11 -257
  118. package/dist/esm/hooks/useTheme.native.js.map +2 -2
  119. package/dist/esm/hooks/useThemeName.js +4 -12
  120. package/dist/esm/hooks/useThemeName.js.map +2 -2
  121. package/dist/esm/hooks/useThemeName.mjs +11 -12
  122. package/dist/esm/hooks/useThemeName.mjs.map +1 -1
  123. package/dist/esm/hooks/useThemeName.native.js +15 -14
  124. package/dist/esm/hooks/useThemeName.native.js.map +2 -2
  125. package/dist/esm/hooks/useThemeState.js +151 -0
  126. package/dist/esm/hooks/useThemeState.js.map +6 -0
  127. package/dist/esm/hooks/useThemeState.mjs +159 -0
  128. package/dist/esm/hooks/useThemeState.mjs.map +1 -0
  129. package/dist/esm/hooks/useThemeState.native.js +182 -0
  130. package/dist/esm/hooks/useThemeState.native.js.map +6 -0
  131. package/dist/esm/index.js +2 -0
  132. package/dist/esm/index.js.map +1 -1
  133. package/dist/esm/index.mjs +2 -1
  134. package/dist/esm/index.mjs.map +1 -1
  135. package/dist/esm/index.native.js +2 -0
  136. package/dist/esm/index.native.js.map +2 -2
  137. package/dist/esm/views/TamaguiProvider.js.map +1 -1
  138. package/dist/esm/views/TamaguiProvider.mjs.map +1 -1
  139. package/dist/esm/views/TamaguiProvider.native.js.map +1 -1
  140. package/dist/esm/views/Theme.js +57 -54
  141. package/dist/esm/views/Theme.js.map +2 -2
  142. package/dist/esm/views/Theme.mjs +81 -85
  143. package/dist/esm/views/Theme.mjs.map +1 -1
  144. package/dist/esm/views/Theme.native.js +61 -61
  145. package/dist/esm/views/Theme.native.js.map +2 -2
  146. package/dist/esm/views/ThemeDebug.js +16 -29
  147. package/dist/esm/views/ThemeDebug.js.map +1 -1
  148. package/dist/esm/views/ThemeDebug.mjs +16 -27
  149. package/dist/esm/views/ThemeDebug.mjs.map +1 -1
  150. package/dist/esm/views/ThemeProvider.js +2 -2
  151. package/dist/esm/views/ThemeProvider.js.map +1 -1
  152. package/dist/esm/views/ThemeProvider.mjs +2 -2
  153. package/dist/esm/views/ThemeProvider.mjs.map +1 -1
  154. package/dist/esm/views/ThemeProvider.native.js +2 -2
  155. package/dist/esm/views/ThemeProvider.native.js.map +2 -2
  156. package/package.json +11 -11
  157. package/src/Tamagui.ts +0 -6
  158. package/src/createComponent.tsx +19 -28
  159. package/src/helpers/createShallowSetState.tsx +17 -8
  160. package/src/hooks/doesRootSchemeMatchSystem.native.ts +7 -0
  161. package/src/hooks/doesRootSchemeMatchSystem.ts +4 -0
  162. package/src/hooks/getThemeProxied.ts +165 -0
  163. package/src/hooks/useComponentState.ts +26 -21
  164. package/src/hooks/useProps.tsx +2 -2
  165. package/src/hooks/useTheme.tsx +22 -633
  166. package/src/hooks/useThemeName.tsx +6 -18
  167. package/src/hooks/useThemeState.ts +341 -0
  168. package/src/index.ts +1 -0
  169. package/src/types.tsx +2 -2
  170. package/src/views/TamaguiProvider.tsx +1 -1
  171. package/src/views/Theme.tsx +129 -132
  172. package/src/views/ThemeDebug.native.tsx +2 -2
  173. package/src/views/ThemeDebug.tsx +17 -39
  174. package/src/views/ThemeProvider.tsx +2 -2
  175. package/types/Tamagui.d.ts +0 -2
  176. package/types/Tamagui.d.ts.map +1 -1
  177. package/types/createComponent.d.ts.map +1 -1
  178. package/types/helpers/createShallowSetState.d.ts +1 -1
  179. package/types/helpers/createShallowSetState.d.ts.map +1 -1
  180. package/types/hooks/doesRootSchemeMatchSystem.d.ts +2 -0
  181. package/types/hooks/doesRootSchemeMatchSystem.d.ts.map +1 -0
  182. package/types/hooks/doesRootSchemeMatchSystem.native.d.ts +2 -0
  183. package/types/hooks/doesRootSchemeMatchSystem.native.d.ts.map +1 -0
  184. package/types/hooks/getThemeProxied.d.ts +25 -0
  185. package/types/hooks/getThemeProxied.d.ts.map +1 -0
  186. package/types/hooks/useComponentState.d.ts.map +1 -1
  187. package/types/hooks/useConfiguration.d.ts.map +1 -1
  188. package/types/hooks/useTheme.d.ts +9 -36
  189. package/types/hooks/useTheme.d.ts.map +1 -1
  190. package/types/hooks/useThemeName.d.ts +1 -3
  191. package/types/hooks/useThemeName.d.ts.map +1 -1
  192. package/types/hooks/useThemeState.d.ts +22 -0
  193. package/types/hooks/useThemeState.d.ts.map +1 -0
  194. package/types/index.d.ts +1 -0
  195. package/types/index.d.ts.map +1 -1
  196. package/types/types.d.ts +2 -2
  197. package/types/types.d.ts.map +1 -1
  198. package/types/views/Theme.d.ts +3 -3
  199. package/types/views/Theme.d.ts.map +1 -1
  200. package/types/views/ThemeDebug.d.ts +2 -2
  201. package/types/views/ThemeDebug.d.ts.map +1 -1
  202. package/types/views/ThemeDebug.native.d.ts +2 -2
  203. package/types/views/ThemeDebug.native.d.ts.map +1 -1
  204. package/dist/cjs/helpers/ThemeManager.cjs +0 -202
  205. package/dist/cjs/helpers/ThemeManager.js +0 -183
  206. package/dist/cjs/helpers/ThemeManager.js.map +0 -6
  207. package/dist/cjs/helpers/ThemeManager.native.js +0 -282
  208. package/dist/cjs/helpers/ThemeManager.native.js.map +0 -6
  209. package/dist/cjs/helpers/ThemeManagerContext.cjs +0 -38
  210. package/dist/cjs/helpers/ThemeManagerContext.js +0 -30
  211. package/dist/cjs/helpers/ThemeManagerContext.js.map +0 -6
  212. package/dist/cjs/helpers/ThemeManagerContext.native.js +0 -34
  213. package/dist/cjs/helpers/ThemeManagerContext.native.js.map +0 -6
  214. package/dist/cjs/hooks/shouldDeoptDueToParentScheme.js.map +0 -6
  215. package/dist/cjs/hooks/shouldDeoptDueToParentScheme.native.js +0 -50
  216. package/dist/cjs/hooks/shouldDeoptDueToParentScheme.native.js.map +0 -6
  217. package/dist/esm/helpers/ThemeManager.js +0 -169
  218. package/dist/esm/helpers/ThemeManager.js.map +0 -6
  219. package/dist/esm/helpers/ThemeManager.mjs +0 -177
  220. package/dist/esm/helpers/ThemeManager.mjs.map +0 -1
  221. package/dist/esm/helpers/ThemeManager.native.js +0 -261
  222. package/dist/esm/helpers/ThemeManager.native.js.map +0 -6
  223. package/dist/esm/helpers/ThemeManagerContext.js +0 -6
  224. package/dist/esm/helpers/ThemeManagerContext.js.map +0 -6
  225. package/dist/esm/helpers/ThemeManagerContext.mjs +0 -4
  226. package/dist/esm/helpers/ThemeManagerContext.mjs.map +0 -1
  227. package/dist/esm/helpers/ThemeManagerContext.native.js +0 -6
  228. package/dist/esm/helpers/ThemeManagerContext.native.js.map +0 -6
  229. package/dist/esm/hooks/shouldDeoptDueToParentScheme.js +0 -7
  230. package/dist/esm/hooks/shouldDeoptDueToParentScheme.js.map +0 -6
  231. package/dist/esm/hooks/shouldDeoptDueToParentScheme.mjs +0 -5
  232. package/dist/esm/hooks/shouldDeoptDueToParentScheme.mjs.map +0 -1
  233. package/dist/esm/hooks/shouldDeoptDueToParentScheme.native.js +0 -29
  234. package/dist/esm/hooks/shouldDeoptDueToParentScheme.native.js.map +0 -6
  235. package/src/helpers/ThemeManager.tsx +0 -405
  236. package/src/helpers/ThemeManagerContext.tsx +0 -4
  237. package/src/hooks/shouldDeoptDueToParentScheme.native.tsx +0 -37
  238. package/src/hooks/shouldDeoptDueToParentScheme.tsx +0 -6
  239. package/types/helpers/ThemeManager.d.ts +0 -45
  240. package/types/helpers/ThemeManager.d.ts.map +0 -1
  241. package/types/helpers/ThemeManagerContext.d.ts +0 -4
  242. package/types/helpers/ThemeManagerContext.d.ts.map +0 -1
  243. package/types/hooks/shouldDeoptDueToParentScheme.d.ts +0 -3
  244. package/types/hooks/shouldDeoptDueToParentScheme.d.ts.map +0 -1
  245. package/types/hooks/shouldDeoptDueToParentScheme.native.d.ts +0 -3
  246. package/types/hooks/shouldDeoptDueToParentScheme.native.d.ts.map +0 -1
@@ -1,17 +1,18 @@
1
- import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import React from "react";
3
- import { ThemeManagerContext } from "../helpers/ThemeManagerContext";
4
- function useThemeName(opts) {
5
- var manager = React.useContext(ThemeManagerContext), [name, setName] = React.useState(manager?.state.name || "");
6
- return useIsomorphicLayoutEffect(function() {
7
- if (manager)
8
- return setName(manager.state.name), manager.onChangeTheme(function(next, manager2) {
9
- var name2 = opts?.parent && manager2.state.parentName || next;
10
- name2 && setName(name2);
11
- });
12
- }, [
13
- manager?.state.name
14
- ]), name;
1
+ import { useThemeState } from "./useThemeState";
2
+ var forceUpdateState = {
3
+ forceClassName: !0,
4
+ deopt: !0,
5
+ needsUpdate: function() {
6
+ return !0;
7
+ }
8
+ }, forceKeys = {
9
+ current: /* @__PURE__ */ new Set([
10
+ ""
11
+ ])
12
+ };
13
+ function useThemeName() {
14
+ var _useThemeState;
15
+ return ((_useThemeState = useThemeState(forceUpdateState, !1, forceKeys)) === null || _useThemeState === void 0 ? void 0 : _useThemeState.name) || "";
15
16
  }
16
17
  export {
17
18
  useThemeName
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/hooks/Users/n8/tamagui/code/core/web/src/hooks/useThemeName.tsx"],
4
- "mappings": "AAAA,SAASA,iCAAiC;AAC1C,OAAOC,WAAW;AAClB,SAASC,2BAA2B;AAG7B,SAASC,aAAaC,MAAwB;AACnD,MAAMC,UAAUJ,MAAMK,WAAWJ,mBAAAA,GAC3B,CAACK,MAAMC,OAAAA,IAAWP,MAAMQ,SAASJ,SAASK,MAAMH,QAAQ,EAAA;AAE9DP,mCAA0B,WAAA;AACxB,QAAKK;AACLG,qBAAQH,QAAQK,MAAMH,IAAI,GACnBF,QAAQM,cAAc,SAACC,MAAMP,UAAAA;AAClC,YAAME,QAAOH,MAAMS,UAASR,SAAQK,MAAMI,cAAcF;AACxD,QAAKL,SAELC,QAAQD,KAAAA;MACV,CAAA;EACF,GAAG;IAACF,SAASK,MAAMH;GAAK,GAEjBA;AACT;",
5
- "names": ["useIsomorphicLayoutEffect", "React", "ThemeManagerContext", "useThemeName", "opts", "manager", "useContext", "name", "setName", "useState", "state", "onChangeTheme", "next", "parent", "parentName"]
4
+ "mappings": "AACA,SAASA,qBAAqB;AAG9B,IAAMC,mBAAmB;EAAEC,gBAAgB;EAAMC,OAAO;EAAMC,aAAa,WAAA;WAAM;;AAAK,GAChFC,YAAY;EAAEC,SAAS,oBAAIC,IAAI;IAAC;GAAG;AAAE;AAEpC,SAASC,eAAAA;MACPR;AAAP,WAAOA,iBAAAA,cAAcC,kBAAkB,IAAOI,SAAAA,OAAAA,QAAvCL,mBAAAA,SAAAA,SAAAA,eAAmDS,SAAQ;AACpE;",
5
+ "names": ["useThemeState", "forceUpdateState", "forceClassName", "deopt", "needsUpdate", "forceKeys", "current", "Set", "useThemeName", "name"]
6
6
  }
@@ -0,0 +1,151 @@
1
+ import {
2
+ createContext,
3
+ useCallback,
4
+ useContext,
5
+ useId,
6
+ useLayoutEffect,
7
+ useSyncExternalStore
8
+ } from "react";
9
+ import { getConfig } from "../config";
10
+ const ThemeStateContext = createContext(""), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {}, states = /* @__PURE__ */ new Map(), forceUpdateThemes = () => {
11
+ allListeners.forEach((cb) => cb());
12
+ }, getThemeState = (id) => states.get(id);
13
+ let rootThemeState = null;
14
+ const getRootThemeState = () => rootThemeState, HasRenderedOnce = /* @__PURE__ */ new WeakMap(), useThemeState = (props, isRoot = !1, keys) => {
15
+ const { disable } = props, parentId = useContext(ThemeStateContext);
16
+ if (disable)
17
+ return states.get(parentId) || {
18
+ id: "",
19
+ name: "light",
20
+ theme: getConfig().themes.light,
21
+ inverses: 0
22
+ };
23
+ const id = useId(), subscribe = useCallback(
24
+ (cb) => (listenersByParent[parentId] ||= /* @__PURE__ */ new Set(), listenersByParent[parentId].add(id), allListeners.set(id, cb), () => {
25
+ allListeners.delete(id), listenersByParent[parentId].delete(id);
26
+ }),
27
+ [id, parentId, keys]
28
+ ), propsKey = getPropsKey(props), getSnapshot = () => getSnapshotFrom(props, propsKey, isRoot, id, parentId, keys);
29
+ process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
30
+ const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
31
+ return useLayoutEffect(() => {
32
+ if (propsKey) {
33
+ if (!HasRenderedOnce.has(keys)) {
34
+ HasRenderedOnce.set(keys, !0);
35
+ return;
36
+ }
37
+ process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id);
38
+ }
39
+ }, [keys, propsKey]), process.env.NODE_ENV === "development" && props.debug && (console.groupCollapsed(
40
+ ` \xB7 useTheme(${id}) =>`,
41
+ state.name,
42
+ id === state.id ? "\u{1F389}" : "\u23ED\uFE0F"
43
+ ), console.info({
44
+ state,
45
+ parentId,
46
+ props,
47
+ propsKey,
48
+ id,
49
+ parentState: states.get(parentId)
50
+ }), console.groupEnd()), state.id === id ? { ...state, isNew: !0 } : state;
51
+ };
52
+ let themes = null;
53
+ const getSnapshotFrom = (props, propsKey, isRoot = !1, id, parentId, keys) => {
54
+ const needsUpdate = keys?.current?.size || props.needsUpdate?.(), parentState = states.get(parentId);
55
+ themes || (themes = getConfig().themes);
56
+ const lastState = states.get(id), name = propsKey ? getNewThemeName(parentState?.name, props, !!needsUpdate) : null;
57
+ if (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile") {
58
+ const message = ` \xB7 useTheme(${id}) snapshot ${name}, parent ${parentState?.id} needsUpdate ${needsUpdate}`;
59
+ console.groupCollapsed(message), console.info({ lastState, parentState, props, propsKey, id, keys }), console.groupEnd();
60
+ }
61
+ if (parentState && (!name && propsKey))
62
+ return parentState;
63
+ if (!name)
64
+ return lastState && !needsUpdate ? lastState : (states.set(id, parentState), parentState);
65
+ if (lastState && lastState.name === name)
66
+ return lastState;
67
+ const scheme = getScheme(name), parentInverses = parentState?.inverses ?? 0, isInverse = parentState && scheme !== parentState.scheme, inverses = parentInverses + (isInverse ? 1 : 0), nextState = {
68
+ id,
69
+ name,
70
+ theme: themes[name],
71
+ scheme,
72
+ parentId,
73
+ parentName: parentState?.name,
74
+ inverses,
75
+ isInverse
76
+ };
77
+ return process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F ${name}`), console.info("state", nextState), console.groupEnd()), states.set(id, nextState), isRoot && (rootThemeState = nextState), nextState;
78
+ };
79
+ function scheduleUpdate(id) {
80
+ const queue = [id], visited = /* @__PURE__ */ new Set();
81
+ for (; queue.length; ) {
82
+ const parent = queue.shift(), children = listenersByParent[parent];
83
+ if (children)
84
+ for (const childId of children)
85
+ visited.has(childId) || (visited.add(childId), queue.push(childId));
86
+ }
87
+ visited.forEach((childId) => {
88
+ allListeners.get(childId)?.();
89
+ });
90
+ }
91
+ const validSchemes = {
92
+ light: "light",
93
+ dark: "dark"
94
+ };
95
+ function getScheme(name) {
96
+ return validSchemes[name.split("_")[0]];
97
+ }
98
+ function getNewThemeName(parentName = "", { name, reset, componentName, inverse }, forceUpdate = !1) {
99
+ if (name && reset)
100
+ throw new Error(
101
+ process.env.NODE_ENV === "production" ? "\u274C004" : "Cannot reset and set a new name at the same time."
102
+ );
103
+ if (reset) {
104
+ if (!parentName) throw new Error("\u203C\uFE0F");
105
+ const lastPartIndex = parentName.lastIndexOf("_");
106
+ return lastPartIndex <= 0 ? parentName : parentName.slice(lastPartIndex);
107
+ }
108
+ const { themes: themes2 } = getConfig(), parentParts = parentName.split("_"), lastName = parentParts[parentParts.length - 1];
109
+ lastName && lastName[0].toLowerCase() !== lastName[0] && parentParts.pop();
110
+ const subNames = [
111
+ name && componentName ? `${name}_${componentName}` : void 0,
112
+ name,
113
+ componentName
114
+ ].filter(Boolean);
115
+ let found = null;
116
+ const max = parentParts.length;
117
+ for (let i = 0; i <= max; i++) {
118
+ const base = (i === 0 ? parentParts : parentParts.slice(0, -i)).join("_");
119
+ for (const subName of subNames) {
120
+ const potential = base ? `${base}_${subName}` : subName;
121
+ if (potential in themes2) {
122
+ found = potential;
123
+ break;
124
+ }
125
+ }
126
+ if (found) break;
127
+ }
128
+ if (found && inverse) {
129
+ const scheme = found.split("_")[0];
130
+ found = found.replace(new RegExp(`^${scheme}`), scheme === "light" ? "dark" : "light");
131
+ }
132
+ return !forceUpdate && found === parentName && // if its a scheme only sub-theme, we always consider it "new" because it likely inverses
133
+ // and we want to avoid reparenting
134
+ !validSchemes[found] ? null : found;
135
+ }
136
+ const getPropsKey = ({
137
+ name,
138
+ reset,
139
+ inverse,
140
+ forceClassName,
141
+ componentName
142
+ }) => `${name || ""}${inverse || ""}${reset || ""}${forceClassName || ""}${componentName || ""}`, hasThemeUpdatingProps = (props) => "inverse" in props || "name" in props || "reset" in props || "forceClassName" in props;
143
+ export {
144
+ ThemeStateContext,
145
+ forceUpdateThemes,
146
+ getRootThemeState,
147
+ getThemeState,
148
+ hasThemeUpdatingProps,
149
+ useThemeState
150
+ };
151
+ //# sourceMappingURL=useThemeState.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useThemeState.ts"],
4
+ "mappings": "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",
5
+ "names": ["themes"]
6
+ }
@@ -0,0 +1,159 @@
1
+ import { createContext, useCallback, useContext, useId, useLayoutEffect, useSyncExternalStore } from "react";
2
+ import { getConfig } from "../config.mjs";
3
+ const ThemeStateContext = createContext(""),
4
+ allListeners = /* @__PURE__ */new Map(),
5
+ listenersByParent = {},
6
+ states = /* @__PURE__ */new Map(),
7
+ forceUpdateThemes = () => {
8
+ allListeners.forEach(cb => cb());
9
+ },
10
+ getThemeState = id => states.get(id);
11
+ let rootThemeState = null;
12
+ const getRootThemeState = () => rootThemeState,
13
+ HasRenderedOnce = /* @__PURE__ */new WeakMap(),
14
+ useThemeState = (props, isRoot = !1, keys) => {
15
+ const {
16
+ disable
17
+ } = props,
18
+ parentId = useContext(ThemeStateContext);
19
+ if (disable) return states.get(parentId) || {
20
+ id: "",
21
+ name: "light",
22
+ theme: getConfig().themes.light,
23
+ inverses: 0
24
+ };
25
+ const id = useId(),
26
+ subscribe = useCallback(cb => (listenersByParent[parentId] ||= /* @__PURE__ */new Set(), listenersByParent[parentId].add(id), allListeners.set(id, cb), () => {
27
+ allListeners.delete(id), listenersByParent[parentId].delete(id);
28
+ }), [id, parentId, keys]),
29
+ propsKey = getPropsKey(props),
30
+ getSnapshot = () => getSnapshotFrom(props, propsKey, isRoot, id, parentId, keys);
31
+ process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
32
+ const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
33
+ return useLayoutEffect(() => {
34
+ if (propsKey) {
35
+ if (!HasRenderedOnce.has(keys)) {
36
+ HasRenderedOnce.set(keys, !0);
37
+ return;
38
+ }
39
+ process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, states.get(id)?.name), scheduleUpdate(id);
40
+ }
41
+ }, [keys, propsKey]), process.env.NODE_ENV === "development" && props.debug && (console.groupCollapsed(` \xB7 useTheme(${id}) =>`, state.name, id === state.id ? "\u{1F389}" : "\u23ED\uFE0F"), console.info({
42
+ state,
43
+ parentId,
44
+ props,
45
+ propsKey,
46
+ id,
47
+ parentState: states.get(parentId)
48
+ }), console.groupEnd()), state.id === id ? {
49
+ ...state,
50
+ isNew: !0
51
+ } : state;
52
+ };
53
+ let themes = null;
54
+ const getSnapshotFrom = (props, propsKey, isRoot = !1, id, parentId, keys) => {
55
+ const needsUpdate = keys?.current?.size || props.needsUpdate?.(),
56
+ parentState = states.get(parentId);
57
+ themes || (themes = getConfig().themes);
58
+ const lastState = states.get(id),
59
+ name = propsKey ? getNewThemeName(parentState?.name, props, !!needsUpdate) : null;
60
+ if (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile") {
61
+ const message = ` \xB7 useTheme(${id}) snapshot ${name}, parent ${parentState?.id} needsUpdate ${needsUpdate}`;
62
+ console.groupCollapsed(message), console.info({
63
+ lastState,
64
+ parentState,
65
+ props,
66
+ propsKey,
67
+ id,
68
+ keys
69
+ }), console.groupEnd();
70
+ }
71
+ if (parentState && !name && propsKey) return parentState;
72
+ if (!name) return lastState && !needsUpdate ? lastState : (states.set(id, parentState), parentState);
73
+ if (lastState && lastState.name === name) return lastState;
74
+ const scheme = getScheme(name),
75
+ parentInverses = parentState?.inverses ?? 0,
76
+ isInverse = parentState && scheme !== parentState.scheme,
77
+ inverses = parentInverses + (isInverse ? 1 : 0),
78
+ nextState = {
79
+ id,
80
+ name,
81
+ theme: themes[name],
82
+ scheme,
83
+ parentId,
84
+ parentName: parentState?.name,
85
+ inverses,
86
+ isInverse
87
+ };
88
+ return process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F ${name}`), console.info("state", nextState), console.groupEnd()), states.set(id, nextState), isRoot && (rootThemeState = nextState), nextState;
89
+ };
90
+ function scheduleUpdate(id) {
91
+ const queue = [id],
92
+ visited = /* @__PURE__ */new Set();
93
+ for (; queue.length;) {
94
+ const parent = queue.shift(),
95
+ children = listenersByParent[parent];
96
+ if (children) for (const childId of children) visited.has(childId) || (visited.add(childId), queue.push(childId));
97
+ }
98
+ visited.forEach(childId => {
99
+ allListeners.get(childId)?.();
100
+ });
101
+ }
102
+ const validSchemes = {
103
+ light: "light",
104
+ dark: "dark"
105
+ };
106
+ function getScheme(name) {
107
+ return validSchemes[name.split("_")[0]];
108
+ }
109
+ function getNewThemeName(parentName = "", {
110
+ name,
111
+ reset,
112
+ componentName,
113
+ inverse
114
+ }, forceUpdate = !1) {
115
+ if (name && reset) throw new Error(process.env.NODE_ENV === "production" ? "\u274C004" : "Cannot reset and set a new name at the same time.");
116
+ if (reset) {
117
+ if (!parentName) throw new Error("\u203C\uFE0F");
118
+ const lastPartIndex = parentName.lastIndexOf("_");
119
+ return lastPartIndex <= 0 ? parentName : parentName.slice(lastPartIndex);
120
+ }
121
+ const {
122
+ themes: themes2
123
+ } = getConfig(),
124
+ parentParts = parentName.split("_"),
125
+ lastName = parentParts[parentParts.length - 1];
126
+ lastName && lastName[0].toLowerCase() !== lastName[0] && parentParts.pop();
127
+ const subNames = [name && componentName ? `${name}_${componentName}` : void 0, name, componentName].filter(Boolean);
128
+ let found = null;
129
+ const max = parentParts.length;
130
+ for (let i = 0; i <= max; i++) {
131
+ const base = (i === 0 ? parentParts : parentParts.slice(0, -i)).join("_");
132
+ for (const subName of subNames) {
133
+ const potential = base ? `${base}_${subName}` : subName;
134
+ if (potential in themes2) {
135
+ found = potential;
136
+ break;
137
+ }
138
+ }
139
+ if (found) break;
140
+ }
141
+ if (found && inverse) {
142
+ const scheme = found.split("_")[0];
143
+ found = found.replace(new RegExp(`^${scheme}`), scheme === "light" ? "dark" : "light");
144
+ }
145
+ return !forceUpdate && found === parentName &&
146
+ // if its a scheme only sub-theme, we always consider it "new" because it likely inverses
147
+ // and we want to avoid reparenting
148
+ !validSchemes[found] ? null : found;
149
+ }
150
+ const getPropsKey = ({
151
+ name,
152
+ reset,
153
+ inverse,
154
+ forceClassName,
155
+ componentName
156
+ }) => `${name || ""}${inverse || ""}${reset || ""}${forceClassName || ""}${componentName || ""}`,
157
+ hasThemeUpdatingProps = props => "inverse" in props || "name" in props || "reset" in props || "forceClassName" in props;
158
+ export { ThemeStateContext, forceUpdateThemes, getRootThemeState, getThemeState, hasThemeUpdatingProps, useThemeState };
159
+ //# sourceMappingURL=useThemeState.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createContext","useCallback","useContext","useId","useLayoutEffect","useSyncExternalStore","getConfig","ThemeStateContext","allListeners","Map","listenersByParent","states","forceUpdateThemes","forEach","cb","getThemeState","id","get","rootThemeState","getRootThemeState","HasRenderedOnce","WeakMap","useThemeState","props","isRoot","keys","disable","parentId","name","theme","themes","light","inverses","subscribe","Set","add","set","delete","propsKey","getPropsKey","getSnapshot","getSnapshotFrom","process","env","NODE_ENV","globalThis","time","state","has","debug","console","warn","scheduleUpdate","groupCollapsed","info","parentState","groupEnd","isNew","needsUpdate","current","size","lastState","getNewThemeName","message","scheme","getScheme","parentInverses","isInverse","nextState","parentName","queue","visited","length","parent","shift","children","childId","push","validSchemes","dark","split","reset","componentName","inverse","forceUpdate","Error","lastPartIndex","lastIndexOf","slice","themes2","parentParts","lastName","toLowerCase","pop","subNames","filter","Boolean","found","max","i","base","join","subName","potential","replace","RegExp","forceClassName","hasThemeUpdatingProps"],"sources":["../../../src/hooks/useThemeState.ts"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,182 @@
1
+ import { createContext, useCallback, useContext, useId, useLayoutEffect, useSyncExternalStore } from "react";
2
+ import { getConfig } from "../config";
3
+ var ThemeStateContext = createContext(""), allListeners = /* @__PURE__ */ new Map(), listenersByParent = {}, states = /* @__PURE__ */ new Map(), forceUpdateThemes = function() {
4
+ allListeners.forEach(function(cb) {
5
+ return cb();
6
+ });
7
+ }, getThemeState = function(id) {
8
+ return states.get(id);
9
+ }, rootThemeState = null, getRootThemeState = function() {
10
+ return rootThemeState;
11
+ }, HasRenderedOnce = /* @__PURE__ */ new WeakMap(), useThemeState = function(props) {
12
+ var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : !1, keys = arguments.length > 2 ? arguments[2] : void 0, { disable } = props, parentId = useContext(ThemeStateContext);
13
+ if (disable)
14
+ return states.get(parentId) || {
15
+ id: "",
16
+ name: "light",
17
+ theme: getConfig().themes.light,
18
+ inverses: 0
19
+ };
20
+ var id = useId(), subscribe = useCallback(function(cb) {
21
+ var _listenersByParent, _parentId;
22
+ return (_listenersByParent = listenersByParent)[_parentId = parentId] || (_listenersByParent[_parentId] = /* @__PURE__ */ new Set()), listenersByParent[parentId].add(id), allListeners.set(id, cb), function() {
23
+ allListeners.delete(id), listenersByParent[parentId].delete(id);
24
+ };
25
+ }, [
26
+ id,
27
+ parentId,
28
+ keys
29
+ ]), propsKey = getPropsKey(props), getSnapshot = function() {
30
+ return getSnapshotFrom(props, propsKey, isRoot, id, parentId, keys);
31
+ };
32
+ process.env.NODE_ENV === "development" && globalThis.time && globalThis.time`theme-prep-uses`;
33
+ var state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
34
+ return useLayoutEffect(function() {
35
+ if (propsKey) {
36
+ if (!HasRenderedOnce.has(keys)) {
37
+ HasRenderedOnce.set(keys, !0);
38
+ return;
39
+ }
40
+ if (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile") {
41
+ var _states_get;
42
+ console.warn(` \xB7 useTheme(${id}) scheduleUpdate`, propsKey, (_states_get = states.get(id)) === null || _states_get === void 0 ? void 0 : _states_get.name);
43
+ }
44
+ scheduleUpdate(id);
45
+ }
46
+ }, [
47
+ keys,
48
+ propsKey
49
+ ]), process.env.NODE_ENV === "development" && props.debug && (console.groupCollapsed(` \xB7 useTheme(${id}) =>`, state.name, id === state.id ? "\u{1F389}" : "\u23ED\uFE0F"), console.info({
50
+ state,
51
+ parentId,
52
+ props,
53
+ propsKey,
54
+ id,
55
+ parentState: states.get(parentId)
56
+ }), console.groupEnd()), state.id === id ? {
57
+ ...state,
58
+ isNew: !0
59
+ } : state;
60
+ }, themes = null, getSnapshotFrom = function(props, propsKey) {
61
+ var isRoot = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1, id = arguments.length > 3 ? arguments[3] : void 0, parentId = arguments.length > 4 ? arguments[4] : void 0, keys = arguments.length > 5 ? arguments[5] : void 0, _keys_current, _props_needsUpdate, needsUpdate = (keys == null || (_keys_current = keys.current) === null || _keys_current === void 0 ? void 0 : _keys_current.size) || ((_props_needsUpdate = props.needsUpdate) === null || _props_needsUpdate === void 0 ? void 0 : _props_needsUpdate.call(props)), parentState = states.get(parentId);
62
+ themes || (themes = getConfig().themes);
63
+ var lastState = states.get(id), name = propsKey ? getNewThemeName(parentState?.name, props, !!needsUpdate) : null;
64
+ if (process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile") {
65
+ var message = ` \xB7 useTheme(${id}) snapshot ${name}, parent ${parentState?.id} needsUpdate ${needsUpdate}`;
66
+ console.info(message);
67
+ }
68
+ var isSameAsParent = !name && propsKey;
69
+ if (parentState && isSameAsParent)
70
+ return parentState;
71
+ if (!name)
72
+ return lastState && !needsUpdate ? lastState : (states.set(id, parentState), parentState);
73
+ if (lastState && lastState.name === name)
74
+ return lastState;
75
+ var scheme = getScheme(name), _parentState_inverses, parentInverses = (_parentState_inverses = parentState?.inverses) !== null && _parentState_inverses !== void 0 ? _parentState_inverses : 0, isInverse = parentState && scheme !== parentState.scheme, inverses = parentInverses + (isInverse ? 1 : 0), nextState = {
76
+ id,
77
+ name,
78
+ theme: themes[name],
79
+ scheme,
80
+ parentId,
81
+ parentName: parentState?.name,
82
+ inverses,
83
+ isInverse
84
+ };
85
+ return process.env.NODE_ENV === "development" && props.debug && props.debug !== "profile" && (console.groupCollapsed(` \xB7 useTheme(${id}) \u23ED\uFE0F ${name}`), console.info("state", nextState), console.groupEnd()), states.set(id, nextState), isRoot && (rootThemeState = nextState), nextState;
86
+ };
87
+ function scheduleUpdate(id) {
88
+ for (var queue = [
89
+ id
90
+ ], visited = /* @__PURE__ */ new Set(); queue.length; ) {
91
+ var parent = queue.shift(), children = listenersByParent[parent];
92
+ if (children) {
93
+ var _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
94
+ try {
95
+ for (var _iterator = children[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
96
+ var childId = _step.value;
97
+ visited.has(childId) || (visited.add(childId), queue.push(childId));
98
+ }
99
+ } catch (err) {
100
+ _didIteratorError = !0, _iteratorError = err;
101
+ } finally {
102
+ try {
103
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
104
+ } finally {
105
+ if (_didIteratorError)
106
+ throw _iteratorError;
107
+ }
108
+ }
109
+ }
110
+ }
111
+ visited.forEach(function(childId2) {
112
+ var cb = allListeners.get(childId2);
113
+ cb?.();
114
+ });
115
+ }
116
+ var validSchemes = {
117
+ light: "light",
118
+ dark: "dark"
119
+ };
120
+ function getScheme(name) {
121
+ return validSchemes[name.split("_")[0]];
122
+ }
123
+ function getNewThemeName() {
124
+ var parentName = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", { name, reset, componentName, inverse } = arguments.length > 1 ? arguments[1] : void 0, forceUpdate = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : !1;
125
+ if (name && reset)
126
+ throw new Error(process.env.NODE_ENV === "production" ? "\u274C004" : "Cannot reset and set a new name at the same time.");
127
+ if (reset) {
128
+ if (!parentName) throw new Error("\u203C\uFE0F");
129
+ var lastPartIndex = parentName.lastIndexOf("_");
130
+ return lastPartIndex <= 0 ? parentName : parentName.slice(lastPartIndex);
131
+ }
132
+ var { themes: themes2 } = getConfig(), parentParts = parentName.split("_"), lastName = parentParts[parentParts.length - 1];
133
+ lastName && lastName[0].toLowerCase() !== lastName[0] && parentParts.pop();
134
+ for (var subNames = [
135
+ name && componentName ? `${name}_${componentName}` : void 0,
136
+ name,
137
+ componentName
138
+ ].filter(Boolean), found = null, max = parentParts.length, i = 0; i <= max; i++) {
139
+ var base = (i === 0 ? parentParts : parentParts.slice(0, -i)).join("_"), _iteratorNormalCompletion = !0, _didIteratorError = !1, _iteratorError = void 0;
140
+ try {
141
+ for (var _iterator = subNames[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
142
+ var subName = _step.value, potential = base ? `${base}_${subName}` : subName;
143
+ if (potential in themes2) {
144
+ found = potential;
145
+ break;
146
+ }
147
+ }
148
+ } catch (err) {
149
+ _didIteratorError = !0, _iteratorError = err;
150
+ } finally {
151
+ try {
152
+ !_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
153
+ } finally {
154
+ if (_didIteratorError)
155
+ throw _iteratorError;
156
+ }
157
+ }
158
+ if (found) break;
159
+ }
160
+ if (found && inverse) {
161
+ var scheme = found.split("_")[0];
162
+ found = found.replace(new RegExp(`^${scheme}`), scheme === "light" ? "dark" : "light");
163
+ }
164
+ return !forceUpdate && found === parentName && // if its a scheme only sub-theme, we always consider it "new" because it likely inverses
165
+ // and we want to avoid reparenting
166
+ !validSchemes[found] ? null : found;
167
+ }
168
+ var getPropsKey = function(param) {
169
+ var { name, reset, inverse, forceClassName, componentName } = param;
170
+ return `${name || ""}${inverse || ""}${reset || ""}${forceClassName || ""}${componentName || ""}`;
171
+ }, hasThemeUpdatingProps = function(props) {
172
+ return "inverse" in props || "name" in props || "reset" in props || "forceClassName" in props;
173
+ };
174
+ export {
175
+ ThemeStateContext,
176
+ forceUpdateThemes,
177
+ getRootThemeState,
178
+ getThemeState,
179
+ hasThemeUpdatingProps,
180
+ useThemeState
181
+ };
182
+ //# sourceMappingURL=useThemeState.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/Users/n8/tamagui/code/core/web/src/hooks/useThemeState.ts"],
4
+ "mappings": "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",
5
+ "names": ["createContext", "useCallback", "useContext", "useId", "useLayoutEffect", "useSyncExternalStore", "getConfig", "ThemeStateContext", "allListeners", "Map", "listenersByParent", "states", "forceUpdateThemes", "forEach", "cb", "getThemeState", "id", "get", "rootThemeState", "getRootThemeState", "HasRenderedOnce", "WeakMap", "useThemeState", "props", "isRoot", "keys", "disable", "parentId", "name", "theme", "themes", "light", "inverses", "subscribe", "Set", "add", "set", "delete", "propsKey", "getPropsKey", "getSnapshot", "getSnapshotFrom", "process", "env", "NODE_ENV", "globalThis", "time", "state", "has", "debug", "console", "warn", "scheduleUpdate", "groupCollapsed", "info", "parentState", "groupEnd", "isNew", "needsUpdate", "current", "size", "lastState", "getNewThemeName", "message", "isSameAsParent", "scheme", "getScheme", "parentInverses", "isInverse", "nextState", "parentName", "queue", "visited", "length", "parent", "shift", "children", "childId", "push", "validSchemes", "dark", "split", "reset", "componentName", "inverse", "forceUpdate", "Error", "lastPartIndex", "lastIndexOf", "slice", "parentParts", "lastName", "toLowerCase", "pop", "subNames", "undefined", "filter", "Boolean", "found", "max", "i", "base", "join", "subName", "potential", "replace", "RegExp", "forceClassName", "hasThemeUpdatingProps"]
6
+ }
package/dist/esm/index.js CHANGED
@@ -63,6 +63,7 @@ import {
63
63
  mediaQueryConfig
64
64
  } from "./hooks/useMedia";
65
65
  export * from "./hooks/useTheme";
66
+ import { forceUpdateThemes } from "./hooks/useThemeState";
66
67
  export * from "./hooks/useThemeName";
67
68
  export * from "./hooks/useConfiguration";
68
69
  export * from "./hooks/useIsTouchDevice";
@@ -86,6 +87,7 @@ export * from "./setupHooks";
86
87
  export {
87
88
  _disableMediaTouch,
88
89
  configureMedia,
90
+ forceUpdateThemes,
89
91
  getConfig,
90
92
  getMedia,
91
93
  getSetting,
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AASd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,gBAAgB;AAEzB,cAAc;AAEd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;",
4
+ "mappings": "AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AASd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAEP,SAAS,gBAAgB;AAEzB,cAAc;AAEd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,cAAc;AACd,SAAS,yBAAyB;AAClC,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AAEd,cAAc;",
5
5
  "names": []
6
6
  }
@@ -44,6 +44,7 @@ export * from "./helpers/transformsToString.mjs";
44
44
  export * from "./helpers/wrapStyleTags.mjs";
45
45
  import { configureMedia, mediaState, mediaKeyMatch, useMedia, _disableMediaTouch, getMedia, mediaObjectToString, mediaQueryConfig } from "./hooks/useMedia.mjs";
46
46
  export * from "./hooks/useTheme.mjs";
47
+ import { forceUpdateThemes } from "./hooks/useThemeState.mjs";
47
48
  export * from "./hooks/useThemeName.mjs";
48
49
  export * from "./hooks/useConfiguration.mjs";
49
50
  export * from "./hooks/useIsTouchDevice.mjs";
@@ -64,5 +65,5 @@ export * from "@tamagui/compose-refs";
64
65
  export * from "@tamagui/helpers";
65
66
  export * from "@tamagui/constants";
66
67
  export * from "./setupHooks.mjs";
67
- export { _disableMediaTouch, configureMedia, getConfig, getMedia, getSetting, getThemes, getToken, getTokenValue, getTokens, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, setConfig, setNonce, setupDev, updateConfig, useMedia };
68
+ export { _disableMediaTouch, configureMedia, forceUpdateThemes, getConfig, getMedia, getSetting, getThemes, getToken, getTokenValue, getTokens, mediaKeyMatch, mediaObjectToString, mediaQueryConfig, mediaState, setConfig, setNonce, setupDev, updateConfig, useMedia };
68
69
  //# sourceMappingURL=index.mjs.map