@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.
- package/dist/cjs/comparators.js +12 -18
- package/dist/cjs/comparators.js.map +1 -1
- package/dist/cjs/comparators.native.js +40 -0
- package/dist/cjs/comparators.native.js.map +6 -0
- package/dist/cjs/configureUseStore.js +5 -9
- package/dist/cjs/configureUseStore.js.map +1 -1
- package/dist/cjs/configureUseStore.native.js +31 -0
- package/dist/cjs/configureUseStore.native.js.map +6 -0
- package/dist/cjs/constants.js +7 -12
- package/dist/cjs/constants.js.map +1 -1
- package/dist/cjs/constants.native.js +31 -0
- package/dist/cjs/constants.native.js.map +6 -0
- package/dist/cjs/decorators.js +6 -11
- package/dist/cjs/decorators.js.map +1 -1
- package/dist/cjs/decorators.native.js +30 -0
- package/dist/cjs/decorators.native.js.map +6 -0
- package/dist/cjs/helpers.js +13 -29
- package/dist/cjs/helpers.js.map +1 -1
- package/dist/cjs/helpers.native.js +66 -0
- package/dist/cjs/helpers.native.js.map +6 -0
- package/dist/cjs/index.js +6 -11
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/index.native.js +46 -0
- package/dist/cjs/index.native.js.map +6 -0
- package/dist/cjs/interfaces.js +3 -6
- package/dist/cjs/interfaces.js.map +1 -1
- package/dist/cjs/interfaces.native.js +15 -0
- package/dist/cjs/interfaces.native.js.map +6 -0
- package/dist/cjs/observe.js +35 -92
- package/dist/cjs/observe.js.map +1 -1
- package/dist/cjs/observe.native.js +103 -0
- package/dist/cjs/observe.native.js.map +6 -0
- package/dist/cjs/useStore.js +114 -318
- package/dist/cjs/useStore.js.map +2 -2
- package/dist/cjs/useStore.native.js +350 -0
- package/dist/cjs/useStore.native.js.map +6 -0
- package/dist/cjs/useStoreDebug.js +14 -33
- package/dist/cjs/useStoreDebug.js.map +1 -1
- package/dist/cjs/useStoreDebug.native.js +55 -0
- package/dist/cjs/useStoreDebug.native.js.map +6 -0
- package/dist/esm/comparators.js +7 -9
- package/dist/esm/comparators.js.map +1 -1
- package/dist/esm/constants.js +2 -3
- package/dist/esm/constants.js.map +1 -1
- package/dist/esm/decorators.js +1 -2
- package/dist/esm/decorators.js.map +1 -1
- package/dist/esm/helpers.js +7 -18
- package/dist/esm/helpers.js.map +1 -1
- package/dist/esm/observe.js +29 -79
- package/dist/esm/observe.js.map +1 -1
- package/dist/esm/useStore.js +108 -303
- package/dist/esm/useStore.js.map +2 -2
- package/dist/esm/useStoreDebug.js +7 -20
- package/dist/esm/useStoreDebug.js.map +1 -1
- package/package.json +4 -4
package/dist/cjs/interfaces.js
CHANGED
|
@@ -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
|
|
6
|
+
if (from && typeof from == "object" || typeof from == "function")
|
|
8
7
|
for (let key of __getOwnPropNames(from))
|
|
9
|
-
|
|
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:
|
|
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
|
|
@@ -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
|
package/dist/cjs/observe.js
CHANGED
|
@@ -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:
|
|
9
|
-
}
|
|
10
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
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
|
|
31
|
+
disposeValue?.();
|
|
51
32
|
const next = getObserverValueAndStoresAccessed(fn);
|
|
52
|
-
if (typeof next.value
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
87
|
-
const next = getObserverValueAndStoresAccessed(fn);
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
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 =
|
|
77
|
+
let isUpdating = !1;
|
|
129
78
|
const onUpdateDebouncedWithoutTracking = () => {
|
|
130
|
-
|
|
131
|
-
return;
|
|
132
|
-
isUpdating = true;
|
|
133
|
-
queueMicrotask(() => {
|
|
79
|
+
isUpdating || (isUpdating = !0, queueMicrotask(() => {
|
|
134
80
|
try {
|
|
135
|
-
for (const storeInfo of storeInfos)
|
|
136
|
-
storeInfo.disableTracking =
|
|
137
|
-
}
|
|
81
|
+
for (const storeInfo of storeInfos)
|
|
82
|
+
storeInfo.disableTracking = !0;
|
|
138
83
|
onUpdate();
|
|
139
84
|
} finally {
|
|
140
|
-
isUpdating =
|
|
141
|
-
for (const storeInfo of storeInfos)
|
|
142
|
-
storeInfo.disableTracking =
|
|
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
|
};
|
package/dist/cjs/observe.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/observe.tsx"],
|
|
4
|
-
"mappings": "
|
|
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
|
+
}
|