@tamagui/use-store 1.52.9 → 1.53.0
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/reaction.js +80 -0
- package/dist/cjs/reaction.js.map +2 -2
- package/dist/cjs/selector.js +9 -64
- package/dist/cjs/selector.js.map +1 -1
- package/dist/esm/reaction.js +56 -0
- package/dist/esm/reaction.js.map +2 -2
- package/dist/esm/selector.js +8 -62
- package/dist/esm/selector.js.map +1 -1
- package/package.json +3 -3
- package/types/reaction.d.ts.map +1 -1
- package/types/selector.d.ts.map +1 -1
package/dist/cjs/reaction.js
CHANGED
|
@@ -1,2 +1,82 @@
|
|
|
1
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 reaction_exports = {};
|
|
20
|
+
__export(reaction_exports, {
|
|
21
|
+
reaction: () => reaction,
|
|
22
|
+
useReaction: () => useReaction
|
|
23
|
+
});
|
|
24
|
+
module.exports = __toCommonJS(reaction_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");
|
|
29
|
+
const dispose = (d) => {
|
|
30
|
+
if (typeof d === "function") {
|
|
31
|
+
d();
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
function useReaction(store, selector, receiver, props, equalityFn = import_comparators.isEqualSubsetShallow, memoArgs) {
|
|
35
|
+
const storeInfo = (0, import_useStore.getStoreInfo)(store, props);
|
|
36
|
+
return (0, import_react.useMemo)(
|
|
37
|
+
() => reaction(storeInfo, selector, receiver, equalityFn),
|
|
38
|
+
[memoArgs]
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
function reaction({ store, subscribe }, selector, receiver, equalityFn = import_comparators.isEqualSubsetShallow) {
|
|
42
|
+
let last = void 0;
|
|
43
|
+
let innerDispose;
|
|
44
|
+
function updateReaction() {
|
|
45
|
+
var _a;
|
|
46
|
+
try {
|
|
47
|
+
(0, import_useStore.setIsInReaction)(true);
|
|
48
|
+
const storeInstance = store[import_constants.UNWRAP_PROXY] || store;
|
|
49
|
+
const next = selector(storeInstance);
|
|
50
|
+
if (!equalityFn(last, next)) {
|
|
51
|
+
if (process.env.NODE_ENV === "development") {
|
|
52
|
+
console.groupCollapsed(
|
|
53
|
+
`\u{1F311} \u23ED %c${receiver.name.padStart(24)} (${storeInstance.constructor.name}${((_a = store.props) == null ? void 0 : _a.id) ? `:${store.props.id}` : ""}) ${last} => ${next}`,
|
|
54
|
+
"color: chocolate;"
|
|
55
|
+
);
|
|
56
|
+
console.groupCollapsed("trace >");
|
|
57
|
+
console.trace();
|
|
58
|
+
console.groupEnd();
|
|
59
|
+
console.log(" ARG", next);
|
|
60
|
+
console.groupEnd();
|
|
61
|
+
}
|
|
62
|
+
dispose(innerDispose);
|
|
63
|
+
last = next;
|
|
64
|
+
innerDispose = receiver(next);
|
|
65
|
+
}
|
|
66
|
+
} finally {
|
|
67
|
+
(0, import_useStore.setIsInReaction)(false);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const disposeSubscribe = subscribe(updateReaction);
|
|
71
|
+
updateReaction();
|
|
72
|
+
return () => {
|
|
73
|
+
disposeSubscribe();
|
|
74
|
+
dispose(innerDispose);
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
78
|
+
0 && (module.exports = {
|
|
79
|
+
reaction,
|
|
80
|
+
useReaction
|
|
81
|
+
});
|
|
2
82
|
//# sourceMappingURL=reaction.js.map
|
package/dist/cjs/reaction.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": [],
|
|
4
|
-
"mappings": "",
|
|
3
|
+
"sources": ["../../src/reaction.tsx"],
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAwB;AAExB,yBAAqC;AACrC,uBAA6B;AAE7B,sBAA8C;AAE9C,MAAM,UAAU,CAAC,MAAW;AAC1B,MAAI,OAAO,MAAM,YAAY;AAC3B,MAAE;AAAA,EACJ;AACF;AAEO,SAAS,YACd,OACA,UACA,UAGA,OACA,aAA0C,yCAC1C,UACA;AACA,QAAM,gBAAY,8BAAa,OAAO,KAAK;AAC3C,aAAO;AAAA,IACL,MAAM,SAAS,WAAW,UAAiB,UAAU,UAAU;AAAA,IAC/D,CAAC,QAAQ;AAAA,EACX;AACF;AAEO,SAAS,SAId,EAAE,OAAO,UAAU,GACnB,UACA,UAGA,aAA0C,yCAC1C;AACA,MAAI,OAAY;AAChB,MAAI;AAEJ,WAAS,iBAAiB;AA5C5B;AA6CI,QAAI;AACF,2CAAgB,IAAI;AACpB,YAAM,gBAAgB,MAAM,6BAAY,KAAK;AAC7C,YAAM,OAAO,SAAS,aAAa;AACnC,UAAI,CAAC,WAAW,MAAM,IAAI,GAAG;AAC3B,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,kBAAQ;AAAA,YACN,uBAAW,SAAS,KAAK,SAAS,EAAE,CAAC,KAAK,cAAc,YAAY,IAAI,KACtE,WAAM,UAAN,mBAAa,MAAK,IAAI,MAAM,MAAM,EAAE,KAAK,EAC3C,KAAK,IAAI,OAAO,IAAI;AAAA,YACpB;AAAA,UACF;AACA,kBAAQ,eAAe,SAAS;AAChC,kBAAQ,MAAM;AACd,kBAAQ,SAAS;AAEjB,kBAAQ,IAAI,SAAS,IAAI;AACzB,kBAAQ,SAAS;AAAA,QACnB;AACA,gBAAQ,YAAY;AACpB,eAAO;AACP,uBAAe,SAAS,IAAI;AAAA,MAC9B;AAAA,IACF,UAAE;AACA,2CAAgB,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,mBAAmB,UAAU,cAAc;AACjD,iBAAe;AAEf,SAAO,MAAM;AACX,qBAAiB;AACjB,YAAQ,YAAY;AAAA,EACtB;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/cjs/selector.js
CHANGED
|
@@ -18,8 +18,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
19
|
var selector_exports = {};
|
|
20
20
|
__export(selector_exports, {
|
|
21
|
-
|
|
22
|
-
useObserve: () => useObserve
|
|
21
|
+
useSelector: () => useSelector
|
|
23
22
|
});
|
|
24
23
|
module.exports = __toCommonJS(selector_exports);
|
|
25
24
|
var import_react = require("react");
|
|
@@ -41,50 +40,15 @@ const logUpdate = process.env.NODE_ENV === "development" ? (fn, stores, last, ne
|
|
|
41
40
|
console.log(" next", next);
|
|
42
41
|
console.groupEnd();
|
|
43
42
|
} : null;
|
|
44
|
-
function
|
|
45
|
-
let prev = getObserverValueAndStoresAccessed(fn);
|
|
46
|
-
let disposeValue = null;
|
|
47
|
-
const subscribe = () => {
|
|
48
|
-
const stores = [...prev.storeInfos];
|
|
49
|
-
return subscribeToStores(stores, () => {
|
|
50
|
-
disposeValue == null ? void 0 : disposeValue();
|
|
51
|
-
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)) {
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
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();
|
|
68
|
-
});
|
|
69
|
-
};
|
|
70
|
-
let dispose = subscribe();
|
|
71
|
-
return {
|
|
72
|
-
dispose: () => {
|
|
73
|
-
dispose();
|
|
74
|
-
disposeValue == null ? void 0 : disposeValue();
|
|
75
|
-
},
|
|
76
|
-
getValue: () => prev.value
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function useObserve(fn) {
|
|
43
|
+
function useSelector(fn) {
|
|
80
44
|
const [state, setState] = (0, import_react.useState)(() => {
|
|
81
|
-
return
|
|
45
|
+
return runStoreSelector(fn);
|
|
82
46
|
});
|
|
83
47
|
(0, import_react.useEffect)(() => {
|
|
84
48
|
let dispose;
|
|
85
49
|
const unsub = subscribeToStores([...state.storeInfos], () => {
|
|
86
50
|
dispose == null ? void 0 : dispose();
|
|
87
|
-
const next =
|
|
51
|
+
const next = runStoreSelector(fn);
|
|
88
52
|
const nextStoreInfos = [...next.storeInfos];
|
|
89
53
|
const prevStoreInfos = [...state.storeInfos];
|
|
90
54
|
if (typeof next.value === "function") {
|
|
@@ -111,7 +75,7 @@ function useObserve(fn) {
|
|
|
111
75
|
}, [[...state.storeInfos].map((i) => i.uid).join(",")]);
|
|
112
76
|
return state.value;
|
|
113
77
|
}
|
|
114
|
-
function
|
|
78
|
+
function runStoreSelector(selector) {
|
|
115
79
|
const storeInfos = /* @__PURE__ */ new Set();
|
|
116
80
|
const dispose = (0, import_useStore.trackStoresAccess)((storeInfo) => {
|
|
117
81
|
storeInfos.add(storeInfo);
|
|
@@ -123,28 +87,10 @@ function getObserverValueAndStoresAccessed(selector) {
|
|
|
123
87
|
storeInfos
|
|
124
88
|
};
|
|
125
89
|
}
|
|
126
|
-
function subscribeToStores(
|
|
90
|
+
function subscribeToStores(stores, onUpdate) {
|
|
127
91
|
const disposes = [];
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
if (isUpdating)
|
|
131
|
-
return;
|
|
132
|
-
isUpdating = true;
|
|
133
|
-
queueMicrotask(() => {
|
|
134
|
-
try {
|
|
135
|
-
for (const storeInfo of storeInfos) {
|
|
136
|
-
storeInfo.disableTracking = true;
|
|
137
|
-
}
|
|
138
|
-
onUpdate();
|
|
139
|
-
} finally {
|
|
140
|
-
for (const storeInfo of storeInfos) {
|
|
141
|
-
storeInfo.disableTracking = false;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
});
|
|
145
|
-
};
|
|
146
|
-
for (const storeInfo of storeInfos) {
|
|
147
|
-
disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
|
|
92
|
+
for (const store of stores) {
|
|
93
|
+
disposes.push(store.subscribe(onUpdate));
|
|
148
94
|
}
|
|
149
95
|
return () => {
|
|
150
96
|
disposes.forEach((x) => x());
|
|
@@ -152,7 +98,6 @@ function subscribeToStores(storeInfos, onUpdate) {
|
|
|
152
98
|
}
|
|
153
99
|
// Annotate the CommonJS export names for ESM import in node:
|
|
154
100
|
0 && (module.exports = {
|
|
155
|
-
|
|
156
|
-
useObserve
|
|
101
|
+
useSelector
|
|
157
102
|
});
|
|
158
103
|
//# sourceMappingURL=selector.js.map
|
package/dist/cjs/selector.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/selector.tsx"],
|
|
4
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA
|
|
4
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,mBAAoC;AAEpC,yBAAqC;AACrC,uBAA6B;AAE7B,sBAAkC;AAIlC,MAAM,YACJ,QAAQ,IAAI,aAAa,gBACrB,CAAC,IAAS,QAAe,MAAW,SAAc;AAChD,QAAM,kBAAkB,CAAC,UAAe;AAZhD;AAaU,UAAM,MAAM,MAAM,6BAAY,KAAK;AACnC,WAAO,GAAG,IAAI,YAAY,IAAI,KAAG,WAAM,UAAN,mBAAa,MAAK,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE;AAAA,EAC9E;AACA,QAAM,aAAa,OAAO,IAAI,eAAe,EAAE,KAAK,IAAI;AACxD,QAAM,OAAO,6BAAY,GAAG,IAAI,IAAI,UAAU,OAAO,IAAI,OAAO,IAAI;AACpE,UAAQ,eAAe,MAAM,gBAAgB;AAC7C,UAAQ,eAAe,SAAS;AAChC,UAAQ,MAAM;AACd,UAAQ,SAAS;AAEjB,UAAQ,IAAI,UAAU,IAAI;AAC1B,UAAQ,SAAS;AACnB,IACA;AA2CC,SAAS,YAAe,IAAgB;AAC7C,QAAM,CAAC,OAAO,QAAQ,QAAI,uBAAS,MAAM;AACvC,WAAO,iBAAiB,EAAE;AAAA,EAC5B,CAAC;AAED,8BAAU,MAAM;AACd,QAAI;AACJ,UAAM,QAAQ,kBAAkB,CAAC,GAAG,MAAM,UAAU,GAAG,MAAM;AAC3D;AACA,YAAM,OAAO,iBAAiB,EAAE;AAEhC,YAAM,iBAAiB,CAAC,GAAG,KAAK,UAAU;AAC1C,YAAM,iBAAiB,CAAC,GAAG,MAAM,UAAU;AAG3C,UAAI,OAAO,KAAK,UAAU,YAAY;AACpC,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,oBAAW,IAAI,gBAAgB,QAAQ,MAAM;AAAA,QAC/C;AACA,kBAAU,KAAK;AACf;AAAA,MACF;AACA,eAAS,CAAC,SAAS;AACjB,gBACE,yCAAqB,gBAAgB,cAAc,SACnD,yCAAqB,KAAK,OAAO,KAAK,KAAK,GAC3C;AACA,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,oBAAW,IAAI,gBAAgB,KAAK,OAAO,KAAK,KAAK;AAAA,QACvD;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,CAAC;AACD,WAAO,MAAM;AACX,YAAM;AACN;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC,GAAG,MAAM,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEtD,SAAO,MAAM;AACf;AAEA,SAAS,iBAAoB,UAG3B;AACA,QAAM,aAAa,oBAAI,IAAe;AACtC,QAAM,cAAU,mCAAkB,CAAC,cAAc;AAC/C,eAAW,IAAI,SAAS;AAAA,EAC1B,CAAC;AACD,QAAM,QAAQ,SAAS;AACvB,UAAQ;AACR,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,QAAqB,UAAqB;AACnE,QAAM,WAAuB,CAAC;AAC9B,aAAW,SAAS,QAAQ;AAC1B,aAAS,KAAK,MAAM,UAAU,QAAQ,CAAC;AAAA,EACzC;AACA,SAAO,MAAM;AACX,aAAS,QAAQ,CAAC,MAAM,EAAE,CAAC;AAAA,EAC7B;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/reaction.js
CHANGED
|
@@ -1 +1,57 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { isEqualSubsetShallow } from "./comparators";
|
|
3
|
+
import { UNWRAP_PROXY } from "./constants";
|
|
4
|
+
import { getStoreInfo, setIsInReaction } from "./useStore";
|
|
5
|
+
const dispose = (d) => {
|
|
6
|
+
if (typeof d === "function") {
|
|
7
|
+
d();
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
function useReaction(store, selector, receiver, props, equalityFn = isEqualSubsetShallow, memoArgs) {
|
|
11
|
+
const storeInfo = getStoreInfo(store, props);
|
|
12
|
+
return useMemo(
|
|
13
|
+
() => reaction(storeInfo, selector, receiver, equalityFn),
|
|
14
|
+
[memoArgs]
|
|
15
|
+
);
|
|
16
|
+
}
|
|
17
|
+
function reaction({ store, subscribe }, selector, receiver, equalityFn = isEqualSubsetShallow) {
|
|
18
|
+
let last = void 0;
|
|
19
|
+
let innerDispose;
|
|
20
|
+
function updateReaction() {
|
|
21
|
+
var _a;
|
|
22
|
+
try {
|
|
23
|
+
setIsInReaction(true);
|
|
24
|
+
const storeInstance = store[UNWRAP_PROXY] || store;
|
|
25
|
+
const next = selector(storeInstance);
|
|
26
|
+
if (!equalityFn(last, next)) {
|
|
27
|
+
if (process.env.NODE_ENV === "development") {
|
|
28
|
+
console.groupCollapsed(
|
|
29
|
+
`\u{1F311} \u23ED %c${receiver.name.padStart(24)} (${storeInstance.constructor.name}${((_a = store.props) == null ? void 0 : _a.id) ? `:${store.props.id}` : ""}) ${last} => ${next}`,
|
|
30
|
+
"color: chocolate;"
|
|
31
|
+
);
|
|
32
|
+
console.groupCollapsed("trace >");
|
|
33
|
+
console.trace();
|
|
34
|
+
console.groupEnd();
|
|
35
|
+
console.log(" ARG", next);
|
|
36
|
+
console.groupEnd();
|
|
37
|
+
}
|
|
38
|
+
dispose(innerDispose);
|
|
39
|
+
last = next;
|
|
40
|
+
innerDispose = receiver(next);
|
|
41
|
+
}
|
|
42
|
+
} finally {
|
|
43
|
+
setIsInReaction(false);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const disposeSubscribe = subscribe(updateReaction);
|
|
47
|
+
updateReaction();
|
|
48
|
+
return () => {
|
|
49
|
+
disposeSubscribe();
|
|
50
|
+
dispose(innerDispose);
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
export {
|
|
54
|
+
reaction,
|
|
55
|
+
useReaction
|
|
56
|
+
};
|
|
1
57
|
//# sourceMappingURL=reaction.js.map
|
package/dist/esm/reaction.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": [],
|
|
4
|
-
"mappings": "",
|
|
3
|
+
"sources": ["../../src/reaction.tsx"],
|
|
4
|
+
"mappings": "AAAA,SAAS,eAAe;AAExB,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,cAAc,uBAAuB;AAE9C,MAAM,UAAU,CAAC,MAAW;AAC1B,MAAI,OAAO,MAAM,YAAY;AAC3B,MAAE;AAAA,EACJ;AACF;AAEO,SAAS,YACd,OACA,UACA,UAGA,OACA,aAA0C,sBAC1C,UACA;AACA,QAAM,YAAY,aAAa,OAAO,KAAK;AAC3C,SAAO;AAAA,IACL,MAAM,SAAS,WAAW,UAAiB,UAAU,UAAU;AAAA,IAC/D,CAAC,QAAQ;AAAA,EACX;AACF;AAEO,SAAS,SAId,EAAE,OAAO,UAAU,GACnB,UACA,UAGA,aAA0C,sBAC1C;AACA,MAAI,OAAY;AAChB,MAAI;AAEJ,WAAS,iBAAiB;AA5C5B;AA6CI,QAAI;AACF,sBAAgB,IAAI;AACpB,YAAM,gBAAgB,MAAM,YAAY,KAAK;AAC7C,YAAM,OAAO,SAAS,aAAa;AACnC,UAAI,CAAC,WAAW,MAAM,IAAI,GAAG;AAC3B,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,kBAAQ;AAAA,YACN,uBAAW,SAAS,KAAK,SAAS,EAAE,CAAC,KAAK,cAAc,YAAY,IAAI,KACtE,WAAM,UAAN,mBAAa,MAAK,IAAI,MAAM,MAAM,EAAE,KAAK,EAC3C,KAAK,IAAI,OAAO,IAAI;AAAA,YACpB;AAAA,UACF;AACA,kBAAQ,eAAe,SAAS;AAChC,kBAAQ,MAAM;AACd,kBAAQ,SAAS;AAEjB,kBAAQ,IAAI,SAAS,IAAI;AACzB,kBAAQ,SAAS;AAAA,QACnB;AACA,gBAAQ,YAAY;AACpB,eAAO;AACP,uBAAe,SAAS,IAAI;AAAA,MAC9B;AAAA,IACF,UAAE;AACA,sBAAgB,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,mBAAmB,UAAU,cAAc;AACjD,iBAAe;AAEf,SAAO,MAAM;AACX,qBAAiB;AACjB,YAAQ,YAAY;AAAA,EACtB;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/dist/esm/selector.js
CHANGED
|
@@ -17,50 +17,15 @@ const logUpdate = process.env.NODE_ENV === "development" ? (fn, stores, last, ne
|
|
|
17
17
|
console.log(" next", next);
|
|
18
18
|
console.groupEnd();
|
|
19
19
|
} : null;
|
|
20
|
-
function
|
|
21
|
-
let prev = getObserverValueAndStoresAccessed(fn);
|
|
22
|
-
let disposeValue = null;
|
|
23
|
-
const subscribe = () => {
|
|
24
|
-
const stores = [...prev.storeInfos];
|
|
25
|
-
return subscribeToStores(stores, () => {
|
|
26
|
-
disposeValue == null ? void 0 : disposeValue();
|
|
27
|
-
const next = getObserverValueAndStoresAccessed(fn);
|
|
28
|
-
if (typeof next.value === "function") {
|
|
29
|
-
disposeValue = next.value;
|
|
30
|
-
if (process.env.NODE_ENV === "development") {
|
|
31
|
-
logUpdate(fn, [...next.storeInfos], "(fn)", "(fn)");
|
|
32
|
-
}
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
if (isEqualSubsetShallow(prev.storeInfos, next.storeInfos) && isEqualSubsetShallow(prev.value, next.value)) {
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
if (process.env.NODE_ENV === "development") {
|
|
39
|
-
logUpdate(fn, [...next.storeInfos], prev.value, next.value);
|
|
40
|
-
}
|
|
41
|
-
prev = next;
|
|
42
|
-
dispose();
|
|
43
|
-
dispose = subscribe();
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
let dispose = subscribe();
|
|
47
|
-
return {
|
|
48
|
-
dispose: () => {
|
|
49
|
-
dispose();
|
|
50
|
-
disposeValue == null ? void 0 : disposeValue();
|
|
51
|
-
},
|
|
52
|
-
getValue: () => prev.value
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
function useObserve(fn) {
|
|
20
|
+
function useSelector(fn) {
|
|
56
21
|
const [state, setState] = useState(() => {
|
|
57
|
-
return
|
|
22
|
+
return runStoreSelector(fn);
|
|
58
23
|
});
|
|
59
24
|
useEffect(() => {
|
|
60
25
|
let dispose;
|
|
61
26
|
const unsub = subscribeToStores([...state.storeInfos], () => {
|
|
62
27
|
dispose == null ? void 0 : dispose();
|
|
63
|
-
const next =
|
|
28
|
+
const next = runStoreSelector(fn);
|
|
64
29
|
const nextStoreInfos = [...next.storeInfos];
|
|
65
30
|
const prevStoreInfos = [...state.storeInfos];
|
|
66
31
|
if (typeof next.value === "function") {
|
|
@@ -87,7 +52,7 @@ function useObserve(fn) {
|
|
|
87
52
|
}, [[...state.storeInfos].map((i) => i.uid).join(",")]);
|
|
88
53
|
return state.value;
|
|
89
54
|
}
|
|
90
|
-
function
|
|
55
|
+
function runStoreSelector(selector) {
|
|
91
56
|
const storeInfos = /* @__PURE__ */ new Set();
|
|
92
57
|
const dispose = trackStoresAccess((storeInfo) => {
|
|
93
58
|
storeInfos.add(storeInfo);
|
|
@@ -99,35 +64,16 @@ function getObserverValueAndStoresAccessed(selector) {
|
|
|
99
64
|
storeInfos
|
|
100
65
|
};
|
|
101
66
|
}
|
|
102
|
-
function subscribeToStores(
|
|
67
|
+
function subscribeToStores(stores, onUpdate) {
|
|
103
68
|
const disposes = [];
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
if (isUpdating)
|
|
107
|
-
return;
|
|
108
|
-
isUpdating = true;
|
|
109
|
-
queueMicrotask(() => {
|
|
110
|
-
try {
|
|
111
|
-
for (const storeInfo of storeInfos) {
|
|
112
|
-
storeInfo.disableTracking = true;
|
|
113
|
-
}
|
|
114
|
-
onUpdate();
|
|
115
|
-
} finally {
|
|
116
|
-
for (const storeInfo of storeInfos) {
|
|
117
|
-
storeInfo.disableTracking = false;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
});
|
|
121
|
-
};
|
|
122
|
-
for (const storeInfo of storeInfos) {
|
|
123
|
-
disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
|
|
69
|
+
for (const store of stores) {
|
|
70
|
+
disposes.push(store.subscribe(onUpdate));
|
|
124
71
|
}
|
|
125
72
|
return () => {
|
|
126
73
|
disposes.forEach((x) => x());
|
|
127
74
|
};
|
|
128
75
|
}
|
|
129
76
|
export {
|
|
130
|
-
|
|
131
|
-
useObserve
|
|
77
|
+
useSelector
|
|
132
78
|
};
|
|
133
79
|
//# sourceMappingURL=selector.js.map
|
package/dist/esm/selector.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/selector.tsx"],
|
|
4
|
-
"mappings": "AAAA,SAAS,WAAW,gBAAgB;AAEpC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;
|
|
4
|
+
"mappings": "AAAA,SAAS,WAAW,gBAAgB;AAEpC,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAIlC,MAAM,YACJ,QAAQ,IAAI,aAAa,gBACrB,CAAC,IAAS,QAAe,MAAW,SAAc;AAChD,QAAM,kBAAkB,CAAC,UAAe;AAZhD;AAaU,UAAM,MAAM,MAAM,YAAY,KAAK;AACnC,WAAO,GAAG,IAAI,YAAY,IAAI,KAAG,WAAM,UAAN,mBAAa,MAAK,IAAI,MAAM,MAAM,EAAE,KAAK,EAAE;AAAA,EAC9E;AACA,QAAM,aAAa,OAAO,IAAI,eAAe,EAAE,KAAK,IAAI;AACxD,QAAM,OAAO,6BAAY,GAAG,IAAI,IAAI,UAAU,OAAO,IAAI,OAAO,IAAI;AACpE,UAAQ,eAAe,MAAM,gBAAgB;AAC7C,UAAQ,eAAe,SAAS;AAChC,UAAQ,MAAM;AACd,UAAQ,SAAS;AAEjB,UAAQ,IAAI,UAAU,IAAI;AAC1B,UAAQ,SAAS;AACnB,IACA;AA2CC,SAAS,YAAe,IAAgB;AAC7C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAS,MAAM;AACvC,WAAO,iBAAiB,EAAE;AAAA,EAC5B,CAAC;AAED,YAAU,MAAM;AACd,QAAI;AACJ,UAAM,QAAQ,kBAAkB,CAAC,GAAG,MAAM,UAAU,GAAG,MAAM;AAC3D;AACA,YAAM,OAAO,iBAAiB,EAAE;AAEhC,YAAM,iBAAiB,CAAC,GAAG,KAAK,UAAU;AAC1C,YAAM,iBAAiB,CAAC,GAAG,MAAM,UAAU;AAG3C,UAAI,OAAO,KAAK,UAAU,YAAY;AACpC,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,oBAAW,IAAI,gBAAgB,QAAQ,MAAM;AAAA,QAC/C;AACA,kBAAU,KAAK;AACf;AAAA,MACF;AACA,eAAS,CAAC,SAAS;AACjB,YACE,qBAAqB,gBAAgB,cAAc,KACnD,qBAAqB,KAAK,OAAO,KAAK,KAAK,GAC3C;AACA,iBAAO;AAAA,QACT;AACA,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,oBAAW,IAAI,gBAAgB,KAAK,OAAO,KAAK,KAAK;AAAA,QACvD;AACA,eAAO;AAAA,MACT,CAAC;AAAA,IACH,CAAC;AACD,WAAO,MAAM;AACX,YAAM;AACN;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC,GAAG,MAAM,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC;AAEtD,SAAO,MAAM;AACf;AAEA,SAAS,iBAAoB,UAG3B;AACA,QAAM,aAAa,oBAAI,IAAe;AACtC,QAAM,UAAU,kBAAkB,CAAC,cAAc;AAC/C,eAAW,IAAI,SAAS;AAAA,EAC1B,CAAC;AACD,QAAM,QAAQ,SAAS;AACvB,UAAQ;AACR,SAAO;AAAA,IACL;AAAA,IACA;AAAA,EACF;AACF;AAEA,SAAS,kBAAkB,QAAqB,UAAqB;AACnE,QAAM,WAAuB,CAAC;AAC9B,aAAW,SAAS,QAAQ;AAC1B,aAAS,KAAK,MAAM,UAAU,QAAQ,CAAC;AAAA,EACzC;AACA,SAAO,MAAM;AACX,aAAS,QAAQ,CAAC,MAAM,EAAE,CAAC;AAAA,EAC7B;AACF;",
|
|
5
5
|
"names": []
|
|
6
6
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tamagui/use-store",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.53.0",
|
|
4
4
|
"types": "./types/index.d.ts",
|
|
5
5
|
"main": "dist/cjs",
|
|
6
6
|
"module": "dist/esm",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
}
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"@tamagui/simple-hash": "1.
|
|
30
|
+
"@tamagui/simple-hash": "1.53.0"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@tamagui/build": "1.
|
|
33
|
+
"@tamagui/build": "1.53.0",
|
|
34
34
|
"@testing-library/react": "^13.4.0",
|
|
35
35
|
"react": "^18.2.0",
|
|
36
36
|
"vitest": "^0.26.3"
|
package/types/reaction.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reaction.d.ts","sourceRoot":"","sources":["../src/reaction.tsx"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"reaction.d.ts","sourceRoot":"","sources":["../src/reaction.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AASxC,wBAAgB,WAAW,CAAC,aAAa,EAAE,QAAQ,SAAS,CAAC,CAAC,EAAE,aAAa,KAAK,GAAG,EACnF,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,SAAS,CAAC,CAAC,EAAE,aAAa,KAAK,MAAM,OAAO,GAC1D,CAAC,CAAC,EAAE,OAAO,KAAK,GAAG,GACnB,OAAO,EACX,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC3B,UAAU,GAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,OAA8B,EAC9D,QAAQ,CAAC,EAAE,GAAG,EAAE,cAOjB;AAED,wBAAgB,QAAQ,CACtB,aAAa,SAAS,SAAS,EAC/B,QAAQ,SAAS,CAAC,CAAC,EAAE,aAAa,KAAK,GAAG,EAE1C,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,aAAa,EACnC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,SAAS,CAAC,CAAC,EAAE,aAAa,KAAK,MAAM,OAAO,GAC1D,CAAC,CAAC,EAAE,OAAO,KAAK,GAAG,GACnB,OAAO,EACX,UAAU,GAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,KAAK,OAA8B,cAyC/D"}
|
package/types/selector.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../src/selector.tsx"],"names":[],"mappings":"AAqEA,wBAAgB,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CA0C7C"}
|