@tamagui/web 2.3.3 → 2.4.0-1783099846627

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 (108) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/dist/cjs/createComponent.cjs +4 -3
  3. package/dist/cjs/createComponent.native.js +7 -6
  4. package/dist/cjs/createComponent.native.js.map +1 -1
  5. package/dist/cjs/eventHandling.cjs +1 -1
  6. package/dist/cjs/eventHandling.native.js +12 -36
  7. package/dist/cjs/eventHandling.native.js.map +1 -1
  8. package/dist/cjs/helpers/getSplitStyles.cjs +5 -0
  9. package/dist/cjs/helpers/getSplitStyles.native.js +9 -0
  10. package/dist/cjs/helpers/getSplitStyles.native.js.map +1 -1
  11. package/dist/cjs/helpers/mainThreadPressEvents.native.js +20 -3
  12. package/dist/cjs/helpers/mainThreadPressEvents.native.js.map +1 -1
  13. package/dist/cjs/helpers/pointerEvents.native.js +26 -20
  14. package/dist/cjs/helpers/pointerEvents.native.js.map +1 -1
  15. package/dist/cjs/hooks/useComponentState.cjs +25 -1
  16. package/dist/cjs/hooks/useComponentState.native.js +25 -1
  17. package/dist/cjs/hooks/useComponentState.native.js.map +1 -1
  18. package/dist/cjs/hooks/useMedia.cjs +107 -42
  19. package/dist/cjs/hooks/useMedia.native.js +149 -60
  20. package/dist/cjs/hooks/useMedia.native.js.map +1 -1
  21. package/dist/cjs/hooks/useTheme.cjs +17 -4
  22. package/dist/cjs/hooks/useTheme.native.js +18 -4
  23. package/dist/cjs/hooks/useTheme.native.js.map +1 -1
  24. package/dist/cjs/hooks/useThemeState.cjs +132 -67
  25. package/dist/cjs/hooks/useThemeState.native.js +144 -70
  26. package/dist/cjs/hooks/useThemeState.native.js.map +1 -1
  27. package/dist/cjs/index.cjs +2 -0
  28. package/dist/cjs/index.native.js +2 -0
  29. package/dist/cjs/index.native.js.map +1 -1
  30. package/dist/cjs/views/Theme.cjs +1 -1
  31. package/dist/cjs/views/Theme.native.js +1 -1
  32. package/dist/cjs/views/Theme.native.js.map +1 -1
  33. package/dist/esm/createComponent.mjs +4 -3
  34. package/dist/esm/createComponent.mjs.map +1 -1
  35. package/dist/esm/createComponent.native.js +10 -8
  36. package/dist/esm/createComponent.native.js.map +1 -1
  37. package/dist/esm/eventHandling.mjs +1 -1
  38. package/dist/esm/eventHandling.mjs.map +1 -1
  39. package/dist/esm/eventHandling.native.js +12 -36
  40. package/dist/esm/eventHandling.native.js.map +1 -1
  41. package/dist/esm/helpers/getSplitStyles.mjs +5 -0
  42. package/dist/esm/helpers/getSplitStyles.mjs.map +1 -1
  43. package/dist/esm/helpers/getSplitStyles.native.js +9 -0
  44. package/dist/esm/helpers/getSplitStyles.native.js.map +1 -1
  45. package/dist/esm/helpers/mainThreadPressEvents.native.js +20 -3
  46. package/dist/esm/helpers/mainThreadPressEvents.native.js.map +1 -1
  47. package/dist/esm/helpers/pointerEvents.native.js +26 -20
  48. package/dist/esm/helpers/pointerEvents.native.js.map +1 -1
  49. package/dist/esm/hooks/useComponentState.mjs +26 -2
  50. package/dist/esm/hooks/useComponentState.mjs.map +1 -1
  51. package/dist/esm/hooks/useComponentState.native.js +26 -2
  52. package/dist/esm/hooks/useComponentState.native.js.map +1 -1
  53. package/dist/esm/hooks/useMedia.mjs +108 -43
  54. package/dist/esm/hooks/useMedia.mjs.map +1 -1
  55. package/dist/esm/hooks/useMedia.native.js +150 -61
  56. package/dist/esm/hooks/useMedia.native.js.map +1 -1
  57. package/dist/esm/hooks/useTheme.mjs +17 -4
  58. package/dist/esm/hooks/useTheme.mjs.map +1 -1
  59. package/dist/esm/hooks/useTheme.native.js +18 -4
  60. package/dist/esm/hooks/useTheme.native.js.map +1 -1
  61. package/dist/esm/hooks/useThemeState.mjs +133 -68
  62. package/dist/esm/hooks/useThemeState.mjs.map +1 -1
  63. package/dist/esm/hooks/useThemeState.native.js +145 -71
  64. package/dist/esm/hooks/useThemeState.native.js.map +1 -1
  65. package/dist/esm/index.js +3 -3
  66. package/dist/esm/index.js.map +1 -1
  67. package/dist/esm/index.mjs +3 -3
  68. package/dist/esm/index.mjs.map +1 -1
  69. package/dist/esm/index.native.js +3 -3
  70. package/dist/esm/index.native.js.map +1 -1
  71. package/dist/esm/views/Theme.mjs +1 -1
  72. package/dist/esm/views/Theme.mjs.map +1 -1
  73. package/dist/esm/views/Theme.native.js +1 -1
  74. package/dist/esm/views/Theme.native.js.map +1 -1
  75. package/package.json +13 -13
  76. package/src/createComponent.tsx +18 -7
  77. package/src/eventHandling.native.ts +28 -40
  78. package/src/eventHandling.ts +2 -1
  79. package/src/helpers/getSplitStyles.tsx +33 -0
  80. package/src/helpers/mainThreadPressEvents.native.ts +25 -3
  81. package/src/helpers/pointerEvents.native.ts +26 -19
  82. package/src/hooks/useComponentState.ts +39 -2
  83. package/src/hooks/useMedia.tsx +147 -42
  84. package/src/hooks/useTheme.tsx +27 -5
  85. package/src/hooks/useThemeState.ts +263 -137
  86. package/src/index.ts +7 -1
  87. package/src/types.tsx +53 -5
  88. package/src/views/Theme.tsx +4 -1
  89. package/types/createComponent.d.ts.map +1 -1
  90. package/types/eventHandling.d.ts +1 -1
  91. package/types/eventHandling.d.ts.map +1 -1
  92. package/types/eventHandling.native.d.ts +2 -2
  93. package/types/eventHandling.native.d.ts.map +1 -1
  94. package/types/helpers/getSplitStyles.d.ts.map +1 -1
  95. package/types/helpers/mainThreadPressEvents.native.d.ts.map +1 -1
  96. package/types/helpers/pointerEvents.native.d.ts.map +1 -1
  97. package/types/hooks/useComponentState.d.ts +1 -1
  98. package/types/hooks/useComponentState.d.ts.map +1 -1
  99. package/types/hooks/useMedia.d.ts.map +1 -1
  100. package/types/hooks/useTheme.d.ts +1 -1
  101. package/types/hooks/useTheme.d.ts.map +1 -1
  102. package/types/hooks/useThemeState.d.ts +1 -1
  103. package/types/hooks/useThemeState.d.ts.map +1 -1
  104. package/types/index.d.ts +2 -2
  105. package/types/index.d.ts.map +1 -1
  106. package/types/types.d.ts +3 -1
  107. package/types/types.d.ts.map +1 -1
  108. package/types/views/Theme.d.ts.map +1 -1
@@ -1,5 +1,5 @@
1
1
  import { isServer, isWeb } from "@tamagui/constants";
2
- import { useRef, useSyncExternalStore } from "react";
2
+ import { useEffect, useReducer, useRef } from "react";
3
3
  import { getSetting } from "../config.native.js";
4
4
  import { resetMediaStyleCache } from "../helpers/createMediaStyle.native.js";
5
5
  import { matchMedia } from "../helpers/matchMedia.native.js";
@@ -38,6 +38,7 @@ var configureMedia = function (config) {
38
38
  if (!media) return;
39
39
  mediaVersion++;
40
40
  resetMediaStyleCache();
41
+ resetMediaTouchTracker();
41
42
  for (var key in media) {
42
43
  getMedia()[key] = (mediaQueryDefaultActive === null || mediaQueryDefaultActive === void 0 ? void 0 : mediaQueryDefaultActive[key]) || false;
43
44
  mediaKeys.add(`$${key}`);
@@ -95,6 +96,53 @@ function updateMediaListeners() {
95
96
  });
96
97
  }
97
98
  var States = /* @__PURE__ */new WeakMap();
99
+ var touchTrackerProto = null;
100
+ var refSlot = /* @__PURE__ */Symbol("mediaRefSlot");
101
+ function buildTouchTrackerProto() {
102
+ var proto = {};
103
+ var _iteratorNormalCompletion = true,
104
+ _didIteratorError = false,
105
+ _iteratorError = void 0;
106
+ try {
107
+ var _loop = function () {
108
+ var fullKey = _step.value;
109
+ var key = fullKey[0] === "$" ? fullKey.slice(1) : fullKey;
110
+ proto[key] = {
111
+ enumerable: true,
112
+ configurable: true,
113
+ get() {
114
+ var slot = this[refSlot];
115
+ if (!disableMediaTouch) {
116
+ slot.keys.add(key);
117
+ }
118
+ return slot.proxyTarget[key];
119
+ }
120
+ };
121
+ };
122
+ for (var _iterator = mediaKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) _loop();
123
+ } catch (err) {
124
+ _didIteratorError = true;
125
+ _iteratorError = err;
126
+ } finally {
127
+ try {
128
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
129
+ _iterator.return();
130
+ }
131
+ } finally {
132
+ if (_didIteratorError) {
133
+ throw _iteratorError;
134
+ }
135
+ }
136
+ }
137
+ return Object.create(null, proto);
138
+ }
139
+ function getTouchTrackerProto() {
140
+ if (!touchTrackerProto) touchTrackerProto = buildTouchTrackerProto();
141
+ return touchTrackerProto;
142
+ }
143
+ function resetMediaTouchTracker() {
144
+ touchTrackerProto = null;
145
+ }
98
146
  function setMediaShouldUpdate(ref, enabled, keys) {
99
147
  var cur = States.get(ref);
100
148
  if (!cur || cur.enabled !== enabled || keys) {
@@ -114,80 +162,121 @@ function subscribe(subscriber) {
114
162
  function useMedia(componentContext, debug) {
115
163
  "use no memo";
116
164
 
117
- var componentState = componentContext ? States.get(componentContext) : null;
118
165
  var internalRef = useRef(null);
119
166
  if (!internalRef.current) {
120
- internalRef.current = {
167
+ var initial = getMedia();
168
+ var r = {
121
169
  keys: /* @__PURE__ */new Set(),
122
- lastState: getMedia()
170
+ lastState: initial,
171
+ renderVersion: 0,
172
+ proxyTarget: initial,
173
+ proxy: void 0,
174
+ getSnapshot: void 0,
175
+ componentContext,
176
+ debug
123
177
  };
124
- }
125
- if (internalRef.current.pendingState) {
126
- internalRef.current.lastState = internalRef.current.pendingState;
127
- internalRef.current.pendingState = void 0;
128
- }
129
- var {
130
- keys
131
- } = internalRef.current;
132
- if (keys.size) {
133
- keys.clear();
134
- }
135
- var state = useSyncExternalStore(subscribe, function () {
136
- var curKeys = (componentState === null || componentState === void 0 ? void 0 : componentState.keys) || keys;
137
- var {
138
- lastState,
139
- pendingState
140
- } = internalRef.current;
141
- if (!curKeys.size) {
142
- return lastState;
143
- }
144
- var ms = getMedia();
145
- var _iteratorNormalCompletion = true,
146
- _didIteratorError = false,
147
- _iteratorError = void 0;
148
- try {
149
- for (var _iterator = curKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
150
- var key = _step.value;
151
- if (ms[key] !== (pendingState || lastState)[key]) {
152
- if (process.env.NODE_ENV === "development" && debug) {
153
- console.warn(`useMedia() \u270D\uFE0F`, key, lastState[key], "=>", ms[key]);
154
- }
155
- if (componentContext === null || componentContext === void 0 ? void 0 : componentContext.mediaEmit) {
156
- componentContext.mediaEmit(ms);
157
- internalRef.current.pendingState = ms;
158
- return lastState;
159
- }
160
- internalRef.current.lastState = ms;
161
- return ms;
162
- }
178
+ var tracker = Object.create(getTouchTrackerProto());
179
+ tracker[refSlot] = {
180
+ proxyTarget: initial,
181
+ keys: r.keys
182
+ };
183
+ r.proxy = tracker;
184
+ r.getSnapshot = function () {
185
+ var _States_get;
186
+ var curKeys = r.componentContext ? ((_States_get = States.get(r.componentContext)) === null || _States_get === void 0 ? void 0 : _States_get.keys) || r.keys : r.keys;
187
+ var {
188
+ lastState,
189
+ pendingState
190
+ } = r;
191
+ if (!curKeys.size) {
192
+ return lastState;
163
193
  }
164
- } catch (err) {
165
- _didIteratorError = true;
166
- _iteratorError = err;
167
- } finally {
194
+ var ms = getMedia();
195
+ var _iteratorNormalCompletion = true,
196
+ _didIteratorError = false,
197
+ _iteratorError = void 0;
168
198
  try {
169
- if (!_iteratorNormalCompletion && _iterator.return != null) {
170
- _iterator.return();
199
+ for (var _iterator = curKeys[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
200
+ var key = _step.value;
201
+ if (ms[key] !== (pendingState || lastState)[key]) {
202
+ var _r_componentContext;
203
+ if (process.env.NODE_ENV === "development" && r.debug) {
204
+ console.warn(`useMedia() \u270D\uFE0F`, key, lastState[key], "=>", ms[key]);
205
+ }
206
+ if ((_r_componentContext = r.componentContext) === null || _r_componentContext === void 0 ? void 0 : _r_componentContext.mediaEmit) {
207
+ r.componentContext.mediaEmit(ms);
208
+ r.pendingState = ms;
209
+ return lastState;
210
+ }
211
+ r.lastState = ms;
212
+ return ms;
213
+ }
171
214
  }
215
+ } catch (err) {
216
+ _didIteratorError = true;
217
+ _iteratorError = err;
172
218
  } finally {
173
- if (_didIteratorError) {
174
- throw _iteratorError;
219
+ try {
220
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
221
+ _iterator.return();
222
+ }
223
+ } finally {
224
+ if (_didIteratorError) {
225
+ throw _iteratorError;
226
+ }
175
227
  }
176
228
  }
177
- }
178
- return lastState;
179
- }, getServerSnapshot);
180
- return new Proxy(state, {
181
- get(_, key) {
182
- if (!disableMediaTouch && typeof key === "string") {
183
- keys.add(key);
229
+ return lastState;
230
+ };
231
+ internalRef.current = r;
232
+ } else {
233
+ internalRef.current.componentContext = componentContext;
234
+ internalRef.current.debug = debug;
235
+ }
236
+ var ref = internalRef.current;
237
+ ref.renderVersion++;
238
+ if (ref.pendingState) {
239
+ ref.lastState = ref.pendingState;
240
+ ref.pendingState = void 0;
241
+ }
242
+ if (ref.keys.size) {
243
+ ref.keys.clear();
244
+ }
245
+ var [, forceUpdate] = useReducer(incReducer, 0);
246
+ var state = isServer ? initState : ref.getSnapshot();
247
+ ref.proxyTarget = state;
248
+ ref.proxy[refSlot].proxyTarget = state;
249
+ useEffect(function () {
250
+ var _States_get;
251
+ var renderVersion = ref.renderVersion;
252
+ var shouldSubscribe = !ref.componentContext || !!((_States_get = States.get(ref.componentContext)) === null || _States_get === void 0 ? void 0 : _States_get.enabled);
253
+ if (shouldSubscribe) {
254
+ if (!ref.unsubscribe) {
255
+ ref.unsubscribe = subscribe(function () {
256
+ var next = ref.getSnapshot();
257
+ if (next !== ref.proxyTarget) {
258
+ ref.proxyTarget = next;
259
+ ref.proxy[refSlot].proxyTarget = next;
260
+ forceUpdate();
261
+ }
262
+ });
184
263
  }
185
- return Reflect.get(state, key);
264
+ } else if (ref.unsubscribe) {
265
+ ref.unsubscribe();
266
+ ref.unsubscribe = void 0;
186
267
  }
268
+ return function () {
269
+ if (ref.renderVersion === renderVersion) {
270
+ var _ref_unsubscribe;
271
+ (_ref_unsubscribe = ref.unsubscribe) === null || _ref_unsubscribe === void 0 ? void 0 : _ref_unsubscribe.call(ref);
272
+ ref.unsubscribe = void 0;
273
+ }
274
+ };
187
275
  });
276
+ return ref.proxy;
188
277
  }
189
- var getServerSnapshot = function () {
190
- return initState;
278
+ var incReducer = function (c) {
279
+ return c + 1;
191
280
  };
192
281
  var disableMediaTouch = false;
193
282
  function _disableMediaTouch(val) {
@@ -1 +1 @@
1
- {"version":3,"names":["isServer","isWeb","useRef","useSyncExternalStore","getSetting","resetMediaStyleCache","matchMedia","mediaObjectToString","getMedia","mediaKeys","mediaQueryConfig","setMediaState","defaultMediaImportance","mediaKeyRegex","isMediaKey","key","has","test","getMediaKey","match","initState","mediaKeysOrdered","getMediaKeyImportance","process","env","NODE_ENV","Error","indexOf","dispose","Set","mediaVersion","configureMedia","config","media","mediaQueryDefaultActive","add","Object","assign","keys","setupMediaListeners","unlisten","forEach","cb","clear","setupVersion","_loop","key2","str","getMatch","addListener","update","removeListener","next","matches","updateMediaListeners","IS_STATIC","listeners","States","WeakMap","setMediaShouldUpdate","ref","enabled","cur","get","set","subscribe","subscriber","delete","useMedia","componentContext","debug","componentState","internalRef","current","lastState","pendingState","size","state","curKeys","ms","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_iterator","Symbol","iterator","_step","done","value","console","warn","mediaEmit","err","return","getServerSnapshot","Proxy","_","disableMediaTouch","Reflect","_disableMediaTouch","val","getMediaState","mediaGroups","layout","res","fromEntries","map","mediaKey","mediaKeyMatch"],"sources":["../../../src/hooks/useMedia.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isServer","isWeb","useEffect","useReducer","useRef","getSetting","resetMediaStyleCache","matchMedia","mediaObjectToString","getMedia","mediaKeys","mediaQueryConfig","setMediaState","defaultMediaImportance","mediaKeyRegex","isMediaKey","key","has","test","getMediaKey","match","initState","mediaKeysOrdered","getMediaKeyImportance","process","env","NODE_ENV","Error","indexOf","dispose","Set","mediaVersion","configureMedia","config","media","mediaQueryDefaultActive","resetMediaTouchTracker","add","Object","assign","keys","setupMediaListeners","unlisten","forEach","cb","clear","setupVersion","_loop","key2","str","getMatch","addListener","update","removeListener","next","matches","updateMediaListeners","IS_STATIC","listeners","States","WeakMap","touchTrackerProto","refSlot","Symbol","buildTouchTrackerProto","proto","_iteratorNormalCompletion","_didIteratorError","_iteratorError","fullKey","_step","value","slice","enumerable","configurable","get","slot","disableMediaTouch","proxyTarget","_iterator","iterator","done","err","return","create","getTouchTrackerProto","setMediaShouldUpdate","ref","enabled","cur","set","subscribe","subscriber","delete","useMedia","componentContext","debug","internalRef","current","initial","r","lastState","renderVersion","proxy","getSnapshot","tracker","_States_get","curKeys","pendingState","size","ms","_r_componentContext","console","warn","mediaEmit","forceUpdate","incReducer","state","shouldSubscribe","unsubscribe"],"sources":["../../../src/hooks/useMedia.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
@@ -9,12 +9,25 @@ const useTheme = () => {
9
9
  const res = theme;
10
10
  return res;
11
11
  };
12
- const useThemeWithState = (props, isRoot = false) => {
12
+ const useThemeWithState = (props, isRoot = false, forThemeView = false) => {
13
13
  "use no memo";
14
14
 
15
- const keys = useRef(null);
16
- const schemeKeys = useRef(null);
17
- const themeState = useThemeState(props, isRoot, keys, schemeKeys);
15
+ const bag = useRef(null);
16
+ if (!bag.current) {
17
+ bag.current = {
18
+ keys: {
19
+ current: null
20
+ },
21
+ schemeKeys: {
22
+ current: null
23
+ }
24
+ };
25
+ }
26
+ const {
27
+ keys,
28
+ schemeKeys
29
+ } = bag.current;
30
+ const themeState = useThemeState(props, isRoot, keys, schemeKeys, forThemeView);
18
31
  if (process.env.NODE_ENV === "development") {
19
32
  if (!props.passThrough && !themeState?.theme) {
20
33
  if (process.env.TAMAGUI_DISABLE_NO_THEME_WARNING !== "1") {
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","TAMAGUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAEvB,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,MAAMC,KAAA,GAAQ,CAAC;AAER,MAAMC,QAAA,GAAWA,CAAA,KAAM;EAC5B;;EAEA,MAAM,CAACC,KAAK,IAAIC,iBAAA,CAAkBH,KAAK;EACvC,MAAMI,GAAA,GAAMF,KAAA;EACZ,OAAOE,GAAA;AACT;AAOO,MAAMD,iBAAA,GAAoBA,CAC/BE,KAAA,EACAC,MAAA,GAAS,UACU;EACnB;;EAEA,MAAMC,IAAA,GAAOV,MAAA,CAA2B,IAAI;EAC5C,MAAMW,UAAA,GAAaX,MAAA,CAA2B,IAAI;EAClD,MAAMY,UAAA,GAAaV,aAAA,CAAcM,KAAA,EAAOC,MAAA,EAAQC,IAAA,EAAMC,UAAU;EAEhE,IAAIE,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;IAC1C,IAAI,CAACP,KAAA,CAAMQ,WAAA,IAAe,CAACJ,UAAA,EAAYP,KAAA,EAAO;MAC5C,IAAIQ,OAAA,CAAQC,GAAA,CAAIG,gCAAA,KAAqC,KAAK;QACxDC,OAAA,CAAQC,KAAA,CACN,2FAA2FC,IAAA,CAAKC,SAAA,CAC9Fb,KACF,CAAC;AAAA;AAAA,sKACH;MACF;IACF;EACF;EAEA,MAAMc,YAAA,GAAed,KAAA,CAAMQ,WAAA,GACvB,CAAC,IACDf,eAAA,CAAgBO,KAAA,EAAOI,UAAA,EAAYF,IAAA,EAAMC,UAAU;EAEvD,OAAO,CAACW,YAAA,EAAcV,UAAU;AAClC","ignoreList":[]}
1
+ {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","forThemeView","bag","current","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","TAMAGUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAqC;AAE9C,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,MAAMC,KAAA,GAAQ,CAAC;AAOR,MAAMC,QAAA,GAAWA,CAAA,KAAM;EAC5B;;EAEA,MAAM,CAACC,KAAK,IAAIC,iBAAA,CAAkBH,KAAK;EACvC,MAAMI,GAAA,GAAMF,KAAA;EACZ,OAAOE,GAAA;AACT;AAOO,MAAMD,iBAAA,GAAoBA,CAC/BE,KAAA,EACAC,MAAA,GAAS,OAQTC,YAAA,GAAe,UACI;EACnB;;EAKA,MAAMC,GAAA,GAAMX,MAAA,CAAuB,IAAI;EACvC,IAAI,CAACW,GAAA,CAAIC,OAAA,EAAS;IAChBD,GAAA,CAAIC,OAAA,GAAU;MACZC,IAAA,EAAM;QAAED,OAAA,EAAS;MAAK;MACtBE,UAAA,EAAY;QAAEF,OAAA,EAAS;MAAK;IAC9B;EACF;EACA,MAAM;IAAEC,IAAA;IAAMC;EAAW,IAAIH,GAAA,CAAIC,OAAA;EACjC,MAAMG,UAAA,GAAab,aAAA,CAAcM,KAAA,EAAOC,MAAA,EAAQI,IAAA,EAAMC,UAAA,EAAYJ,YAAY;EAE9E,IAAIM,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,eAAe;IAC1C,IAAI,CAACV,KAAA,CAAMW,WAAA,IAAe,CAACJ,UAAA,EAAYV,KAAA,EAAO;MAC5C,IAAIW,OAAA,CAAQC,GAAA,CAAIG,gCAAA,KAAqC,KAAK;QACxDC,OAAA,CAAQC,KAAA,CACN,2FAA2FC,IAAA,CAAKC,SAAA,CAC9FhB,KACF,CAAC;AAAA;AAAA,sKACH;MACF;IACF;EACF;EAEA,MAAMiB,YAAA,GAAejB,KAAA,CAAMW,WAAA,GACvB,CAAC,IACDlB,eAAA,CAAgBO,KAAA,EAAOO,UAAA,EAAYF,IAAA,EAAMC,UAAU;EAEvD,OAAO,CAACW,YAAA,EAAcV,UAAU;AAClC","ignoreList":[]}
@@ -12,10 +12,24 @@ var useTheme = function () {
12
12
  var useThemeWithState = function (props) {
13
13
  "use no memo";
14
14
 
15
- var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
16
- var keys = useRef(null);
17
- var schemeKeys = useRef(null);
18
- var themeState = useThemeState(props, isRoot, keys, schemeKeys);
15
+ var isRoot = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false,
16
+ forThemeView = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
17
+ var bag = useRef(null);
18
+ if (!bag.current) {
19
+ bag.current = {
20
+ keys: {
21
+ current: null
22
+ },
23
+ schemeKeys: {
24
+ current: null
25
+ }
26
+ };
27
+ }
28
+ var {
29
+ keys,
30
+ schemeKeys
31
+ } = bag.current;
32
+ var themeState = useThemeState(props, isRoot, keys, schemeKeys, forThemeView);
19
33
  if (process.env.NODE_ENV === "development") {
20
34
  if (!props.passThrough && !(themeState === null || themeState === void 0 ? void 0 : themeState.theme)) {
21
35
  if (process.env.TAMAGUI_DISABLE_NO_THEME_WARNING !== "1") {
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","arguments","length","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","TAMAGUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAc;AAEvB,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,IAAAC,KAAM,KAAQ;AAEP,IAAAC,QAAM,YAAAA,CAAA,EAAiB;EAC5B;;EAEA,KAAAC,KAAO,IAAKC,iBAAI,CAAAH,KAAkB;EAClC,IAAAI,GAAM,GAAAF,KAAM;EACZ,OAAOE,GAAA;AACT;AAOO,IAAAD,iBAAM,YAAAA,CACXE,KACA;EAEA;;EAEA,IAAAC,MAAM,GAAOC,SAA2B,CAAAC,MAAI,QAAAD,SAAA,iBAAAA,SAAA;EAC5C,IAAAE,IAAM,GAAAZ,MAAA,KAAa;EACnB,IAAAa,UAAM,GAAAb,MAAa;EAEnB,IAAIc,UAAQ,GAAIZ,aAAa,CAAAM,KAAA,EAAAC,MAAe,EAAAG,IAAA,EAAAC,UAAA;EAC1C,IAAAE,OAAK,CAAAC,GAAM,CAAAC,QAAA,KAAgB,aAAY;IACrC,KAAAT,KAAI,CAAAU,WAAY,MAAAJ,UAAA,aAAAA,UAA0C,uBAAAA,UAAA,CAAAT,KAAA;MACxD,IAAAU,OAAQ,CAAAC,GAAA,CAAAG,gCAAA;QAAAC,OACN,CAAAC,KAAA,4FAAgGC,IAAA,CAAAC,SAAA,CAAAf,KAAA;AAAA;AAC9F,sKACD;MAAA;IAAA;EAAA;EACH,IACFgB,YAAA,GAAAhB,KAAA,CAAAU,WAAA,QAAAjB,eAAA,CAAAO,KAAA,EAAAM,UAAA,EAAAF,IAAA,EAAAC,UAAA;EAAA,OACF,CACFW,YAAA,EAEAV,UAAM,CAIN;AACF","ignoreList":[]}
1
+ {"version":3,"names":["useRef","getThemeProxied","useThemeState","EMPTY","useTheme","theme","useThemeWithState","res","props","isRoot","arguments","length","forThemeView","bag","current","keys","schemeKeys","themeState","process","env","NODE_ENV","passThrough","TAMAGUI_DISABLE_NO_THEME_WARNING","console","error","JSON","stringify","themeProxied"],"sources":["../../../src/hooks/useTheme.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,MAAA,QAAqC;AAE9C,SAASC,eAAA,QAA0C;AACnD,SAASC,aAAA,QAAqB;AAE9B,IAAAC,KAAM,KAAQ;AAOP,IAAAC,QAAM,YAAAA,CAAA,EAAiB;EAC5B;;EAEA,KAAAC,KAAO,IAAKC,iBAAI,CAAAH,KAAkB;EAClC,IAAAI,GAAM,GAAAF,KAAM;EACZ,OAAOE,GAAA;AACT;AAOO,IAAAD,iBAAM,YAAAA,CACXE,KACA;EAUA;;EAKA,IAAAC,MAAM,GAAMC,SAAuB,CAAIC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;IAAAE,YAAA,GAAAF,SAAA,CAAAC,MAAA,QAAAD,SAAA,iBAAAA,SAAA;EACvC,IAAIG,GAAC,GAAIb,MAAA,KAAS;EAChB,KAAAa,GAAI,CAAAC,OAAU;IAAAD,GACZ,CAAAC,OAAQ;MACRC,IAAA;QACFD,OAAA;MACF;MACAE,UAAc;QACRF,OAAA;MAEF;IACF;EACE;EACE;IAAAC,IAAA;IAAAC;EAAQ,IAAAH,GAAA,CAAAC,OAAA;EAAA,IAAAG,UACN,GAAAf,aAAA,CAAAM,KAAA,EAAAC,MAAA,EAAAM,IAAA,EAAAC,UAAA,EAAAJ,YAAA;EAAgG,IAAAM,OAC9F,CAAAC,GAAA,CAAAC,QAAA;IAAA,KAAAZ,KACD,CAAAa,WAAA,MAAAJ,UAAA,aAAAA,UAAA,uBAAAA,UAAA,CAAAZ,KAAA;MAAA,IAAAa,OAAA,CAAAC,GAAA,CAAAG,gCAAA;QAAAC,OAAA,CAAAC,KAAA,4FAAAC,IAAA,CAAAC,SAAA,CAAAlB,KAAA;AAAA;AACH,sKACF;MACF;IACF;EAEA;EAIA,IAAAmB,YAAQ,GAAAnB,KAAc,CAAAa,WAAU,QAAApB,eAAA,CAAAO,KAAA,EAAAS,UAAA,EAAAF,IAAA,EAAAC,UAAA;EAClC,Q","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import { useIsomorphicLayoutEffect } from "@tamagui/constants";
2
- import { createContext, useCallback, useContext, useId, useSyncExternalStore } from "react";
2
+ import { createContext, useContext, useEffect, useId, useReducer, useRef } from "react";
3
3
  import { getConfig } from "../config.mjs";
4
4
  import { MISSING_THEME_MESSAGE } from "../constants/constants.mjs";
5
5
  const ThemeStateContext = createContext("");
@@ -24,7 +24,8 @@ let themeNameCacheVer = -1;
24
24
  let themes = null;
25
25
  let rootThemeState = null;
26
26
  const getRootThemeState = () => rootThemeState;
27
- const useThemeState = (props, isRoot = false, keys, schemeKeys) => {
27
+ const incReducer = c => c + 1;
28
+ const useThemeState = (props, isRoot = false, keys, schemeKeys, cascadeOnChange = false) => {
28
29
  "use no memo";
29
30
 
30
31
  const {
@@ -40,69 +41,68 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
40
41
  theme: getConfig().themes.light
41
42
  };
42
43
  const id = useId();
43
- const subscribe = useCallback(cb => {
44
- listenersByParent[parentId] = listenersByParent[parentId] || /* @__PURE__ */new Set();
45
- listenersByParent[parentId].add(id);
46
- allListeners.set(id, () => {
47
- PendingUpdate.set(id, shouldForce ? "force" : true);
48
- cb();
49
- });
50
- return () => {
51
- allListeners.delete(id);
52
- listenersByParent[parentId].delete(id);
53
- localStates.delete(id);
54
- states.delete(id);
55
- PendingUpdate.delete(id);
56
- };
57
- }, [id, parentId]);
58
44
  const propsKey = getPropsKey(props);
59
- const getSnapshot = () => {
60
- let local = localStates.get(id);
61
- const parentState = states.get(parentId);
62
- if (local && !PendingUpdate.has(id)) {
63
- if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
64
- }
65
- const isSchemeOnlyChange = false;
66
- const keysSize = keys?.current?.size ?? 0;
67
- const allKeysSchemeOptimized = (schemeKeys?.current?.size ?? 0) === keysSize && keysSize > 0;
68
- const canSkipForSchemeChange = isSchemeOnlyChange;
69
- const needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : keys?.current?.size ? true : props.needsUpdate?.();
70
- const [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
71
- PendingUpdate.delete(id);
72
- if (!local || rerender) {
73
- local = {
74
- ...next
75
- };
76
- localStates.set(id, local);
77
- }
78
- if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
79
- console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
80
- console.info({
81
- props,
82
- propsKey,
83
- isRoot,
84
- parentId,
85
- local,
86
- next,
87
- needsUpdate,
88
- isSchemeOnlyChange,
89
- allKeysSchemeOptimized,
90
- canSkipForSchemeChange
91
- });
92
- console.groupEnd();
93
- }
94
- if (next !== local) {
95
- Object.assign(local, next);
96
- local.id = id;
97
- }
98
- local._parentName = parentState?.name;
99
- local._propsKey = propsKey;
100
- states.set(id, next);
101
- return local;
102
- };
45
+ const ref = useRef(null);
46
+ if (!ref.current) ref.current = {
47
+ id,
48
+ parentId,
49
+ props,
50
+ propsKey,
51
+ isRoot,
52
+ keys,
53
+ schemeKeys,
54
+ renderVersion: 0
55
+ };else {
56
+ ref.current.props = props;
57
+ ref.current.propsKey = propsKey;
58
+ ref.current.isRoot = isRoot;
59
+ ref.current.keys = keys;
60
+ ref.current.schemeKeys = schemeKeys;
61
+ ref.current.parentId = parentId;
62
+ }
63
+ ref.current.renderVersion++;
103
64
  if (process.env.NODE_ENV === "development" && globalThis.time) globalThis.time`theme-prep-uses`;
104
- const state = useSyncExternalStore(subscribe, getSnapshot, getSnapshot);
105
- useIsomorphicLayoutEffect(() => {
65
+ const [, forceUpdate] = useReducer(incReducer, 0);
66
+ const state = getSnapshotImpl(ref.current);
67
+ ref.current.lastSnap = state;
68
+ useEffect(() => {
69
+ const r = ref.current;
70
+ const renderVersion = r.renderVersion;
71
+ if (r.unsubscribe && r.subscribedParentId !== r.parentId) cleanupThemeSubscription(r);
72
+ if (shouldSubscribeToTheme(r, cascadeOnChange)) {
73
+ if (!r.unsubscribe) {
74
+ const pid = r.parentId;
75
+ const sid = r.id;
76
+ const cb = () => {
77
+ const next = getSnapshotImpl(r);
78
+ if (next !== r.lastSnap) {
79
+ r.lastSnap = next;
80
+ forceUpdate();
81
+ }
82
+ };
83
+ listenersByParent[pid] = listenersByParent[pid] || /* @__PURE__ */new Set();
84
+ listenersByParent[pid].add(sid);
85
+ allListeners.set(sid, () => {
86
+ PendingUpdate.set(sid, shouldForce ? "force" : true);
87
+ cb();
88
+ });
89
+ r.subscribedParentId = pid;
90
+ r.unsubscribe = () => {
91
+ allListeners.delete(sid);
92
+ listenersByParent[pid]?.delete(sid);
93
+ localStates.delete(sid);
94
+ states.delete(sid);
95
+ PendingUpdate.delete(sid);
96
+ r.unsubscribe = void 0;
97
+ r.subscribedParentId = void 0;
98
+ };
99
+ }
100
+ } else if (r.unsubscribe) cleanupThemeSubscription(r);
101
+ return () => {
102
+ if (r.renderVersion === renderVersion) cleanupThemeState(r);
103
+ };
104
+ });
105
+ if (cascadeOnChange) useIsomorphicLayoutEffect(() => {
106
106
  if (!HasRenderedOnce.get(keys)) {
107
107
  HasRenderedOnce.set(keys, true);
108
108
  return;
@@ -118,6 +118,70 @@ Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? `
118
118
  }, [keys, propsKey]);
119
119
  return state;
120
120
  };
121
+ const shouldSubscribeToTheme = (r, cascadeOnChange) => r.isRoot || cascadeOnChange || hasThemeUpdatingProps(r.props) || !!r.keys.current?.size || !!r.props.needsUpdate?.();
122
+ function cleanupThemeSubscription(r) {
123
+ r.unsubscribe?.();
124
+ }
125
+ function cleanupThemeState(r) {
126
+ if (r.unsubscribe) cleanupThemeSubscription(r);else {
127
+ localStates.delete(r.id);
128
+ states.delete(r.id);
129
+ PendingUpdate.delete(r.id);
130
+ }
131
+ }
132
+ const getSnapshotImpl = r => {
133
+ const {
134
+ id,
135
+ parentId,
136
+ props,
137
+ propsKey,
138
+ isRoot,
139
+ keys,
140
+ schemeKeys
141
+ } = r;
142
+ let local = localStates.get(id);
143
+ const parentState = states.get(parentId);
144
+ if (local && !PendingUpdate.has(id)) {
145
+ if (parentState && local._parentName === parentState.name && local._propsKey === propsKey) return local;
146
+ }
147
+ const isSchemeOnlyChange = false;
148
+ const keysSize = keys?.current?.size ?? 0;
149
+ const allKeysSchemeOptimized = (schemeKeys?.current?.size ?? 0) === keysSize && keysSize > 0;
150
+ const canSkipForSchemeChange = isSchemeOnlyChange;
151
+ const needsUpdate = props.passThrough ? false : isRoot || props.name === "light" || props.name === "dark" || props.name === null ? true : !HasRenderedOnce.get(keys) ? true : keys?.current?.size ? true : props.needsUpdate?.();
152
+ const [rerender, next] = getNextState(local, props, propsKey, isRoot, id, parentId, needsUpdate, PendingUpdate.get(id));
153
+ PendingUpdate.delete(id);
154
+ if (!local || rerender) {
155
+ local = {
156
+ ...next
157
+ };
158
+ localStates.set(id, local);
159
+ }
160
+ if (process.env.NODE_ENV === "development" && props.debug === "verbose") {
161
+ console.groupCollapsed(` ${id} getSnapshot ${rerender}`, local.name, ">", next.name);
162
+ console.info({
163
+ props,
164
+ propsKey,
165
+ isRoot,
166
+ parentId,
167
+ local,
168
+ next,
169
+ needsUpdate,
170
+ isSchemeOnlyChange,
171
+ allKeysSchemeOptimized,
172
+ canSkipForSchemeChange
173
+ });
174
+ console.groupEnd();
175
+ }
176
+ if (next !== local) {
177
+ Object.assign(local, next);
178
+ local.id = id;
179
+ }
180
+ local._parentName = parentState?.name;
181
+ local._propsKey = propsKey;
182
+ states.set(id, next);
183
+ return local;
184
+ };
121
185
  const getNextState = (lastState, props, propsKey, isRoot = false, id, parentId, needsUpdate, pendingUpdate) => {
122
186
  const {
123
187
  debug
@@ -152,12 +216,13 @@ const getNextState = (lastState, props, propsKey, isRoot = false, id, parentId,
152
216
  }];
153
217
  }
154
218
  if (!name) {
155
- const next = lastState ?? parentState;
156
- if (!next) throw new Error(process.env.NODE_ENV === "development" ? `${MISSING_THEME_MESSAGE}
157
-
158
- Looked for theme${props.name ? ` "${props.name}"` : ""}${props.componentName ? ` (component: ${props.componentName})` : ""}, but no theme state was resolved (parentId: ${parentId}, id: ${id}).` : MISSING_THEME_MESSAGE);
219
+ const next = lastState ?? parentState ?? rootThemeState ?? {
220
+ id,
221
+ name: "light",
222
+ theme: getConfig().themes.light
223
+ };
159
224
  if (shouldRerender) return [true, {
160
- ...(parentState || lastState)
225
+ ...(parentState || lastState || next)
161
226
  }];
162
227
  return [false, next];
163
228
  }