@tamagui/core 1.0.1-beta.138 → 1.0.1-beta.139

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 (151) hide show
  1. package/dist/cjs/createComponent.js +8 -15
  2. package/dist/cjs/createComponent.js.map +2 -2
  3. package/dist/cjs/helpers/assignNativePropsToWeb.js +1 -0
  4. package/dist/cjs/helpers/assignNativePropsToWeb.js.map +2 -2
  5. package/dist/cjs/helpers/createPropMapper.js +2 -3
  6. package/dist/cjs/helpers/createPropMapper.js.map +2 -2
  7. package/dist/cjs/helpers/createTamaguiProvider.js +2 -0
  8. package/dist/cjs/helpers/createTamaguiProvider.js.map +2 -2
  9. package/dist/cjs/helpers/getSplitStyles.js +11 -2
  10. package/dist/cjs/helpers/getSplitStyles.js.map +2 -2
  11. package/dist/cjs/helpers/getVariantExtras.js +6 -6
  12. package/dist/cjs/helpers/getVariantExtras.js.map +2 -2
  13. package/dist/cjs/helpers/insertStyleRule.js +6 -1
  14. package/dist/cjs/helpers/insertStyleRule.js.map +2 -2
  15. package/dist/cjs/helpers/mergeProps.js +18 -14
  16. package/dist/cjs/helpers/mergeProps.js.map +2 -2
  17. package/dist/cjs/hooks/useId.js +2 -32
  18. package/dist/cjs/hooks/useId.js.map +2 -2
  19. package/dist/cjs/hooks/useMedia.js +75 -92
  20. package/dist/cjs/hooks/useMedia.js.map +2 -2
  21. package/dist/cjs/hooks/useSafeRef.js +60 -0
  22. package/dist/cjs/hooks/useSafeRef.js.map +7 -0
  23. package/dist/cjs/hooks/useTheme.js +2 -2
  24. package/dist/cjs/hooks/useTheme.js.map +2 -2
  25. package/dist/cjs/index.js +20 -3
  26. package/dist/cjs/index.js.map +2 -2
  27. package/dist/cjs/types.js.map +1 -1
  28. package/dist/cjs/views/Slot.js +2 -2
  29. package/dist/cjs/views/Slot.js.map +2 -2
  30. package/dist/esm/createComponent.js +8 -15
  31. package/dist/esm/createComponent.js.map +2 -2
  32. package/dist/esm/helpers/assignNativePropsToWeb.js +1 -0
  33. package/dist/esm/helpers/assignNativePropsToWeb.js.map +2 -2
  34. package/dist/esm/helpers/createPropMapper.js +2 -3
  35. package/dist/esm/helpers/createPropMapper.js.map +2 -2
  36. package/dist/esm/helpers/createTamaguiProvider.js +2 -0
  37. package/dist/esm/helpers/createTamaguiProvider.js.map +2 -2
  38. package/dist/esm/helpers/getSplitStyles.js +11 -2
  39. package/dist/esm/helpers/getSplitStyles.js.map +2 -2
  40. package/dist/esm/helpers/getVariantExtras.js +6 -6
  41. package/dist/esm/helpers/getVariantExtras.js.map +2 -2
  42. package/dist/esm/helpers/insertStyleRule.js +6 -1
  43. package/dist/esm/helpers/insertStyleRule.js.map +2 -2
  44. package/dist/esm/helpers/mergeProps.js +18 -14
  45. package/dist/esm/helpers/mergeProps.js.map +2 -2
  46. package/dist/esm/hooks/useId.js +1 -28
  47. package/dist/esm/hooks/useId.js.map +2 -2
  48. package/dist/esm/hooks/useMedia.js +74 -92
  49. package/dist/esm/hooks/useMedia.js.map +2 -2
  50. package/dist/esm/hooks/useSafeRef.js +36 -0
  51. package/dist/esm/hooks/useSafeRef.js.map +7 -0
  52. package/dist/esm/hooks/useTheme.js +2 -2
  53. package/dist/esm/hooks/useTheme.js.map +2 -2
  54. package/dist/esm/index.js +20 -2
  55. package/dist/esm/index.js.map +2 -2
  56. package/dist/esm/views/Slot.js +2 -2
  57. package/dist/esm/views/Slot.js.map +2 -2
  58. package/package.json +8 -8
  59. package/types/Tamagui.d.ts +0 -0
  60. package/types/addTheme.d.ts +0 -0
  61. package/types/conf.d.ts +0 -0
  62. package/types/constants/constants.d.ts +0 -0
  63. package/types/constants/platform.d.ts +0 -0
  64. package/types/contexts/ButtonInsideButtonContext.d.ts +0 -0
  65. package/types/contexts/FontLanguageContext.d.ts +0 -0
  66. package/types/contexts/TextAncestorContext.d.ts +0 -0
  67. package/types/contexts/ThemeContext.d.ts +0 -0
  68. package/types/createComponent.d.ts +0 -0
  69. package/types/createFont.d.ts +0 -0
  70. package/types/createShorthands.d.ts +0 -0
  71. package/types/createTamagui.d.ts +0 -0
  72. package/types/createTheme.d.ts +0 -0
  73. package/types/createTokens.d.ts +0 -0
  74. package/types/createVariable.d.ts +0 -0
  75. package/types/createVariables.d.ts +0 -0
  76. package/types/helpers/RNComponents.d.ts +0 -0
  77. package/types/helpers/ThemeManager.d.ts +0 -0
  78. package/types/helpers/areEqualSets.d.ts +0 -0
  79. package/types/helpers/assignNativePropsToWeb.d.ts +0 -0
  80. package/types/helpers/assignNativePropsToWeb.native.d.ts +0 -0
  81. package/types/helpers/calc.d.ts +0 -0
  82. package/types/helpers/createMediaStyle.d.ts +0 -0
  83. package/types/helpers/createPropMapper.d.ts +0 -0
  84. package/types/helpers/createShallowUpdate.d.ts +0 -0
  85. package/types/helpers/createTamaguiProvider.d.ts +0 -0
  86. package/types/helpers/cssHash.d.ts +0 -0
  87. package/types/helpers/expandStyle.d.ts +0 -0
  88. package/types/helpers/expandStyles.d.ts +0 -0
  89. package/types/helpers/extendStaticConfig.d.ts +0 -0
  90. package/types/helpers/fixNativeShadow.d.ts +0 -0
  91. package/types/helpers/getExpandedShorthands.d.ts +0 -0
  92. package/types/helpers/getFont.d.ts +0 -0
  93. package/types/helpers/getFontLanguage.d.ts +0 -0
  94. package/types/helpers/getSize.d.ts +0 -0
  95. package/types/helpers/getSplitStyles.d.ts +1 -0
  96. package/types/helpers/getStackSize.d.ts +0 -0
  97. package/types/helpers/getStylesAtomic.d.ts +0 -0
  98. package/types/helpers/getStylesAtomic.native.d.ts +0 -0
  99. package/types/helpers/getThemeCSSRules.d.ts +0 -0
  100. package/types/helpers/getThemeCSSRules.native.d.ts +0 -0
  101. package/types/helpers/getVariantExtras.d.ts +0 -0
  102. package/types/helpers/insertStyleRule.d.ts +0 -0
  103. package/types/helpers/isObj.d.ts +0 -0
  104. package/types/helpers/isTamaguiComponent.d.ts +0 -0
  105. package/types/helpers/isTamaguiElement.d.ts +0 -0
  106. package/types/helpers/matchMedia.d.ts +0 -0
  107. package/types/helpers/matchMedia.native.d.ts +0 -0
  108. package/types/helpers/mergeProps.d.ts +3 -1
  109. package/types/helpers/mergeTransform.d.ts +0 -0
  110. package/types/helpers/normalizeColor.d.ts +0 -0
  111. package/types/helpers/normalizeValueWithProperty.d.ts +0 -0
  112. package/types/helpers/proxyThemeVariables.d.ts +0 -0
  113. package/types/helpers/pseudoDescriptors.d.ts +0 -0
  114. package/types/helpers/registerCSSVariable.d.ts +0 -0
  115. package/types/helpers/startTransition.d.ts +0 -0
  116. package/types/helpers/themeable.d.ts +0 -0
  117. package/types/helpers/themes.d.ts +0 -0
  118. package/types/helpers/validate.d.ts +0 -0
  119. package/types/helpers/withStaticProperties.d.ts +0 -0
  120. package/types/hooks/getThemeUnwrapped.d.ts +0 -0
  121. package/types/hooks/useConstant.d.ts +0 -0
  122. package/types/hooks/useFeatures.d.ts +0 -0
  123. package/types/hooks/useId.d.ts +1 -8
  124. package/types/hooks/useIsMounted.d.ts +0 -0
  125. package/types/hooks/useIsSSR.d.ts +0 -0
  126. package/types/hooks/useIsTouchDevice.d.ts +0 -0
  127. package/types/hooks/useMedia.d.ts +2 -1
  128. package/types/hooks/usePressable.d.ts +0 -0
  129. package/types/hooks/useSafeRef.d.ts +4 -0
  130. package/types/hooks/useTheme.d.ts +0 -0
  131. package/types/hooks/useUnmountEffect.d.ts +0 -0
  132. package/types/index.d.ts +2 -1
  133. package/types/insertFont.d.ts +0 -0
  134. package/types/static.d.ts +0 -0
  135. package/types/styled.d.ts +0 -0
  136. package/types/types-rnw.d.ts +0 -0
  137. package/types/types.d.ts +2 -2
  138. package/types/updateTheme.d.ts +0 -0
  139. package/types/vendor/Pressability.d.ts +0 -0
  140. package/types/vendor/Pressability.native.d.ts +0 -0
  141. package/types/views/FontLanguage.d.ts +0 -0
  142. package/types/views/FontLanguage.native.d.ts +0 -0
  143. package/types/views/FontLanguage.types.d.ts +0 -0
  144. package/types/views/Slot.d.ts +0 -0
  145. package/types/views/Stack.d.ts +0 -0
  146. package/types/views/Text.d.ts +0 -0
  147. package/types/views/Theme.d.ts +0 -0
  148. package/types/views/ThemeInverse.d.ts +0 -0
  149. package/types/views/ThemeProvider.d.ts +0 -0
  150. package/types/views/ThemeReset.d.ts +0 -0
  151. package/types/helpers/nativeGestureHandler.native.d.ts +0 -2
@@ -25,19 +25,20 @@ __export(useMedia_exports, {
25
25
  mediaQueryConfig: () => mediaQueryConfig,
26
26
  mediaState: () => mediaState,
27
27
  removeMediaQueryListener: () => removeMediaQueryListener,
28
- useMedia: () => useMedia
28
+ useMedia: () => useMedia,
29
+ useMediaQueryListeners: () => useMediaQueryListeners
29
30
  });
30
31
  module.exports = __toCommonJS(useMedia_exports);
31
- var import_use_force_update = require("@tamagui/use-force-update");
32
32
  var import_react = require("react");
33
33
  var import_platform = require("../constants/platform");
34
34
  var import_matchMedia = require("../helpers/matchMedia");
35
- var import_useConstant = require("./useConstant");
35
+ var import_useSafeRef = require("./useSafeRef");
36
36
  const mediaState = {};
37
37
  const mediaQueryListeners = {};
38
38
  function addMediaQueryListener(key, cb) {
39
39
  mediaQueryListeners[key] = mediaQueryListeners[key] || /* @__PURE__ */ new Set();
40
40
  mediaQueryListeners[key].add(cb);
41
+ return () => removeMediaQueryListener(key, cb);
41
42
  }
42
43
  function removeMediaQueryListener(key, cb) {
43
44
  var _a;
@@ -48,114 +49,95 @@ const getMedia = () => {
48
49
  return mediaState;
49
50
  };
50
51
  const dispose = /* @__PURE__ */ new Set();
52
+ let initialMediaState;
51
53
  const configureMedia = ({
52
54
  queries,
53
- defaultActive = ["sm", "xs"]
55
+ defaultActive = {}
54
56
  } = {}) => {
55
57
  if (!queries)
56
58
  return;
57
- if (mediaQueryConfig) {
58
- if (JSON.stringify(queries) === JSON.stringify(mediaQueryConfig)) {
59
- return;
59
+ if (initialMediaState) {
60
+ if (process.env.NODE_ENV === "development") {
61
+ if (JSON.stringify(queries) === JSON.stringify(mediaQueryConfig)) {
62
+ return;
63
+ }
60
64
  }
61
- dispose.forEach((cb) => cb());
62
- dispose.clear();
65
+ setupMediaListeners();
63
66
  }
64
67
  Object.assign(mediaQueryConfig, queries);
65
68
  for (const key in queries) {
66
- const str = mediaObjectToString(queries[key]);
67
- const propKey = `$${key}`;
68
- try {
69
- let update2 = function() {
70
- const next = !!getMatch().matches;
71
- if (next === mediaState[propKey])
72
- return;
73
- mediaState[propKey] = next;
74
- const listeners = mediaQueryListeners[propKey];
75
- if (listeners == null ? void 0 : listeners.size) {
76
- for (const cb of [...listeners]) {
77
- cb();
78
- }
69
+ mediaState[key] = defaultActive[key] || false;
70
+ }
71
+ initialMediaState = { ...mediaState };
72
+ };
73
+ function unlisten() {
74
+ dispose.forEach((cb) => cb());
75
+ dispose.clear();
76
+ }
77
+ function setupMediaListeners() {
78
+ unlisten();
79
+ for (const key in mediaQueryConfig) {
80
+ let update2 = function() {
81
+ const next = !!getMatch().matches;
82
+ if (next === mediaState[key])
83
+ return;
84
+ mediaState[key] = next;
85
+ const listeners = mediaQueryListeners[key];
86
+ if (listeners == null ? void 0 : listeners.size) {
87
+ for (const cb of [...listeners]) {
88
+ cb();
79
89
  }
80
- };
81
- var update = update2;
82
- const getMatch = () => (0, import_matchMedia.matchMedia)(str);
83
- const match = getMatch();
84
- if (!match || typeof match.addListener !== "function") {
85
- throw new Error("\u26A0\uFE0F No match (seeing this in RN sometimes)");
86
90
  }
87
- mediaState[propKey] = !!match.matches;
88
- match.addListener(update2);
89
- dispose.add(() => match.removeListener(update2));
90
- update2();
91
- } catch (err) {
92
- console.error("Error running media query", str, err.message, err.stack);
93
- const isDefaultActive = (defaultActive == null ? void 0 : defaultActive.includes(key)) ?? true;
94
- mediaState[propKey] = isDefaultActive;
91
+ };
92
+ var update = update2;
93
+ const str = mediaObjectToString(mediaQueryConfig[key]);
94
+ const getMatch = () => (0, import_matchMedia.matchMedia)(str);
95
+ const match = getMatch();
96
+ if (!match) {
97
+ throw new Error("\u26A0\uFE0F No match");
95
98
  }
99
+ match.addListener(update2);
100
+ dispose.add(() => match.removeListener(update2));
101
+ update2();
96
102
  }
97
- };
103
+ }
104
+ function useMediaQueryListeners() {
105
+ (0, import_platform.useIsomorphicLayoutEffect)(() => {
106
+ setupMediaListeners();
107
+ return unlisten;
108
+ }, []);
109
+ }
98
110
  function useMedia() {
99
- const forceUpdate = (0, import_use_force_update.useForceUpdate)();
100
- const state = (0, import_react.useRef)();
101
- if (!state.current) {
102
- state.current = {
103
- selections: {},
104
- nextSelections: {},
105
- isUnmounted: false,
106
- isRendering: true
107
- };
111
+ const [state, setState] = (0, import_react.useState)(initialMediaState);
112
+ const keys = (0, import_useSafeRef.useSafeRef)({});
113
+ function updateState() {
114
+ setState((prev) => {
115
+ for (const key in keys.current) {
116
+ if (prev[key] !== mediaState[key]) {
117
+ return { ...mediaState };
118
+ }
119
+ }
120
+ return prev;
121
+ });
108
122
  }
109
- state.current.isRendering = true;
110
123
  (0, import_platform.useIsomorphicLayoutEffect)(() => {
111
- const st = state.current;
112
- st.isRendering = false;
113
- for (const key in st.selections) {
114
- if (!(key in st.nextSelections)) {
115
- removeMediaQueryListener(key, forceUpdate);
116
- }
117
- }
118
- for (const key in st.nextSelections) {
119
- if (!(key in st.selections)) {
120
- addMediaQueryListener(key, forceUpdate);
121
- }
124
+ const listeners = [];
125
+ for (const key in keys.current) {
126
+ listeners.push(addMediaQueryListener(key, updateState));
122
127
  }
123
- });
124
- (0, import_react.useEffect)(() => {
128
+ updateState();
125
129
  return () => {
126
- const st = state.current;
127
- st.isUnmounted = true;
128
- const allKeys = {
129
- ...st.selections,
130
- ...st.nextSelections
131
- };
132
- for (const key in allKeys) {
133
- removeMediaQueryListener(key, forceUpdate);
134
- }
130
+ listeners.forEach((cb) => cb());
135
131
  };
136
- }, []);
137
- return (0, import_useConstant.useConstant)(() => {
138
- const st = state.current;
139
- return new Proxy(mediaState, {
140
- get(target, key) {
141
- if (key[0] !== "$") {
142
- key = `$${key}`;
143
- }
144
- if (!(key in mediaState)) {
145
- return Reflect.get(target, key);
146
- }
147
- if (!st.isUnmounted) {
148
- if (st.isRendering) {
149
- st.nextSelections[key] = true;
150
- }
151
- }
152
- if (key in mediaState) {
153
- return mediaState[key];
154
- }
155
- return Reflect.get(mediaState, key);
156
- }
157
- });
158
132
  });
133
+ return (0, import_react.useMemo)(() => new Proxy(state, {
134
+ get(_, key) {
135
+ if (!keys.current[key]) {
136
+ keys.current = { ...keys.current, [key]: true };
137
+ }
138
+ return Reflect.get(state, key);
139
+ }
140
+ }), [state, keys]);
159
141
  }
160
142
  function camelToHyphen(str) {
161
143
  return str.replace(/[A-Z]/g, (m) => `-${m.toLowerCase()}`).toLowerCase();
@@ -184,6 +166,7 @@ function mediaObjectToString(query) {
184
166
  mediaQueryConfig,
185
167
  mediaState,
186
168
  removeMediaQueryListener,
187
- useMedia
169
+ useMedia,
170
+ useMediaQueryListeners
188
171
  });
189
172
  //# sourceMappingURL=useMedia.js.map
@@ -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 { useEffect, useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { matchMedia } from '../helpers/matchMedia'\nimport {\n ConfigureMediaQueryOptions,\n MediaQueries,\n MediaQueryKey,\n MediaQueryObject,\n MediaQueryState,\n} from '../types'\nimport { useConstant } from './useConstant'\n\nexport const mediaState: MediaQueryState = {} as any\nconst mediaQueryListeners: { [key: string]: Set<Function> } = {}\n\nexport function addMediaQueryListener(key: MediaQueryKey, cb: any) {\n mediaQueryListeners[key] = mediaQueryListeners[key] || new Set()\n mediaQueryListeners[key].add(cb)\n}\n\nexport function removeMediaQueryListener(key: MediaQueryKey, cb: any) {\n mediaQueryListeners[key]?.delete(cb)\n}\n\nexport const mediaQueryConfig: MediaQueries = {}\n\nexport const getMedia = () => {\n return mediaState\n}\n\nconst dispose = new Set<Function>()\n\nexport const configureMedia = ({\n queries,\n defaultActive = ['sm', 'xs'],\n}: ConfigureMediaQueryOptions = {}) => {\n if (!queries) return\n // support hot reload\n if (mediaQueryConfig) {\n if (JSON.stringify(queries) === JSON.stringify(mediaQueryConfig)) {\n // hmr avoid update\n return\n }\n dispose.forEach((cb) => cb())\n dispose.clear()\n }\n\n Object.assign(mediaQueryConfig, queries)\n\n // setup\n for (const key in queries) {\n const str = mediaObjectToString(queries[key])\n const propKey = `$${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[propKey] = !!match.matches\n // note this deprecated api works with polyfills we use now\n match.addListener(update)\n dispose.add(() => match.removeListener(update))\n\n function update() {\n const next = !!getMatch().matches\n if (next === mediaState[propKey]) return\n mediaState[propKey] = next\n const listeners = mediaQueryListeners[propKey]\n if (listeners?.size) {\n for (const cb of [...listeners]) {\n cb()\n }\n }\n }\n\n update()\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[propKey] = 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 function useMedia(): {\n [key in MediaQueryKey]: boolean\n} {\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 useEffect(() => {\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[0] !== '$') {\n key = `$${key}`\n }\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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,8BAA+B;AAC/B,mBAAkC;AAElC,sBAA0C;AAC1C,wBAA2B;AAQ3B,yBAA4B;AAErB,MAAM,aAA8B,CAAC;AAC5C,MAAM,sBAAwD,CAAC;AAExD,+BAA+B,KAAoB,IAAS;AACjE,sBAAoB,OAAO,oBAAoB,QAAQ,oBAAI,IAAI;AAC/D,sBAAoB,KAAK,IAAI,EAAE;AACjC;AAEO,kCAAkC,KAAoB,IAAS;AAtBtE;AAuBE,4BAAoB,SAApB,mBAA0B,OAAO;AACnC;AAEO,MAAM,mBAAiC,CAAC;AAExC,MAAM,WAAW,MAAM;AAC5B,SAAO;AACT;AAEA,MAAM,UAAU,oBAAI,IAAc;AAE3B,MAAM,iBAAiB,CAAC;AAAA,EAC7B;AAAA,EACA,gBAAgB,CAAC,MAAM,IAAI;AAAA,IACG,CAAC,MAAM;AACrC,MAAI,CAAC;AAAS;AAEd,MAAI,kBAAkB;AACpB,QAAI,KAAK,UAAU,OAAO,MAAM,KAAK,UAAU,gBAAgB,GAAG;AAEhE;AAAA,IACF;AACA,YAAQ,QAAQ,CAAC,OAAO,GAAG,CAAC;AAC5B,YAAQ,MAAM;AAAA,EAChB;AAEA,SAAO,OAAO,kBAAkB,OAAO;AAGvC,aAAW,OAAO,SAAS;AACzB,UAAM,MAAM,oBAAoB,QAAQ,IAAI;AAC5C,UAAM,UAAU,IAAI;AACpB,QAAI;AAYF,UAAS,UAAT,WAAkB;AAChB,cAAM,OAAO,CAAC,CAAC,SAAS,EAAE;AAC1B,YAAI,SAAS,WAAW;AAAU;AAClC,mBAAW,WAAW;AACtB,cAAM,YAAY,oBAAoB;AACtC,YAAI,uCAAW,MAAM;AACnB,qBAAW,MAAM,CAAC,GAAG,SAAS,GAAG;AAC/B,eAAG;AAAA,UACL;AAAA,QACF;AAAA,MACF;AAVS;AAXT,YAAM,WAAW,MAAM,kCAAW,GAAG;AACrC,YAAM,QAAQ,SAAS;AACvB,UAAI,CAAC,SAAS,OAAO,MAAM,gBAAgB,YAAY;AAErD,cAAM,IAAI,MAAM,qDAA2C;AAAA,MAC7D;AACA,iBAAW,WAAW,CAAC,CAAC,MAAM;AAE9B,YAAM,YAAY,OAAM;AACxB,cAAQ,IAAI,MAAM,MAAM,eAAe,OAAM,CAAC;AAc9C,cAAO;AAAA,IACT,SAAS,KAAP;AACA,cAAQ,MAAM,6BAA6B,KAAK,IAAI,SAAS,IAAI,KAAK;AACtE,YAAM,kBAAkB,gDAAe,SAAS,SAAe;AAC/D,iBAAW,WAAW;AAAA,IACxB;AAAA,EACF;AACF;AASO,oBAEL;AACA,QAAM,cAAc,4CAAe;AACnC,QAAM,QAAQ,yBAAO;AACrB,MAAI,CAAC,MAAM,SAAS;AAClB,UAAM,UAAU;AAAA,MACd,YAAY,CAAC;AAAA,MACb,gBAAgB,CAAC;AAAA,MACjB,aAAa;AAAA,MACb,aAAa;AAAA,IACf;AAAA,EACF;AACA,QAAM,QAAQ,cAAc;AAG5B,iDAA0B,MAAM;AAC9B,UAAM,KAAK,MAAM;AACjB,OAAG,cAAc;AAEjB,eAAW,OAAO,GAAG,YAAY;AAC/B,UAAI,CAAE,QAAO,GAAG,iBAAiB;AAC/B,iCAAyB,KAAK,WAAW;AAAA,MAC3C;AAAA,IACF;AAEA,eAAW,OAAO,GAAG,gBAAgB;AACnC,UAAI,CAAE,QAAO,GAAG,aAAa;AAC3B,8BAAsB,KAAK,WAAW;AAAA,MACxC;AAAA,IACF;AAAA,EACF,CAAC;AAGD,8BAAU,MAAM;AACd,WAAO,MAAM;AACX,YAAM,KAAK,MAAM;AACjB,SAAG,cAAc;AACjB,YAAM,UAAU;AAAA,QACd,GAAG,GAAG;AAAA,QACN,GAAG,GAAG;AAAA,MACR;AACA,iBAAW,OAAO,SAAS;AACzB,iCAAyB,KAAK,WAAW;AAAA,MAC3C;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,SAAO,oCAAY,MAAM;AACvB,UAAM,KAAK,MAAM;AACjB,WAAO,IAAI,MAAM,YAAY;AAAA,MAC3B,IAAI,QAAQ,KAAa;AACvB,YAAI,IAAI,OAAO,KAAK;AAClB,gBAAM,IAAI;AAAA,QACZ;AACA,YAAI,CAAE,QAAO,aAAa;AACxB,iBAAO,QAAQ,IAAI,QAAQ,GAAG;AAAA,QAChC;AACA,YAAI,CAAC,GAAG,aAAa;AACnB,cAAI,GAAG,aAAa;AAClB,eAAG,eAAe,OAAO;AAAA,UAC3B;AAAA,QACF;AACA,YAAI,OAAO,YAAY;AACrB,iBAAO,WAAW;AAAA,QACpB;AACA,eAAO,QAAQ,IAAI,YAAY,GAAG;AAAA,MACpC;AAAA,IACF,CAAC;AAAA,EACH,CAAC;AACH;AAEA,uBAAuB,KAAa;AAClC,SAAO,IAAI,QAAQ,UAAU,CAAC,MAAM,IAAI,EAAE,YAAY,GAAG,EAAE,YAAY;AACzE;AAEO,6BAA6B,OAAkC;AACpE,MAAI,OAAO,UAAU,UAAU;AAC7B,WAAO;AAAA,EACT;AACA,SAAO,OAAO,QAAQ,KAAK,EACxB,IAAI,CAAC,CAAC,SAAS,WAAW;AACzB,cAAU,cAAc,OAAO;AAC/B,QAAI,OAAO,UAAU,UAAU;AAC7B,aAAO,IAAI,YAAY;AAAA,IACzB;AACA,QAAI,OAAO,UAAU,YAAY,kBAAkB,KAAK,OAAO,GAAG;AAChE,cAAQ,GAAG;AAAA,IACb;AACA,WAAO,IAAI,YAAY;AAAA,EACzB,CAAC,EACA,KAAK,OAAO;AACjB;",
4
+ "sourcesContent": ["import { useMemo, useState } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\nimport { matchMedia } from '../helpers/matchMedia'\nimport {\n ConfigureMediaQueryOptions,\n MediaQueries,\n MediaQueryKey,\n MediaQueryObject,\n MediaQueryState,\n} from '../types'\nimport { useSafeRef } from './useSafeRef'\n\nexport const mediaState: MediaQueryState = {} as any\nconst mediaQueryListeners: { [key: string]: Set<Function> } = {}\n\nexport function addMediaQueryListener(key: MediaQueryKey, cb: any) {\n mediaQueryListeners[key] = mediaQueryListeners[key] || new Set()\n mediaQueryListeners[key].add(cb)\n return () => removeMediaQueryListener(key, cb)\n}\n\nexport function removeMediaQueryListener(key: MediaQueryKey, cb: any) {\n mediaQueryListeners[key]?.delete(cb)\n}\n\nexport const mediaQueryConfig: MediaQueries = {}\n\nexport const getMedia = () => {\n return mediaState\n}\n\nconst dispose = new Set<Function>()\n\n// for SSR capture it at time of startup\nlet initialMediaState: MediaQueryState | null\n\nexport const configureMedia = ({\n queries,\n defaultActive = {},\n}: ConfigureMediaQueryOptions = {}) => {\n if (!queries) return\n\n // support hot reload\n if (initialMediaState) {\n if (process.env.NODE_ENV === 'development') {\n if (JSON.stringify(queries) === JSON.stringify(mediaQueryConfig)) {\n // hmr avoid update\n return\n }\n }\n setupMediaListeners()\n }\n\n Object.assign(mediaQueryConfig, queries)\n // start in the initial state\n for (const key in queries) {\n mediaState[key] = defaultActive[key] || false\n }\n initialMediaState = { ...mediaState }\n}\n\nfunction unlisten() {\n dispose.forEach((cb) => cb())\n dispose.clear()\n}\n\nfunction setupMediaListeners() {\n // hmr, undo existing before re-binding\n unlisten()\n\n for (const key in mediaQueryConfig) {\n const str = mediaObjectToString(mediaQueryConfig[key])\n const getMatch = () => matchMedia(str)\n const match = getMatch()\n if (!match) {\n throw new Error('\u26A0\uFE0F No match')\n }\n // react native needs these deprecated apis for now\n match.addListener(update)\n dispose.add(() => match.removeListener(update))\n update()\n\n function update() {\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 }\n}\n\nexport function useMediaQueryListeners() {\n useIsomorphicLayoutEffect(() => {\n setupMediaListeners()\n return unlisten\n }, [])\n}\n\nexport function useMedia(): {\n [key in MediaQueryKey]: boolean\n} {\n const [state, setState] = useState(initialMediaState!)\n const keys = useSafeRef({} as Record<string, boolean>)\n\n function updateState() {\n setState((prev) => {\n for (const key in keys.current) {\n if (prev[key] !== mediaState[key]) {\n return { ...mediaState }\n }\n }\n return prev\n })\n }\n\n useIsomorphicLayoutEffect(() => {\n const listeners: Function[] = []\n for (const key in keys.current) {\n listeners.push(addMediaQueryListener(key, updateState))\n }\n updateState()\n return () => {\n listeners.forEach((cb) => cb())\n }\n })\n\n return useMemo(\n () =>\n new Proxy(state, {\n get(_, key: string) {\n if (!keys.current[key]) {\n keys.current = { ...keys.current, [key]: true }\n }\n return Reflect.get(state, key)\n },\n }),\n [state, keys]\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
  }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var useSafeRef_exports = {};
20
+ __export(useSafeRef_exports, {
21
+ useSafeRef: () => useSafeRef
22
+ });
23
+ module.exports = __toCommonJS(useSafeRef_exports);
24
+ var import_react = require("react");
25
+ var import_platform = require("../constants/platform");
26
+ const useSafeRef = (initialValue) => {
27
+ const rawRef = (0, import_react.useRef)();
28
+ const raw = rawRef.current ?? (rawRef.current = {
29
+ isRendering: true,
30
+ comittedValue: initialValue,
31
+ currentValue: initialValue,
32
+ ref: {
33
+ get current() {
34
+ if (raw.isRendering) {
35
+ return raw.currentValue;
36
+ } else {
37
+ return raw.comittedValue;
38
+ }
39
+ },
40
+ set current(v) {
41
+ if (!raw.isRendering) {
42
+ raw.comittedValue = v;
43
+ }
44
+ raw.currentValue = v;
45
+ }
46
+ }
47
+ });
48
+ raw.isRendering = true;
49
+ Promise.resolve().then(() => raw.isRendering = false);
50
+ raw.currentValue = raw.comittedValue;
51
+ (0, import_platform.useIsomorphicLayoutEffect)(() => {
52
+ raw.comittedValue = raw.currentValue;
53
+ });
54
+ return raw.ref;
55
+ };
56
+ // Annotate the CommonJS export names for ESM import in node:
57
+ 0 && (module.exports = {
58
+ useSafeRef
59
+ });
60
+ //# sourceMappingURL=useSafeRef.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/hooks/useSafeRef.ts"],
4
+ "sourcesContent": ["import { useRef } from 'react'\n\nimport { useIsomorphicLayoutEffect } from '../constants/platform'\n\n// dai-shi \uD83D\uDE4F\n// https://dev.to/uhyo_/a-concurrent-mode-safe-version-of-useref-1325\n\ntype Raw<T> = {\n isRendering: boolean\n comittedValue: T\n currentValue: T\n ref: { current: T }\n}\n\nexport const useSafeRef = <T>(initialValue: T) => {\n const rawRef = useRef<Raw<T>>()\n\n const raw: Raw<T> =\n rawRef.current ??\n (rawRef.current = {\n isRendering: true,\n comittedValue: initialValue,\n currentValue: initialValue,\n ref: {\n get current() {\n if (raw.isRendering) {\n return raw.currentValue\n } else {\n return raw.comittedValue\n }\n },\n set current(v) {\n if (!raw.isRendering) {\n raw.comittedValue = v\n }\n raw.currentValue = v\n },\n },\n })\n\n raw.isRendering = true\n Promise.resolve().then(() => (raw.isRendering = false))\n raw.currentValue = raw.comittedValue\n\n useIsomorphicLayoutEffect(() => {\n raw.comittedValue = raw.currentValue\n })\n\n return raw.ref\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAuB;AAEvB,sBAA0C;AAYnC,MAAM,aAAa,CAAI,iBAAoB;AAChD,QAAM,SAAS,yBAAe;AAE9B,QAAM,MACJ,OAAO,WACN,QAAO,UAAU;AAAA,IAChB,aAAa;AAAA,IACb,eAAe;AAAA,IACf,cAAc;AAAA,IACd,KAAK;AAAA,MACH,IAAI,UAAU;AACZ,YAAI,IAAI,aAAa;AACnB,iBAAO,IAAI;AAAA,QACb,OAAO;AACL,iBAAO,IAAI;AAAA,QACb;AAAA,MACF;AAAA,MACA,IAAI,QAAQ,GAAG;AACb,YAAI,CAAC,IAAI,aAAa;AACpB,cAAI,gBAAgB;AAAA,QACtB;AACA,YAAI,eAAe;AAAA,MACrB;AAAA,IACF;AAAA,EACF;AAEF,MAAI,cAAc;AAClB,UAAQ,QAAQ,EAAE,KAAK,MAAO,IAAI,cAAc,KAAM;AACtD,MAAI,eAAe,IAAI;AAEvB,iDAA0B,MAAM;AAC9B,QAAI,gBAAgB,IAAI;AAAA,EAC1B,CAAC;AAED,SAAO,IAAI;AACb;",
6
+ "names": []
7
+ }
@@ -62,9 +62,9 @@ const useTheme = (themeName, componentName, props, forceUpdate) => {
62
62
  const debugProp = props && props["debug"];
63
63
  if (!theme) {
64
64
  if (process.env.NODE_ENV === "development") {
65
- console.warn("No theme", { themeName, theme, componentName, className });
65
+ console.warn("No theme with name", themeName);
66
66
  }
67
- return themes[(0, import_conf.getConfig)().defaultTheme || Object.keys(themes)[0]];
67
+ return themes[(0, import_conf.getConfig)().defaultTheme || "light"];
68
68
  }
69
69
  return (0, import_react.useMemo)(() => {
70
70
  return new Proxy(theme, {
@@ -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, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport { getConfig } from '../conf'\nimport { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { ThemeContext } from '../contexts/ThemeContext'\nimport { areEqualSets } from '../helpers/areEqualSets'\nimport {\n GetNextThemeProps,\n ThemeManager,\n ThemeManagerContext,\n emptyManager,\n} from '../helpers/ThemeManager'\nimport { ThemeName, ThemeObject } from '../types'\nimport { GetThemeUnwrapped } from './getThemeUnwrapped'\nimport { useConstant } from './useConstant'\n\nexport type ThemeProps = {\n className?: string\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n componentName?: string\n children?: any\n reset?: boolean\n debug?: boolean | 'verbose'\n}\n\ntype UseThemeState = {\n uuid: Object\n keys: Set<string>\n isRendering: boolean\n}\n\nexport const useTheme = (\n themeName?: string | null,\n componentName?: string,\n props?: ThemeProps,\n forceUpdate?: any\n): ThemeObject => {\n const { name, theme, themes, themeManager, className } = useChangeThemeEffect(\n themeName,\n componentName,\n props,\n forceUpdate\n )\n\n if (process.env.NODE_ENV === 'development') {\n if (props?.debug === 'verbose') {\n console.log(' \uD83D\uDD39 useTheme', { themeName, componentName, name, className })\n }\n }\n\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 = themeManager?.keys.get(st.uuid)\n if (!cur || !areEqualSets(st.keys, cur)) {\n themeManager?.track(st.uuid, st.keys)\n }\n })\n\n const debugProp = props && props['debug']\n\n if (!theme) {\n if (process.env.NODE_ENV === 'development') {\n console.warn('No theme', { themeName, theme, componentName, className })\n }\n return themes[getConfig().defaultTheme || Object.keys(themes)[0]]\n }\n\n return useMemo(() => {\n return new Proxy(theme, {\n has(_, key) {\n if (typeof key === 'string') {\n if (key[0] === '$') {\n key = key.slice(1)\n }\n }\n return Reflect.has(theme, key)\n },\n get(_, key) {\n if (key === GetThemeUnwrapped) {\n return theme\n }\n if (key === GetThemeManager) {\n return themeManager\n }\n if (key === 'name') {\n return name\n }\n if (key === 'className') {\n return className\n }\n if (!name || key === '__proto__' || typeof key === 'symbol' || key === '$typeof') {\n return Reflect.get(_, key)\n }\n if (!themeManager) {\n console.error('No themeManager')\n return\n }\n // auto convert variables to plain\n if (key[0] === '$') {\n key = key.slice(1)\n }\n if (state.current.isRendering && !state.current.keys.has(key)) {\n state.current.keys.add(key)\n if (process.env.NODE_ENV === 'development' && debugProp === 'verbose') {\n console.log(' \uD83D\uDD38 tracking theme', key)\n }\n }\n return themeManager.getValue(key)\n },\n })\n }, [name, theme, componentName, className, debugProp])\n}\n\nconst GetThemeManager = Symbol()\n\nexport const getThemeManager = (theme: any): ThemeManager | undefined => {\n if (!theme) return\n return theme[GetThemeManager]\n}\n\nexport const useThemeName = (opts?: { parent?: true }) => {\n const parent = useContext(ThemeManagerContext)\n const [name, setName] = useState(parent?.name || '')\n\n useIsomorphicLayoutEffect(() => {\n if (!parent) return\n return parent.onChangeTheme((next, manager) => {\n const name = opts?.parent ? manager.parentName || next : next\n if (!name) return\n setName(name)\n })\n }, [parent])\n\n return name\n}\n\nexport const useDefaultThemeName = () => {\n return useContext(ThemeContext)?.defaultTheme\n}\n\nexport const activeThemeManagers = new Set<ThemeManager>()\n\nexport const useChangeThemeEffect = (\n name?: string | null,\n componentName?: string,\n props?: ThemeProps,\n forceUpdateProp?: any\n) => {\n const debug = props && props['debug']\n const parentManager = useContext(ThemeManagerContext) || emptyManager\n const { themes } = useContext(ThemeContext)!\n const reset = props?.reset || false\n const getThemeProps: GetNextThemeProps = { name, componentName, themes, reset }\n const next = parentManager.getNextTheme(getThemeProps, debug)\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const forceUpdate = forceUpdateProp || useForceUpdate()\n\n const themeManager = useConstant<ThemeManager | null>(() => {\n if (!next) return null\n return new ThemeManager(next.name, next.theme, parentManager, reset)\n })\n\n // if not SSR\n if (!isWeb || typeof document !== 'undefined') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n if (!themeManager) return\n\n activeThemeManagers.add(themeManager)\n\n if (next?.name) {\n themeManager.update(next)\n }\n\n const disposeParentOnChange = parentManager.onChangeTheme(() => {\n const next = parentManager.getNextTheme(getThemeProps, debug)\n if (!next) return\n if (themeManager.update(next)) {\n forceUpdate()\n }\n })\n\n return () => {\n activeThemeManagers.delete(themeManager)\n disposeParentOnChange()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [themes, name, componentName, debug, next?.name])\n }\n\n return {\n ...(parentManager && {\n name: parentManager.name,\n theme: parentManager.theme,\n }),\n ...next,\n themes,\n themeManager,\n }\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { useForceUpdate } from '@tamagui/use-force-update'\nimport React, { useContext, useLayoutEffect, useMemo, useRef, useState } from 'react'\n\nimport { getConfig } from '../conf'\nimport { isWeb, useIsomorphicLayoutEffect } from '../constants/platform'\nimport { ThemeContext } from '../contexts/ThemeContext'\nimport { areEqualSets } from '../helpers/areEqualSets'\nimport {\n GetNextThemeProps,\n ThemeManager,\n ThemeManagerContext,\n emptyManager,\n} from '../helpers/ThemeManager'\nimport { ThemeName, ThemeObject } from '../types'\nimport { GetThemeUnwrapped } from './getThemeUnwrapped'\nimport { useConstant } from './useConstant'\n\nexport type ThemeProps = {\n className?: string\n disableThemeClass?: boolean\n name: Exclude<ThemeName, number> | null\n componentName?: string\n children?: any\n reset?: boolean\n debug?: boolean | 'verbose'\n}\n\ntype UseThemeState = {\n uuid: Object\n keys: Set<string>\n isRendering: boolean\n}\n\nexport const useTheme = (\n themeName?: string | null,\n componentName?: string,\n props?: ThemeProps,\n forceUpdate?: any\n): ThemeObject => {\n const { name, theme, themes, themeManager, className } = useChangeThemeEffect(\n themeName,\n componentName,\n props,\n forceUpdate\n )\n\n if (process.env.NODE_ENV === 'development') {\n if (props?.debug === 'verbose') {\n // eslint-disable-next-line no-console\n console.log(' \uD83D\uDD39 useTheme', { themeName, componentName, name, className })\n }\n }\n\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 = themeManager?.keys.get(st.uuid)\n if (!cur || !areEqualSets(st.keys, cur)) {\n themeManager?.track(st.uuid, st.keys)\n }\n })\n\n const debugProp = props && props['debug']\n\n if (!theme) {\n if (process.env.NODE_ENV === 'development') {\n // eslint-disable-next-line no-console\n console.warn('No theme with name', themeName)\n }\n return themes[getConfig().defaultTheme || 'light']\n }\n\n return useMemo(() => {\n return new Proxy(theme, {\n has(_, key) {\n if (typeof key === 'string') {\n if (key[0] === '$') {\n key = key.slice(1)\n }\n }\n return Reflect.has(theme, key)\n },\n get(_, key) {\n if (key === GetThemeUnwrapped) {\n return theme\n }\n if (key === GetThemeManager) {\n return themeManager\n }\n if (key === 'name') {\n return name\n }\n if (key === 'className') {\n return className\n }\n if (!name || key === '__proto__' || typeof key === 'symbol' || key === '$typeof') {\n return Reflect.get(_, key)\n }\n if (!themeManager) {\n console.error('No themeManager')\n return\n }\n // auto convert variables to plain\n if (key[0] === '$') {\n key = key.slice(1)\n }\n if (state.current.isRendering && !state.current.keys.has(key)) {\n state.current.keys.add(key)\n if (process.env.NODE_ENV === 'development' && debugProp === 'verbose') {\n console.log(' \uD83D\uDD38 tracking theme', key)\n }\n }\n return themeManager.getValue(key)\n },\n })\n }, [name, theme, componentName, className, debugProp])\n}\n\nconst GetThemeManager = Symbol()\n\nexport const getThemeManager = (theme: any): ThemeManager | undefined => {\n if (!theme) return\n return theme[GetThemeManager]\n}\n\nexport const useThemeName = (opts?: { parent?: true }) => {\n const parent = useContext(ThemeManagerContext)\n const [name, setName] = useState(parent?.name || '')\n\n useIsomorphicLayoutEffect(() => {\n if (!parent) return\n return parent.onChangeTheme((next, manager) => {\n const name = opts?.parent ? manager.parentName || next : next\n if (!name) return\n setName(name)\n })\n }, [parent])\n\n return name\n}\n\nexport const useDefaultThemeName = () => {\n return useContext(ThemeContext)?.defaultTheme\n}\n\nexport const activeThemeManagers = new Set<ThemeManager>()\n\nexport const useChangeThemeEffect = (\n name?: string | null,\n componentName?: string,\n props?: ThemeProps,\n forceUpdateProp?: any\n) => {\n const debug = props && props['debug']\n const parentManager = useContext(ThemeManagerContext) || emptyManager\n const { themes } = useContext(ThemeContext)!\n const reset = props?.reset || false\n const getThemeProps: GetNextThemeProps = { name, componentName, themes, reset }\n const next = parentManager.getNextTheme(getThemeProps, debug)\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const forceUpdate = forceUpdateProp || useForceUpdate()\n\n const themeManager = useConstant<ThemeManager | null>(() => {\n if (!next) return null\n return new ThemeManager(next.name, next.theme, parentManager, reset)\n })\n\n // if not SSR\n if (!isWeb || typeof document !== 'undefined') {\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useLayoutEffect(() => {\n if (!themeManager) return\n\n activeThemeManagers.add(themeManager)\n\n if (next?.name) {\n themeManager.update(next)\n }\n\n const disposeParentOnChange = parentManager.onChangeTheme(() => {\n const next = parentManager.getNextTheme(getThemeProps, debug)\n if (!next) return\n if (themeManager.update(next)) {\n forceUpdate()\n }\n })\n\n return () => {\n activeThemeManagers.delete(themeManager)\n disposeParentOnChange()\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [themes, name, componentName, debug, next?.name])\n }\n\n return {\n ...(parentManager && {\n name: parentManager.name,\n theme: parentManager.theme,\n }),\n ...next,\n themes,\n themeManager,\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
package/dist/cjs/index.js CHANGED
@@ -21,12 +21,20 @@ var src_exports = {};
21
21
  __export(src_exports, {
22
22
  TextAncestorContext: () => import_TextAncestorContext.TextAncestorContext,
23
23
  TextAncestorProvider: () => import_TextAncestorContext.TextAncestorProvider,
24
+ addMediaQueryListener: () => import_useMedia.addMediaQueryListener,
25
+ configureMedia: () => import_useMedia.configureMedia,
24
26
  createDOMProps: () => import_rnw.createDOMProps,
25
27
  getConfig: () => import_conf.getConfig,
26
28
  getHasConfigured: () => import_conf.getHasConfigured,
29
+ getMedia: () => import_useMedia.getMedia,
27
30
  getThemes: () => import_conf.getThemes,
28
31
  getTokens: () => import_conf.getTokens,
29
- onConfiguredOnce: () => import_conf.onConfiguredOnce
32
+ mediaObjectToString: () => import_useMedia.mediaObjectToString,
33
+ mediaQueryConfig: () => import_useMedia.mediaQueryConfig,
34
+ mediaState: () => import_useMedia.mediaState,
35
+ onConfiguredOnce: () => import_conf.onConfiguredOnce,
36
+ removeMediaQueryListener: () => import_useMedia.removeMediaQueryListener,
37
+ useMedia: () => import_useMedia.useMedia
30
38
  });
31
39
  module.exports = __toCommonJS(src_exports);
32
40
  __reExport(src_exports, require("./Tamagui"), module.exports);
@@ -71,11 +79,12 @@ __reExport(src_exports, require("./hooks/useConstant"), module.exports);
71
79
  __reExport(src_exports, require("./hooks/useId"), module.exports);
72
80
  __reExport(src_exports, require("./hooks/useIsMounted"), module.exports);
73
81
  __reExport(src_exports, require("./hooks/useIsTouchDevice"), module.exports);
74
- __reExport(src_exports, require("./hooks/useMedia"), module.exports);
82
+ var import_useMedia = require("./hooks/useMedia");
75
83
  __reExport(src_exports, require("./hooks/usePressable"), module.exports);
76
84
  __reExport(src_exports, require("./hooks/useTheme"), module.exports);
77
85
  __reExport(src_exports, require("./hooks/useIsSSR"), module.exports);
78
86
  __reExport(src_exports, require("./hooks/useUnmountEffect"), module.exports);
87
+ __reExport(src_exports, require("./hooks/useSafeRef"), module.exports);
79
88
  __reExport(src_exports, require("./views/Slot"), module.exports);
80
89
  __reExport(src_exports, require("./views/Stack"), module.exports);
81
90
  __reExport(src_exports, require("./views/Text"), module.exports);
@@ -92,11 +101,19 @@ __reExport(src_exports, require("@tamagui/helpers"), module.exports);
92
101
  0 && (module.exports = {
93
102
  TextAncestorContext,
94
103
  TextAncestorProvider,
104
+ addMediaQueryListener,
105
+ configureMedia,
95
106
  createDOMProps,
96
107
  getConfig,
97
108
  getHasConfigured,
109
+ getMedia,
98
110
  getThemes,
99
111
  getTokens,
100
- onConfiguredOnce
112
+ mediaObjectToString,
113
+ mediaQueryConfig,
114
+ mediaState,
115
+ onConfiguredOnce,
116
+ removeMediaQueryListener,
117
+ useMedia
101
118
  });
102
119
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/index.ts"],
4
- "sourcesContent": ["export * from './Tamagui'\nexport * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport * from './createTokens'\nexport * from './createVariable'\nexport * from './createVariables'\nexport * from './insertFont'\nexport * from './addTheme'\nexport * from './updateTheme'\nexport * from './styled'\nexport * from './types'\n\n// for type portability\nexport type { RNWTextProps, RNWViewProps } from './types-rnw'\nexport { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from './conf'\n\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport { createDOMProps } from '@tamagui/rnw'\n\nexport * from './helpers/calc'\nexport * from './helpers/createShallowUpdate'\nexport * from './helpers/getStackSize'\nexport * from './helpers/getVariantExtras'\nexport * from './helpers/getExpandedShorthands'\nexport * from './helpers/getSize'\nexport * from './helpers/getSplitStyles'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/pseudoDescriptors'\nexport * from './helpers/mergeProps'\nexport * from './helpers/expandStyles'\nexport * from './helpers/getFont'\nexport * from './helpers/isObj'\nexport * from './helpers/isTamaguiElement'\nexport * from './helpers/isTamaguiComponent'\nexport * from './helpers/matchMedia'\nexport * from './helpers/startTransition'\nexport * from './helpers/themeable'\nexport * from './helpers/withStaticProperties'\n\nexport * from './contexts/ButtonInsideButtonContext'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useId'\nexport * from './hooks/useIsMounted'\nexport * from './hooks/useIsTouchDevice'\nexport * from './hooks/useMedia'\nexport * from './hooks/usePressable'\nexport * from './hooks/useTheme'\nexport * from './hooks/useIsSSR'\nexport * from './hooks/useUnmountEffect'\n\nexport * from './views/Slot'\nexport * from './views/Stack'\nexport * from './views/Text'\nexport { TextAncestorProvider, TextAncestorContext } from './contexts/TextAncestorContext'\nexport * from './views/Theme'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/ThemeReset'\nexport * from './views/FontLanguage'\n\nexport * from '@tamagui/use-force-update'\nexport * from '@tamagui/use-event'\nexport * from '@tamagui/helpers'\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAc,sBAAd;AACA,wBAAc,8BADd;AAEA,wBAAc,+BAFd;AAGA,wBAAc,0BAHd;AAIA,wBAAc,4BAJd;AAKA,wBAAc,yBALd;AAMA,wBAAc,2BANd;AAOA,wBAAc,6BAPd;AAQA,wBAAc,8BARd;AASA,wBAAc,yBATd;AAUA,wBAAc,uBAVd;AAWA,wBAAc,0BAXd;AAYA,wBAAc,qBAZd;AAaA,wBAAc,oBAbd;AAiBA,kBAAoF;AAEpF,wBAAc,kCAnBd;AAoBA,wBAAc,iCApBd;AAqBA,iBAA+B;AAE/B,wBAAc,2BAvBd;AAwBA,wBAAc,0CAxBd;AAyBA,wBAAc,mCAzBd;AA0BA,wBAAc,uCA1Bd;AA2BA,wBAAc,4CA3Bd;AA4BA,wBAAc,8BA5Bd;AA6BA,wBAAc,qCA7Bd;AA8BA,wBAAc,sCA9Bd;AA+BA,wBAAc,wCA/Bd;AAgCA,wBAAc,iCAhCd;AAiCA,wBAAc,mCAjCd;AAkCA,wBAAc,8BAlCd;AAmCA,wBAAc,4BAnCd;AAoCA,wBAAc,uCApCd;AAqCA,wBAAc,yCArCd;AAsCA,wBAAc,iCAtCd;AAuCA,wBAAc,sCAvCd;AAwCA,wBAAc,gCAxCd;AAyCA,wBAAc,2CAzCd;AA2CA,wBAAc,iDA3Cd;AA6CA,wBAAc,gCA7Cd;AA8CA,wBAAc,0BA9Cd;AA+CA,wBAAc,iCA/Cd;AAgDA,wBAAc,qCAhDd;AAiDA,wBAAc,6BAjDd;AAkDA,wBAAc,iCAlDd;AAmDA,wBAAc,6BAnDd;AAoDA,wBAAc,6BApDd;AAqDA,wBAAc,qCArDd;AAuDA,wBAAc,yBAvDd;AAwDA,wBAAc,0BAxDd;AAyDA,wBAAc,yBAzDd;AA0DA,iCAA0D;AAC1D,wBAAc,0BA3Dd;AA4DA,wBAAc,iCA5Dd;AA6DA,wBAAc,kCA7Dd;AA8DA,wBAAc,+BA9Dd;AA+DA,wBAAc,iCA/Dd;AAiEA,wBAAc,sCAjEd;AAkEA,wBAAc,+BAlEd;AAmEA,wBAAc,6BAnEd;",
4
+ "sourcesContent": ["export * from './Tamagui'\nexport * from './createComponent'\nexport * from './createShorthands'\nexport * from './createTheme'\nexport * from './createTamagui'\nexport * from './createFont'\nexport * from './createTokens'\nexport * from './createVariable'\nexport * from './createVariables'\nexport * from './insertFont'\nexport * from './addTheme'\nexport * from './updateTheme'\nexport * from './styled'\nexport * from './types'\n\n// for type portability\nexport type { RNWTextProps, RNWViewProps } from './types-rnw'\nexport { getHasConfigured, getConfig, getThemes, getTokens, onConfiguredOnce } from './conf'\n\nexport * from './constants/constants'\nexport * from './constants/platform'\nexport { createDOMProps } from '@tamagui/rnw'\n\nexport * from './helpers/calc'\nexport * from './helpers/createShallowUpdate'\nexport * from './helpers/getStackSize'\nexport * from './helpers/getVariantExtras'\nexport * from './helpers/getExpandedShorthands'\nexport * from './helpers/getSize'\nexport * from './helpers/getSplitStyles'\nexport * from './helpers/getStylesAtomic'\nexport * from './helpers/pseudoDescriptors'\nexport * from './helpers/mergeProps'\nexport * from './helpers/expandStyles'\nexport * from './helpers/getFont'\nexport * from './helpers/isObj'\nexport * from './helpers/isTamaguiElement'\nexport * from './helpers/isTamaguiComponent'\nexport * from './helpers/matchMedia'\nexport * from './helpers/startTransition'\nexport * from './helpers/themeable'\nexport * from './helpers/withStaticProperties'\n\nexport * from './contexts/ButtonInsideButtonContext'\n\nexport * from './hooks/useConstant'\nexport * from './hooks/useId'\nexport * from './hooks/useIsMounted'\nexport * from './hooks/useIsTouchDevice'\nexport {\n configureMedia,\n getMedia,\n mediaState,\n useMedia,\n mediaObjectToString,\n addMediaQueryListener,\n removeMediaQueryListener,\n mediaQueryConfig,\n} from './hooks/useMedia'\nexport * from './hooks/usePressable'\nexport * from './hooks/useTheme'\nexport * from './hooks/useIsSSR'\nexport * from './hooks/useUnmountEffect'\nexport * from './hooks/useSafeRef'\n\nexport * from './views/Slot'\nexport * from './views/Stack'\nexport * from './views/Text'\nexport { TextAncestorProvider, TextAncestorContext } from './contexts/TextAncestorContext'\nexport * from './views/Theme'\nexport * from './views/ThemeInverse'\nexport * from './views/ThemeProvider'\nexport * from './views/ThemeReset'\nexport * from './views/FontLanguage'\n\nexport * from '@tamagui/use-force-update'\nexport * from '@tamagui/use-event'\nexport * from '@tamagui/helpers'\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAc,sBAAd;AACA,wBAAc,8BADd;AAEA,wBAAc,+BAFd;AAGA,wBAAc,0BAHd;AAIA,wBAAc,4BAJd;AAKA,wBAAc,yBALd;AAMA,wBAAc,2BANd;AAOA,wBAAc,6BAPd;AAQA,wBAAc,8BARd;AASA,wBAAc,yBATd;AAUA,wBAAc,uBAVd;AAWA,wBAAc,0BAXd;AAYA,wBAAc,qBAZd;AAaA,wBAAc,oBAbd;AAiBA,kBAAoF;AAEpF,wBAAc,kCAnBd;AAoBA,wBAAc,iCApBd;AAqBA,iBAA+B;AAE/B,wBAAc,2BAvBd;AAwBA,wBAAc,0CAxBd;AAyBA,wBAAc,mCAzBd;AA0BA,wBAAc,uCA1Bd;AA2BA,wBAAc,4CA3Bd;AA4BA,wBAAc,8BA5Bd;AA6BA,wBAAc,qCA7Bd;AA8BA,wBAAc,sCA9Bd;AA+BA,wBAAc,wCA/Bd;AAgCA,wBAAc,iCAhCd;AAiCA,wBAAc,mCAjCd;AAkCA,wBAAc,8BAlCd;AAmCA,wBAAc,4BAnCd;AAoCA,wBAAc,uCApCd;AAqCA,wBAAc,yCArCd;AAsCA,wBAAc,iCAtCd;AAuCA,wBAAc,sCAvCd;AAwCA,wBAAc,gCAxCd;AAyCA,wBAAc,2CAzCd;AA2CA,wBAAc,iDA3Cd;AA6CA,wBAAc,gCA7Cd;AA8CA,wBAAc,0BA9Cd;AA+CA,wBAAc,iCA/Cd;AAgDA,wBAAc,qCAhDd;AAiDA,sBASO;AACP,wBAAc,iCA3Dd;AA4DA,wBAAc,6BA5Dd;AA6DA,wBAAc,6BA7Dd;AA8DA,wBAAc,qCA9Dd;AA+DA,wBAAc,+BA/Dd;AAiEA,wBAAc,yBAjEd;AAkEA,wBAAc,0BAlEd;AAmEA,wBAAc,yBAnEd;AAoEA,iCAA0D;AAC1D,wBAAc,0BArEd;AAsEA,wBAAc,iCAtEd;AAuEA,wBAAc,kCAvEd;AAwEA,wBAAc,+BAxEd;AAyEA,wBAAc,iCAzEd;AA2EA,wBAAc,sCA3Ed;AA4EA,wBAAc,+BA5Ed;AA6EA,wBAAc,6BA7Ed;",
6
6
  "names": []
7
7
  }