@tamagui/use-store 1.61.3 → 1.62.1

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 (55) hide show
  1. package/dist/cjs/comparators.js +12 -18
  2. package/dist/cjs/comparators.js.map +1 -1
  3. package/dist/cjs/comparators.native.js +40 -0
  4. package/dist/cjs/comparators.native.js.map +6 -0
  5. package/dist/cjs/configureUseStore.js +5 -9
  6. package/dist/cjs/configureUseStore.js.map +1 -1
  7. package/dist/cjs/configureUseStore.native.js +31 -0
  8. package/dist/cjs/configureUseStore.native.js.map +6 -0
  9. package/dist/cjs/constants.js +7 -12
  10. package/dist/cjs/constants.js.map +1 -1
  11. package/dist/cjs/constants.native.js +31 -0
  12. package/dist/cjs/constants.native.js.map +6 -0
  13. package/dist/cjs/decorators.js +6 -11
  14. package/dist/cjs/decorators.js.map +1 -1
  15. package/dist/cjs/decorators.native.js +30 -0
  16. package/dist/cjs/decorators.native.js.map +6 -0
  17. package/dist/cjs/helpers.js +13 -29
  18. package/dist/cjs/helpers.js.map +1 -1
  19. package/dist/cjs/helpers.native.js +66 -0
  20. package/dist/cjs/helpers.native.js.map +6 -0
  21. package/dist/cjs/index.js +6 -11
  22. package/dist/cjs/index.js.map +1 -1
  23. package/dist/cjs/index.native.js +46 -0
  24. package/dist/cjs/index.native.js.map +6 -0
  25. package/dist/cjs/interfaces.js +3 -6
  26. package/dist/cjs/interfaces.js.map +1 -1
  27. package/dist/cjs/interfaces.native.js +15 -0
  28. package/dist/cjs/interfaces.native.js.map +6 -0
  29. package/dist/cjs/observe.js +35 -92
  30. package/dist/cjs/observe.js.map +1 -1
  31. package/dist/cjs/observe.native.js +103 -0
  32. package/dist/cjs/observe.native.js.map +6 -0
  33. package/dist/cjs/useStore.js +114 -318
  34. package/dist/cjs/useStore.js.map +2 -2
  35. package/dist/cjs/useStore.native.js +350 -0
  36. package/dist/cjs/useStore.native.js.map +6 -0
  37. package/dist/cjs/useStoreDebug.js +14 -33
  38. package/dist/cjs/useStoreDebug.js.map +1 -1
  39. package/dist/cjs/useStoreDebug.native.js +55 -0
  40. package/dist/cjs/useStoreDebug.native.js.map +6 -0
  41. package/dist/esm/comparators.js +7 -9
  42. package/dist/esm/comparators.js.map +1 -1
  43. package/dist/esm/constants.js +2 -3
  44. package/dist/esm/constants.js.map +1 -1
  45. package/dist/esm/decorators.js +1 -2
  46. package/dist/esm/decorators.js.map +1 -1
  47. package/dist/esm/helpers.js +7 -18
  48. package/dist/esm/helpers.js.map +1 -1
  49. package/dist/esm/observe.js +29 -79
  50. package/dist/esm/observe.js.map +1 -1
  51. package/dist/esm/useStore.js +108 -303
  52. package/dist/esm/useStore.js.map +2 -2
  53. package/dist/esm/useStoreDebug.js +7 -20
  54. package/dist/esm/useStoreDebug.js.map +1 -1
  55. package/package.json +4 -4
@@ -1,17 +1,14 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
5
  var __copyProps = (to, from, except, desc) => {
7
- if (from && typeof from === "object" || typeof from === "function") {
6
+ if (from && typeof from == "object" || typeof from == "function")
8
7
  for (let key of __getOwnPropNames(from))
9
- if (!__hasOwnProp.call(to, key) && key !== except)
10
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
- }
8
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
9
  return to;
13
10
  };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
11
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
12
  var interfaces_exports = {};
16
13
  module.exports = __toCommonJS(interfaces_exports);
17
14
  //# sourceMappingURL=interfaces.js.map
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/interfaces.tsx"],
4
- "mappings": ";;;;;;;;;;;;;;AAAA;AAAA;",
4
+ "mappings": ";;;;;;;;;;;AAAA;AAAA;",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,15 @@
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 __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from == "object" || typeof from == "function")
8
+ for (let key of __getOwnPropNames(from))
9
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
10
+ return to;
11
+ };
12
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
13
+ var interfaces_exports = {};
14
+ module.exports = __toCommonJS(interfaces_exports);
15
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/interfaces.tsx"],
4
+ "mappings": ";;;;;;;;;;;;AAAA;AAAA;",
5
+ "names": []
6
+ }
@@ -1,152 +1,95 @@
1
- "use strict";
2
1
  var __defProp = Object.defineProperty;
3
2
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
3
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
5
  var __export = (target, all) => {
7
6
  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") {
7
+ __defProp(target, name, { get: all[name], enumerable: !0 });
8
+ }, __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from == "object" || typeof from == "function")
12
10
  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
- }
11
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
16
12
  return to;
17
13
  };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
14
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
19
15
  var observe_exports = {};
20
16
  __export(observe_exports, {
21
17
  observe: () => observe,
22
18
  useObserve: () => useObserve
23
19
  });
24
20
  module.exports = __toCommonJS(observe_exports);
25
- var import_react = require("react");
26
- var import_comparators = require("./comparators");
27
- var import_constants = require("./constants");
28
- var import_useStore = require("./useStore");
21
+ var import_react = require("react"), import_comparators = require("./comparators"), import_constants = require("./constants"), import_useStore = require("./useStore");
29
22
  const logUpdate = process.env.NODE_ENV === "development" ? (fn, stores, last, next) => {
30
- const getStoreLogName = (store) => {
31
- var _a;
32
- const str = store[import_constants.UNWRAP_PROXY] ?? store;
33
- return `${str.constructor.name}${((_a = store.props) == null ? void 0 : _a.id) ? `:${store.props.id}` : ""}`;
34
- };
35
- const storeNames = stores.map(getStoreLogName).join(", ");
36
- const name = `\u{1F311} \u25B6\uFE0F %c${fn.name} ${storeNames} () ${last} => ${next}`;
37
- console.groupCollapsed(name, "color: tomato;");
38
- console.groupCollapsed("trace >");
39
- console.trace();
40
- console.groupEnd();
41
- console.log(" next", next);
42
- console.groupEnd();
23
+ const getStoreLogName = (store) => `${(store[import_constants.UNWRAP_PROXY] ?? store).constructor.name}${store.props?.id ? `:${store.props.id}` : ""}`, storeNames = stores.map(getStoreLogName).join(", "), name = `\u{1F311} \u25B6\uFE0F %c${fn.name} ${storeNames} () ${last} => ${next}`;
24
+ console.groupCollapsed(name, "color: tomato;"), console.groupCollapsed("trace >"), console.trace(), console.groupEnd(), console.log(" next", next), console.groupEnd();
43
25
  } : null;
44
26
  function observe(fn) {
45
- let prev = getObserverValueAndStoresAccessed(fn);
46
- let disposeValue = null;
27
+ let prev = getObserverValueAndStoresAccessed(fn), disposeValue = null;
47
28
  const subscribe = () => {
48
29
  const stores = [...prev.storeInfos];
49
30
  return subscribeToStores(stores, () => {
50
- disposeValue == null ? void 0 : disposeValue();
31
+ disposeValue?.();
51
32
  const next = getObserverValueAndStoresAccessed(fn);
52
- if (typeof next.value === "function") {
53
- disposeValue = next.value;
54
- if (process.env.NODE_ENV === "development") {
55
- logUpdate(fn, [...next.storeInfos], "(fn)", "(fn)");
56
- }
57
- return;
58
- }
59
- if ((0, import_comparators.isEqualSubsetShallow)(prev.storeInfos, next.storeInfos) && (0, import_comparators.isEqualSubsetShallow)(prev.value, next.value)) {
33
+ if (typeof next.value == "function") {
34
+ disposeValue = next.value, process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], "(fn)", "(fn)");
60
35
  return;
61
36
  }
62
- if (process.env.NODE_ENV === "development") {
63
- logUpdate(fn, [...next.storeInfos], prev.value, next.value);
64
- }
65
- prev = next;
66
- dispose();
67
- dispose = subscribe();
37
+ (0, import_comparators.isEqualSubsetShallow)(prev.storeInfos, next.storeInfos) && (0, import_comparators.isEqualSubsetShallow)(prev.value, next.value) || (process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], prev.value, next.value), prev = next, dispose(), dispose = subscribe());
68
38
  });
69
39
  };
70
40
  let dispose = subscribe();
71
41
  return {
72
42
  dispose: () => {
73
- dispose();
74
- disposeValue == null ? void 0 : disposeValue();
43
+ dispose(), disposeValue?.();
75
44
  },
76
45
  getValue: () => prev.value
77
46
  };
78
47
  }
79
48
  function useObserve(fn) {
80
- const [state, setState] = (0, import_react.useState)(() => {
81
- return getObserverValueAndStoresAccessed(fn);
82
- });
83
- (0, import_react.useEffect)(() => {
49
+ const [state, setState] = (0, import_react.useState)(() => getObserverValueAndStoresAccessed(fn));
50
+ return (0, import_react.useEffect)(() => {
84
51
  let dispose;
85
52
  const unsub = subscribeToStores([...state.storeInfos], () => {
86
- dispose == null ? void 0 : dispose();
87
- const next = getObserverValueAndStoresAccessed(fn);
88
- const nextStoreInfos = [...next.storeInfos];
89
- const prevStoreInfos = [...state.storeInfos];
90
- if (typeof next.value === "function") {
91
- if (process.env.NODE_ENV === "development") {
92
- logUpdate(fn, nextStoreInfos, "(fn)", "(fn)");
93
- }
94
- dispose = next.value;
53
+ dispose?.();
54
+ const next = getObserverValueAndStoresAccessed(fn), nextStoreInfos = [...next.storeInfos], prevStoreInfos = [...state.storeInfos];
55
+ if (typeof next.value == "function") {
56
+ process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, "(fn)", "(fn)"), dispose = next.value;
95
57
  return;
96
58
  }
97
- setState((prev) => {
98
- if ((0, import_comparators.isEqualSubsetShallow)(prevStoreInfos, nextStoreInfos) && (0, import_comparators.isEqualSubsetShallow)(prev.value, next.value)) {
99
- return prev;
100
- }
101
- if (process.env.NODE_ENV === "development") {
102
- logUpdate(fn, nextStoreInfos, prev.value, next.value);
103
- }
104
- return next;
105
- });
59
+ setState((prev) => (0, import_comparators.isEqualSubsetShallow)(prevStoreInfos, nextStoreInfos) && (0, import_comparators.isEqualSubsetShallow)(prev.value, next.value) ? prev : (process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, prev.value, next.value), next));
106
60
  });
107
61
  return () => {
108
- unsub();
109
- dispose == null ? void 0 : dispose();
62
+ unsub(), dispose?.();
110
63
  };
111
- }, [[...state.storeInfos].map((i) => i.uid).join(",")]);
112
- return state.value;
64
+ }, [[...state.storeInfos].map((i) => i.uid).join(",")]), state.value;
113
65
  }
114
66
  function getObserverValueAndStoresAccessed(selector) {
115
- const storeInfos = /* @__PURE__ */ new Set();
116
- const dispose = (0, import_useStore.trackStoresAccess)((storeInfo) => {
67
+ const storeInfos = /* @__PURE__ */ new Set(), dispose = (0, import_useStore.trackStoresAccess)((storeInfo) => {
117
68
  storeInfos.add(storeInfo);
118
- });
119
- const value = selector();
120
- dispose();
121
- return {
69
+ }), value = selector();
70
+ return dispose(), {
122
71
  value,
123
72
  storeInfos
124
73
  };
125
74
  }
126
75
  function subscribeToStores(storeInfos, onUpdate) {
127
76
  const disposes = [];
128
- let isUpdating = false;
77
+ let isUpdating = !1;
129
78
  const onUpdateDebouncedWithoutTracking = () => {
130
- if (isUpdating)
131
- return;
132
- isUpdating = true;
133
- queueMicrotask(() => {
79
+ isUpdating || (isUpdating = !0, queueMicrotask(() => {
134
80
  try {
135
- for (const storeInfo of storeInfos) {
136
- storeInfo.disableTracking = true;
137
- }
81
+ for (const storeInfo of storeInfos)
82
+ storeInfo.disableTracking = !0;
138
83
  onUpdate();
139
84
  } finally {
140
- isUpdating = false;
141
- for (const storeInfo of storeInfos) {
142
- storeInfo.disableTracking = false;
143
- }
85
+ isUpdating = !1;
86
+ for (const storeInfo of storeInfos)
87
+ storeInfo.disableTracking = !1;
144
88
  }
145
- });
89
+ }));
146
90
  };
147
- for (const storeInfo of storeInfos) {
91
+ for (const storeInfo of storeInfos)
148
92
  disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
149
- }
150
93
  return () => {
151
94
  disposes.forEach((x) => x());
152
95
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/observe.tsx"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -0,0 +1,103 @@
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: !0 });
9
+ }, __copyProps = (to, from, except, desc) => {
10
+ if (from && typeof from == "object" || typeof from == "function")
11
+ for (let key of __getOwnPropNames(from))
12
+ !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
13
+ return to;
14
+ };
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
16
+ var observe_exports = {};
17
+ __export(observe_exports, {
18
+ observe: () => observe,
19
+ useObserve: () => useObserve
20
+ });
21
+ module.exports = __toCommonJS(observe_exports);
22
+ var import_react = require("react"), import_comparators = require("./comparators"), import_constants = require("./constants"), import_useStore = require("./useStore");
23
+ const logUpdate = process.env.NODE_ENV === "development" ? (fn, stores, last, next) => {
24
+ const getStoreLogName = (store) => `${(store[import_constants.UNWRAP_PROXY] ?? store).constructor.name}${store.props?.id ? `:${store.props.id}` : ""}`, storeNames = stores.map(getStoreLogName).join(", "), name = `\u{1F311} \u25B6\uFE0F %c${fn.name} ${storeNames} () ${last} => ${next}`;
25
+ console.groupCollapsed(name, "color: tomato;"), console.groupCollapsed("trace >"), console.trace(), console.groupEnd(), console.log(" next", next), console.groupEnd();
26
+ } : null;
27
+ function observe(fn) {
28
+ let prev = getObserverValueAndStoresAccessed(fn), disposeValue = null;
29
+ const subscribe = () => {
30
+ const stores = [...prev.storeInfos];
31
+ return subscribeToStores(stores, () => {
32
+ disposeValue?.();
33
+ const next = getObserverValueAndStoresAccessed(fn);
34
+ if (typeof next.value == "function") {
35
+ disposeValue = next.value, process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], "(fn)", "(fn)");
36
+ return;
37
+ }
38
+ (0, import_comparators.isEqualSubsetShallow)(prev.storeInfos, next.storeInfos) && (0, import_comparators.isEqualSubsetShallow)(prev.value, next.value) || (process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], prev.value, next.value), prev = next, dispose(), dispose = subscribe());
39
+ });
40
+ };
41
+ let dispose = subscribe();
42
+ return {
43
+ dispose: () => {
44
+ dispose(), disposeValue?.();
45
+ },
46
+ getValue: () => prev.value
47
+ };
48
+ }
49
+ function useObserve(fn) {
50
+ const [state, setState] = (0, import_react.useState)(() => getObserverValueAndStoresAccessed(fn));
51
+ return (0, import_react.useEffect)(() => {
52
+ let dispose;
53
+ const unsub = subscribeToStores([...state.storeInfos], () => {
54
+ dispose?.();
55
+ const next = getObserverValueAndStoresAccessed(fn), nextStoreInfos = [...next.storeInfos], prevStoreInfos = [...state.storeInfos];
56
+ if (typeof next.value == "function") {
57
+ process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, "(fn)", "(fn)"), dispose = next.value;
58
+ return;
59
+ }
60
+ setState((prev) => (0, import_comparators.isEqualSubsetShallow)(prevStoreInfos, nextStoreInfos) && (0, import_comparators.isEqualSubsetShallow)(prev.value, next.value) ? prev : (process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, prev.value, next.value), next));
61
+ });
62
+ return () => {
63
+ unsub(), dispose?.();
64
+ };
65
+ }, [[...state.storeInfos].map((i) => i.uid).join(",")]), state.value;
66
+ }
67
+ function getObserverValueAndStoresAccessed(selector) {
68
+ const storeInfos = /* @__PURE__ */ new Set(), dispose = (0, import_useStore.trackStoresAccess)((storeInfo) => {
69
+ storeInfos.add(storeInfo);
70
+ }), value = selector();
71
+ return dispose(), {
72
+ value,
73
+ storeInfos
74
+ };
75
+ }
76
+ function subscribeToStores(storeInfos, onUpdate) {
77
+ const disposes = [];
78
+ let isUpdating = !1;
79
+ const onUpdateDebouncedWithoutTracking = () => {
80
+ isUpdating || (isUpdating = !0, queueMicrotask(() => {
81
+ try {
82
+ for (const storeInfo of storeInfos)
83
+ storeInfo.disableTracking = !0;
84
+ onUpdate();
85
+ } finally {
86
+ isUpdating = !1;
87
+ for (const storeInfo of storeInfos)
88
+ storeInfo.disableTracking = !1;
89
+ }
90
+ }));
91
+ };
92
+ for (const storeInfo of storeInfos)
93
+ disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
94
+ return () => {
95
+ disposes.forEach((x) => x());
96
+ };
97
+ }
98
+ // Annotate the CommonJS export names for ESM import in node:
99
+ 0 && (module.exports = {
100
+ observe,
101
+ useObserve
102
+ });
103
+ //# sourceMappingURL=observe.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/observe.tsx"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }