tamagui 1.84.1 → 1.84.2

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.
@@ -3761,10 +3761,10 @@ var require_ThemeManagerContext_native = __commonJS({
3761
3761
  return to;
3762
3762
  }, __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: !0 }), mod), ThemeManagerContext_exports = {};
3763
3763
  __export2(ThemeManagerContext_exports, {
3764
- ThemeManagerContext: () => ThemeManagerContext
3764
+ ThemeManagerIDContext: () => ThemeManagerIDContext
3765
3765
  });
3766
3766
  module2.exports = __toCommonJS2(ThemeManagerContext_exports);
3767
- var import_react2 = require("react"), ThemeManagerContext = (0, import_react2.createContext)(null);
3767
+ var import_react2 = require("react"), ThemeManagerIDContext = (0, import_react2.createContext)(1);
3768
3768
  }
3769
3769
  });
3770
3770
 
@@ -3793,7 +3793,7 @@ var require_ThemeManager_native = __commonJS({
3793
3793
  }
3794
3794
  var uid = 0, ThemeManager = class {
3795
3795
  constructor(props = {}, parentManager) {
3796
- if (this.props = props, this.id = uid++, this.themeListeners = /* @__PURE__ */ new Set(), this.parentManager = null, this.state = emptyState, this._allKeys = null, parentManager === "root") {
3796
+ if (this.props = props, this.id = 0, this.themeListeners = /* @__PURE__ */ new Set(), this.parentManager = null, this.state = emptyState, this._allKeys = null, uid = (uid + 1) % Number.MAX_VALUE, this.id = uid, parentManager === "root") {
3797
3797
  this.updateStateFromProps(props, !1);
3798
3798
  return;
3799
3799
  }
@@ -3936,6 +3936,7 @@ var require_useTheme_native = __commonJS({
3936
3936
  }, __toCommonJS2 = (mod) => __copyProps2(__defProp2({}, "__esModule", { value: !0 }), mod), useTheme_exports = {};
3937
3937
  __export2(useTheme_exports, {
3938
3938
  activeThemeManagers: () => activeThemeManagers,
3939
+ getThemeManager: () => getThemeManager,
3939
3940
  getThemeProxied: () => getThemeProxied,
3940
3941
  useChangeThemeEffect: () => useChangeThemeEffect,
3941
3942
  useTheme: () => useTheme4,
@@ -3961,9 +3962,7 @@ var require_useTheme_native = __commonJS({
3961
3962
  var _a, _b;
3962
3963
  return ((_a = props.shouldUpdate) == null ? void 0 : _a.call(props)) ?? (keys.current.length > 0 ? !0 : void 0);
3963
3964
  }
3964
- ), { themeManager, state } = changedThemeState;
3965
- state != null && state.theme;
3966
- let themeProxied = (0, import_react2.useMemo)(() => !themeManager || !(state != null && state.theme) ? {} : getThemeProxied(state, props.deopt, themeManager, keys.current, props.debug), [state == null ? void 0 : state.theme, themeManager, props.deopt, props.debug]);
3965
+ ), { themeManager, state } = changedThemeState, themeProxied = (0, import_react2.useMemo)(() => !themeManager || !(state != null && state.theme) ? {} : getThemeProxied(state, props.deopt, themeManager, keys.current, props.debug), [state == null ? void 0 : state.theme, themeManager, props.deopt, props.debug]);
3967
3966
  return [changedThemeState, themeProxied];
3968
3967
  };
3969
3968
  function getThemeProxied({ theme, name, scheme }, deopt = !1, themeManager, keys, debug) {
@@ -4033,8 +4032,13 @@ var require_useTheme_native = __commonJS({
4033
4032
  }
4034
4033
  return !1;
4035
4034
  }
4036
- var activeThemeManagers = /* @__PURE__ */ new Set(), useChangeThemeEffect = (props, isRoot = !1, keys, shouldUpdate) => {
4037
- let { disable } = props, parentManager = (0, import_react2.useContext)(import_ThemeManagerContext.ThemeManagerContext);
4035
+ var activeThemeManagers = /* @__PURE__ */ new Set(), _uidToManager = /* @__PURE__ */ new WeakMap(), _idToUID = {}, getId = (id) => _idToUID[id], getThemeManager = (id) => _uidToManager.get(getId(id)), registerThemeManager = (t) => {
4036
+ if (!_idToUID[t.id]) {
4037
+ let id = _idToUID[t.id] = {};
4038
+ _uidToManager.set(id, t);
4039
+ }
4040
+ }, useChangeThemeEffect = (props, isRoot = !1, keys, shouldUpdate) => {
4041
+ let { disable } = props, parentManagerId = (0, import_react2.useContext)(import_ThemeManagerContext.ThemeManagerIDContext), parentManager = getThemeManager(parentManagerId);
4038
4042
  if (!isRoot && !parentManager || disable)
4039
4043
  return {
4040
4044
  isNewTheme: !1,
@@ -4060,7 +4064,7 @@ var require_useTheme_native = __commonJS({
4060
4064
  }));
4061
4065
  return;
4062
4066
  }
4063
- isNewTheme && themeManager && activeThemeManagers.add(themeManager), (isNewTheme || getShouldUpdateTheme(themeManager)) && setThemeState(createState);
4067
+ (isNewTheme || getShouldUpdateTheme(themeManager)) && (activeThemeManagers.add(themeManager), setThemeState(createState));
4064
4068
  let selfListenerDispose = themeManager.onChangeTheme((_a, _b, forced) => {
4065
4069
  forced && setThemeState((prev) => createState(prev, !0));
4066
4070
  }), disposeChangeListener = parentManager == null ? void 0 : parentManager.onChangeTheme(
@@ -4071,7 +4075,7 @@ var require_useTheme_native = __commonJS({
4071
4075
  themeManager.id
4072
4076
  );
4073
4077
  return () => {
4074
- selfListenerDispose(), disposeChangeListener == null || disposeChangeListener(), activeThemeManagers.delete(themeManager);
4078
+ selfListenerDispose(), disposeChangeListener == null || disposeChangeListener(), isNewTheme && activeThemeManagers.delete(themeManager);
4075
4079
  };
4076
4080
  }, [
4077
4081
  themeManager,
@@ -4117,14 +4121,16 @@ var require_useTheme_native = __commonJS({
4117
4121
  } else
4118
4122
  themeManager2 = getNewThemeManager(), state2 = { ...themeManager2.state };
4119
4123
  }
4120
- let isNewTheme2 = !!(themeManager2 !== parentManager || props.inverse), mounted2 = props.inverse ? isRoot || (prev == null ? void 0 : prev.mounted) : !0;
4124
+ let isNewTheme2 = !!(themeManager2 !== parentManager || props.inverse);
4125
+ isNewTheme2 && registerThemeManager(themeManager2);
4126
+ let mounted2 = props.inverse ? isRoot || (prev == null ? void 0 : prev.mounted) : !0;
4121
4127
  state2 || (isNewTheme2 ? state2 = themeManager2.state : (state2 = parentManager.state, themeManager2 = parentManager));
4122
4128
  let wasInversed = prev == null ? void 0 : prev.inversed, inversed2 = isNewTheme2 && state2.scheme !== (parentManager == null ? void 0 : parentManager.state.scheme) ? !0 : wasInversed != null ? !1 : null, response = {
4123
4129
  themeManager: themeManager2,
4124
4130
  isNewTheme: isNewTheme2,
4125
4131
  mounted: mounted2,
4126
4132
  inversed: inversed2
4127
- }, shouldReturnPrev = !force && prev && // isEqualShallow uses the second arg as the keys so this should compare without state first...
4133
+ }, shouldReturnPrev = prev && !force && // isEqualShallow uses the second arg as the keys so this should compare without state first...
4128
4134
  (0, import_createShallowSetState.isEqualShallow)(prev, response) && // ... and then compare just the state, because we make a new state obj but is likely the same
4129
4135
  (0, import_createShallowSetState.isEqualShallow)(prev.state, state2);
4130
4136
  return prev && shouldReturnPrev ? prev : (response.state = state2, response);
@@ -4205,7 +4211,7 @@ var require_Theme_native = __commonJS({
4205
4211
  function getThemedChildren(themeState, children, props, isRoot = !1) {
4206
4212
  let { themeManager, isNewTheme } = themeState;
4207
4213
  if (!themeManager)
4208
- throw "\u274C";
4214
+ throw new Error("\u274C");
4209
4215
  let { shallow, forceClassName } = props, hasEverThemed = (0, import_react2.useRef)(!1), shouldRenderChildrenWithTheme = isNewTheme || props.inverse || hasEverThemed.current || forceClassName || isRoot;
4210
4216
  if (shouldRenderChildrenWithTheme && (hasEverThemed.current = !0), !shouldRenderChildrenWithTheme)
4211
4217
  return children;
@@ -4215,7 +4221,7 @@ var require_Theme_native = __commonJS({
4215
4221
  void 0,
4216
4222
  /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Theme2, { name: themeManager.state.parentName, children: child.props.children })
4217
4223
  ) : child));
4218
- let elementsWithContext = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_ThemeManagerContext.ThemeManagerContext.Provider, { value: themeManager, children: next });
4224
+ let elementsWithContext = /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_ThemeManagerContext.ThemeManagerIDContext.Provider, { value: themeManager.id, children: next });
4219
4225
  return forceClassName === !1 ? elementsWithContext : import_constants4.isWeb ? wrapThemeElements({
4220
4226
  children: elementsWithContext,
4221
4227
  themeState,
@@ -5757,9 +5763,9 @@ var require_useThemeName_native = __commonJS({
5757
5763
  useThemeName: () => useThemeName2
5758
5764
  });
5759
5765
  module2.exports = __toCommonJS2(useThemeName_exports);
5760
- var import_constants4 = require_index_native(), import_react2 = require("react"), import_ThemeManagerContext = require_ThemeManagerContext_native();
5766
+ var import_constants4 = require_index_native(), import_react2 = require("react"), import_ThemeManagerContext = require_ThemeManagerContext_native(), import_useTheme = require_useTheme_native();
5761
5767
  function useThemeName2(opts) {
5762
- let manager = (0, import_react2.useContext)(import_ThemeManagerContext.ThemeManagerContext), [name, setName] = (0, import_react2.useState)((manager == null ? void 0 : manager.state.name) || "");
5768
+ let manager = (0, import_useTheme.getThemeManager)((0, import_react2.useContext)(import_ThemeManagerContext.ThemeManagerIDContext)), [name, setName] = (0, import_react2.useState)((manager == null ? void 0 : manager.state.name) || "");
5763
5769
  return (0, import_constants4.useIsomorphicLayoutEffect)(() => {
5764
5770
  if (manager)
5765
5771
  return setName(manager.state.name), manager.onChangeTheme((next, manager2) => {