@hanzogui/use-store 2.0.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/LICENSE +21 -0
- package/README.md +91 -0
- package/dist/cjs/comparators.cjs +37 -0
- package/dist/cjs/comparators.native.js +46 -0
- package/dist/cjs/comparators.native.js.map +1 -0
- package/dist/cjs/configureUseStore.cjs +30 -0
- package/dist/cjs/configureUseStore.native.js +33 -0
- package/dist/cjs/configureUseStore.native.js.map +1 -0
- package/dist/cjs/constants.cjs +31 -0
- package/dist/cjs/constants.native.js +34 -0
- package/dist/cjs/constants.native.js.map +1 -0
- package/dist/cjs/decorators.cjs +30 -0
- package/dist/cjs/decorators.native.js +33 -0
- package/dist/cjs/decorators.native.js.map +1 -0
- package/dist/cjs/helpers.cjs +55 -0
- package/dist/cjs/helpers.native.js +65 -0
- package/dist/cjs/helpers.native.js.map +1 -0
- package/dist/cjs/index.cjs +40 -0
- package/dist/cjs/index.native.js +54 -0
- package/dist/cjs/index.native.js.map +1 -0
- package/dist/cjs/interfaces.cjs +16 -0
- package/dist/cjs/interfaces.native.js +19 -0
- package/dist/cjs/interfaces.native.js.map +1 -0
- package/dist/cjs/observe.cjs +120 -0
- package/dist/cjs/observe.native.js +186 -0
- package/dist/cjs/observe.native.js.map +1 -0
- package/dist/cjs/useStore.cjs +390 -0
- package/dist/cjs/useStore.native.js +544 -0
- package/dist/cjs/useStore.native.js.map +1 -0
- package/dist/cjs/useStoreDebug.cjs +56 -0
- package/dist/cjs/useStoreDebug.native.js +65 -0
- package/dist/cjs/useStoreDebug.native.js.map +1 -0
- package/dist/esm/comparators.mjs +14 -0
- package/dist/esm/comparators.mjs.map +1 -0
- package/dist/esm/comparators.native.js +20 -0
- package/dist/esm/comparators.native.js.map +1 -0
- package/dist/esm/configureUseStore.mjs +6 -0
- package/dist/esm/configureUseStore.mjs.map +1 -0
- package/dist/esm/configureUseStore.native.js +6 -0
- package/dist/esm/configureUseStore.native.js.map +1 -0
- package/dist/esm/constants.mjs +7 -0
- package/dist/esm/constants.mjs.map +1 -0
- package/dist/esm/constants.native.js +7 -0
- package/dist/esm/constants.native.js.map +1 -0
- package/dist/esm/decorators.mjs +7 -0
- package/dist/esm/decorators.mjs.map +1 -0
- package/dist/esm/decorators.native.js +7 -0
- package/dist/esm/decorators.native.js.map +1 -0
- package/dist/esm/helpers.mjs +26 -0
- package/dist/esm/helpers.mjs.map +1 -0
- package/dist/esm/helpers.native.js +33 -0
- package/dist/esm/helpers.native.js.map +1 -0
- package/dist/esm/index.js +14 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/index.mjs +14 -0
- package/dist/esm/index.mjs.map +1 -0
- package/dist/esm/index.native.js +25 -0
- package/dist/esm/index.native.js.map +1 -0
- package/dist/esm/interfaces.mjs +2 -0
- package/dist/esm/interfaces.mjs.map +1 -0
- package/dist/esm/interfaces.native.js +2 -0
- package/dist/esm/interfaces.native.js.map +1 -0
- package/dist/esm/observe.mjs +85 -0
- package/dist/esm/observe.mjs.map +1 -0
- package/dist/esm/observe.native.js +148 -0
- package/dist/esm/observe.native.js.map +1 -0
- package/dist/esm/useStore.mjs +342 -0
- package/dist/esm/useStore.mjs.map +1 -0
- package/dist/esm/useStore.native.js +493 -0
- package/dist/esm/useStore.native.js.map +1 -0
- package/dist/esm/useStoreDebug.mjs +18 -0
- package/dist/esm/useStoreDebug.mjs.map +1 -0
- package/dist/esm/useStoreDebug.native.js +24 -0
- package/dist/esm/useStoreDebug.native.js.map +1 -0
- package/package.json +47 -0
- package/src/comparators.tsx +18 -0
- package/src/configureUseStore.tsx +7 -0
- package/src/constants.tsx +6 -0
- package/src/decorators.tsx +8 -0
- package/src/helpers.tsx +56 -0
- package/src/index.ts +12 -0
- package/src/interfaces.tsx +46 -0
- package/src/observe.tsx +160 -0
- package/src/useStore.tsx +705 -0
- package/src/useStoreDebug.tsx +41 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var __create = Object.create;
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
6
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
7
|
+
var __getProtoOf = Object.getPrototypeOf,
|
|
8
|
+
__hasOwnProp = Object.prototype.hasOwnProperty;
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all) __defProp(target, name, {
|
|
11
|
+
get: all[name],
|
|
12
|
+
enumerable: !0
|
|
13
|
+
});
|
|
14
|
+
},
|
|
15
|
+
__copyProps = (to, from, except, desc) => {
|
|
16
|
+
if (from && typeof from == "object" || typeof from == "function") for (let key of __getOwnPropNames(from)) !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, {
|
|
17
|
+
get: () => from[key],
|
|
18
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
19
|
+
});
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
23
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
24
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
25
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
26
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
27
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
28
|
+
value: mod,
|
|
29
|
+
enumerable: !0
|
|
30
|
+
}) : target, mod)),
|
|
31
|
+
__toCommonJS = mod => __copyProps(__defProp({}, "__esModule", {
|
|
32
|
+
value: !0
|
|
33
|
+
}), mod);
|
|
34
|
+
var useStoreDebug_exports = {};
|
|
35
|
+
__export(useStoreDebug_exports, {
|
|
36
|
+
DebugComponents: () => DebugComponents,
|
|
37
|
+
DebugStores: () => DebugStores,
|
|
38
|
+
shouldDebug: () => shouldDebug,
|
|
39
|
+
useCurrentComponent: () => useCurrentComponent,
|
|
40
|
+
useDebugStoreComponent: () => useDebugStoreComponent
|
|
41
|
+
});
|
|
42
|
+
module.exports = __toCommonJS(useStoreDebug_exports);
|
|
43
|
+
var import_react = __toESM(require("react"), 1),
|
|
44
|
+
useCurrentComponent = function () {
|
|
45
|
+
return {};
|
|
46
|
+
};
|
|
47
|
+
function useDebugStoreComponent(StoreCons) {
|
|
48
|
+
var cmp = useCurrentComponent();
|
|
49
|
+
DebugStores.add(StoreCons), DebugComponents.has(cmp) || DebugComponents.set(cmp, /* @__PURE__ */new Set());
|
|
50
|
+
var stores = DebugComponents.get(cmp);
|
|
51
|
+
stores.add(StoreCons), import_react.default.useLayoutEffect(function () {
|
|
52
|
+
return function () {
|
|
53
|
+
DebugStores.delete(StoreCons), stores.delete(StoreCons);
|
|
54
|
+
};
|
|
55
|
+
}, []);
|
|
56
|
+
}
|
|
57
|
+
var shouldDebug = function (component, info) {
|
|
58
|
+
var _info_storeInstance,
|
|
59
|
+
_DebugComponents_get,
|
|
60
|
+
StoreCons = (_info_storeInstance = info.storeInstance) === null || _info_storeInstance === void 0 ? void 0 : _info_storeInstance.constructor;
|
|
61
|
+
return (_DebugComponents_get = DebugComponents.get(component)) === null || _DebugComponents_get === void 0 ? void 0 : _DebugComponents_get.has(StoreCons);
|
|
62
|
+
},
|
|
63
|
+
DebugComponents = /* @__PURE__ */new Map(),
|
|
64
|
+
DebugStores = /* @__PURE__ */new Set();
|
|
65
|
+
//# sourceMappingURL=useStoreDebug.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["__toCommonJS","mod","__copyProps","__defProp","value","useStoreDebug_exports","__export","DebugComponents","DebugStores","shouldDebug","useCurrentComponent","useDebugStoreComponent","module","exports","import_react","__toESM","require","StoreCons","cmp","add","has","set","Set","stores","get","default","useLayoutEffect","delete"],"sources":["../../src/useStoreDebug.tsx"],"sourcesContent":[null],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAAA;EAAAA,YAAA,GAAAC,GAAA,IAAAC,WAAA,CAAAC,SAAA;IAAAC,KAAA;EAAA,IAAAH,GAAA;AAAA,IAAAI,qBAAA;AAAAC,QAAA,CAAAD,qBAAA;EAAAE,eAAA,EAAAA,CAAA,KAAAA,eAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,WAAA,EAAAA,CAAA,KAAAA,WAAA;EAAAC,mBAAA,EAAAA,CAAA,KAAAA,mBAAA;EAAAC,sBAAA,EAAAA,CAAA,KAAAA;AAAA;AAAAC,MAAA,CAAAC,OAAA,GAAAb,YAAkB,CAAAK,qBAAA;AAMX,IAAAS,YAAM,GAAAC,OAAA,CAAAC,OAAsB,CAC1B,OAAC;EAAAN,mBAAA,YAAAA,CAAA;IAQH,OAAS;EACd;AAGA,SAAAC,sBACKA,CAAAM,SAAA;EAGL,IAAAC,GAAM,GAAAR,mBAAS,EAAgB;EAC/BF,WAAW,CAAAW,GAAA,CAAAF,SAEX,GAAAV,eAAA,CAAMa,GAAA,CAAAF,GAAA,KAAAX,eACG,CAAMc,GAAA,CAAAH,GAAA,qBAAAI,GAAA;EACX,IAAAC,MAAA,GAAAhB,eAAmB,CAAAiB,GAAS,CAC5BN,GAAA;EACFK,MACG,CAAAJ,GAAA,CAAAF,SAAA,GAAAH,YAAA,CAAAW,OAAA,CAAAC,eAAA;IACP;MAEalB,WAAA,CAAAmB,MAAe,CAAAV,SAAgB,GAAAM,MAA2C,CAAAI,MAAA,CAAAV,SAAA;IACrF;EACA;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
const isEqualSubsetShallow = (a, b, opts) => {
|
|
2
|
+
if (b == null || a == null) return a === b;
|
|
3
|
+
if (typeof a != typeof b) return !1;
|
|
4
|
+
if (typeof b == "object") {
|
|
5
|
+
for (const key in b) {
|
|
6
|
+
const compare = opts?.keyComparators?.[key];
|
|
7
|
+
if (compare ? !compare(a[key], b[key]) : b[key] !== a[key]) return !1;
|
|
8
|
+
}
|
|
9
|
+
return !0;
|
|
10
|
+
}
|
|
11
|
+
return a === b;
|
|
12
|
+
};
|
|
13
|
+
export { isEqualSubsetShallow };
|
|
14
|
+
//# sourceMappingURL=comparators.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isEqualSubsetShallow","a","b","opts","key","compare","keyComparators"],"sources":["../../src/comparators.tsx"],"sourcesContent":[null],"mappings":"AAAO,MAAMA,oBAAA,GAAuBA,CAClCC,CAAA,EACAC,CAAA,EACAC,IAAA,KACG;EACH,IAAID,CAAA,IAAK,QAAQD,CAAA,IAAK,MAAM,OAAOA,CAAA,KAAMC,CAAA;EACzC,IAAI,OAAOD,CAAA,IAAM,OAAOC,CAAA,EAAG,OAAO;EAClC,IAAI,OAAOA,CAAA,IAAM,UAAU;IACzB,WAAWE,GAAA,IAAOF,CAAA,EAAG;MACnB,MAAMG,OAAA,GAAUF,IAAA,EAAMG,cAAA,GAAiBF,GAAG;MAC1C,IAAIC,OAAA,GAAU,CAACA,OAAA,CAAQJ,CAAA,CAAEG,GAAG,GAAGF,CAAA,CAAEE,GAAG,CAAC,IAAIF,CAAA,CAAEE,GAAG,MAAMH,CAAA,CAAEG,GAAG,GACvD,OAAO;IAEX;IACA,OAAO;EACT;EACA,OAAOH,CAAA,KAAMC,CAAA;AACf","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
function _type_of(obj) {
|
|
2
|
+
"@swc/helpers - typeof";
|
|
3
|
+
|
|
4
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
5
|
+
}
|
|
6
|
+
var isEqualSubsetShallow = function (a, b, opts) {
|
|
7
|
+
if (b == null || a == null) return a === b;
|
|
8
|
+
if ((typeof a > "u" ? "undefined" : _type_of(a)) !== (typeof b > "u" ? "undefined" : _type_of(b))) return !1;
|
|
9
|
+
if ((typeof b > "u" ? "undefined" : _type_of(b)) === "object") {
|
|
10
|
+
for (var key in b) {
|
|
11
|
+
var _opts_keyComparators,
|
|
12
|
+
compare = opts == null || (_opts_keyComparators = opts.keyComparators) === null || _opts_keyComparators === void 0 ? void 0 : _opts_keyComparators[key];
|
|
13
|
+
if (compare ? !compare(a[key], b[key]) : b[key] !== a[key]) return !1;
|
|
14
|
+
}
|
|
15
|
+
return !0;
|
|
16
|
+
}
|
|
17
|
+
return a === b;
|
|
18
|
+
};
|
|
19
|
+
export { isEqualSubsetShallow };
|
|
20
|
+
//# sourceMappingURL=comparators.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_type_of","obj","Symbol","constructor","isEqualSubsetShallow","a","b","opts","key","_opts_keyComparators","compare","keyComparators"],"sources":["../../src/comparators.tsx"],"sourcesContent":[null],"mappings":"AAAO,SAAMA,SAAAC,GAAA;EAKX,uBAAsB;;EACtB,OAAIA,GAAA,IAAO,OAAMC,MAAU,MAAO,IAAAD,GAAA,CAAAE,WAAA,KAAAD,MAAA,qBAAAD,GAAA;AAClC;AACE,IAAAG,oBAAkB,GAAG,SAAAA,CAAAC,CAAA,EAAAC,CAAA,EAAAC,IAAA;EACnB,IAAAD,CAAA,QAAM,IAAAD,CAAA,IAAU,IAAM,SAAAA,CAAA,KAAAC,CAAA;EACtB,YAAID,CAAA,MAAW,cAAa,GAAGL,QAAM,CAAIK,CAAA,CAAE,OAAG,OAAWC,CAAA,uBAAAN,QAAA,CAAAM,CAAA;EACvD,YAAAA,CAAO,uBAAAN,QAAA,CAAAM,CAAA;IAEX,SAAAE,GAAA,IAAAF,CAAA;MACA,IAAAG,oBAAO;QAAAC,OAAA,GAAAH,IAAA,aAAAE,oBAAA,GAAAF,IAAA,CAAAI,cAAA,cAAAF,oBAAA,uBAAAA,oBAAA,CAAAD,GAAA;MACT,IAAAE,OAAA,IAAAA,OAAA,CAAAL,CAAA,CAAAG,GAAA,GAAAF,CAAA,CAAAE,GAAA,KAAAF,CAAA,CAAAE,GAAA,MAAAH,CAAA,CAAAG,GAAA,GACA,OAAa;IACf","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["configureOpts","configureUseStore","opts"],"sources":["../../src/configureUseStore.tsx"],"sourcesContent":[null],"mappings":"AAEO,IAAIA,aAAA,GAAgC,CAAC;AAErC,SAASC,kBAAkBC,IAAA,EAAsB;EACtDF,aAAA,GAAgBE,IAAA;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["configureOpts","configureUseStore","opts"],"sources":["../../src/configureUseStore.tsx"],"sourcesContent":[null],"mappings":"AAEO,IAAIA,aAAA,GAAgC,CAAC;AAErC,SAASC,kBAAkBC,IAAA,EAAsB;EACtDF,aAAA,GAAgBE,IAAA;AAClB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["UNWRAP_PROXY","Symbol","defaultOptions","once","selector"],"sources":["../../src/constants.tsx"],"sourcesContent":[null],"mappings":"AAAO,MAAMA,YAAA,GAAe,eAAAC,MAAA,CAAO;EAEtBC,cAAA,GAAiB;IAC5BC,IAAA,EAAM;IACNC,QAAA,EAAU;EACZ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["UNWRAP_PROXY","Symbol","defaultOptions","once","selector"],"sources":["../../src/constants.tsx"],"sourcesContent":[null],"mappings":"AAAO,IAAAA,YAAM,kBAAeC,MAAA;EAAOC,cAEtB;IACXC,IAAA,EAAM;IACNC,QAAA,EAAU;EACZ","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["compare","comparator","target","propertyKey","_comparators"],"sources":["../../src/decorators.tsx"],"sourcesContent":[null],"mappings":"AAEO,SAASA,QAAQC,UAAA,EAA0B;EAChD,OAAO,CAACC,MAAA,EAAaC,WAAA,KAA6B;IAChDD,MAAA,CAAOE,YAAA,GAAkBF,MAAA,CAAOE,YAAA,IAAmB,CAAC,GACpDF,MAAA,CAAOE,YAAA,CAAgBD,WAAW,IAAIF,UAAA;EACxC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["compare","comparator","target","propertyKey","_comparators"],"sources":["../../src/decorators.tsx"],"sourcesContent":[null],"mappings":"AAEO,SAASA,QAAQC,UAAA,EAA0B;EAChD,OAAO,UAAcC,MAAA,EAAAC,WAA6B;IAChDD,MAAA,CAAOE,YAAA,GAAkBF,MAAA,CAAOE,YAAA,IAAmB,CAAC,GACpDF,MAAA,CAAOE,YAAA,CAAgBD,WAAW,IAAIF,UAAA;EACxC;AACF","ignoreList":[]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { simpleHash } from "@hanzogui/simple-hash";
|
|
2
|
+
function getStoreUid(Constructor, props) {
|
|
3
|
+
return simpleHash(`${Constructor}${props ? typeof props == "string" ? props : JSON.stringify(props) : ""}`, "strict");
|
|
4
|
+
}
|
|
5
|
+
const UNWRAP_STORE_INFO = /* @__PURE__ */Symbol("UNWRAP_STORE_INFO"),
|
|
6
|
+
cache = /* @__PURE__ */new Map();
|
|
7
|
+
function getStoreDescriptors(storeInstance) {
|
|
8
|
+
const proto = Object.getPrototypeOf(storeInstance),
|
|
9
|
+
instanceDescriptors = Object.getOwnPropertyDescriptors(storeInstance),
|
|
10
|
+
descriptors = {
|
|
11
|
+
...Object.getOwnPropertyDescriptors(proto),
|
|
12
|
+
...instanceDescriptors
|
|
13
|
+
};
|
|
14
|
+
return delete descriptors.constructor, descriptors;
|
|
15
|
+
}
|
|
16
|
+
function get(_, b) {
|
|
17
|
+
return _;
|
|
18
|
+
}
|
|
19
|
+
function simpleStr(arg) {
|
|
20
|
+
return process.env.NODE_ENV === "development" ? typeof arg == "function" ? "fn" : typeof arg == "string" ? `"${arg}"` : arg && (typeof arg != "object" ? arg : Array.isArray(arg) ? "[...]" : "{...}") : arg;
|
|
21
|
+
}
|
|
22
|
+
function getStoreDebugInfo(store) {
|
|
23
|
+
return store[UNWRAP_STORE_INFO] ?? cache.get(getStoreUid(store.constructor, store.props));
|
|
24
|
+
}
|
|
25
|
+
export { UNWRAP_STORE_INFO, cache, get, getStoreDebugInfo, getStoreDescriptors, getStoreUid, simpleStr };
|
|
26
|
+
//# sourceMappingURL=helpers.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["simpleHash","getStoreUid","Constructor","props","JSON","stringify","UNWRAP_STORE_INFO","Symbol","cache","Map","getStoreDescriptors","storeInstance","proto","Object","getPrototypeOf","instanceDescriptors","getOwnPropertyDescriptors","descriptors","constructor","get","_","b","simpleStr","arg","process","env","NODE_ENV","Array","isArray","getStoreDebugInfo","store"],"sources":["../../src/helpers.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAIpB,SAASC,YAAYC,WAAA,EAAkBC,KAAA,EAA+B;EAC3E,OAAOH,UAAA,CACL,GAAGE,WAAW,GACXC,KAAA,GAAa,OAAOA,KAAA,IAAU,WAAWA,KAAA,GAAQC,IAAA,CAAKC,SAAA,CAAUF,KAAK,IAA7D,EACX,IACA,QACF;AACF;AAEO,MAAMG,iBAAA,GAAoB,eAAAC,MAAA,CAAO,mBAAmB;EAC9CC,KAAA,GAAQ,mBAAIC,GAAA,CAAuB;AAEzC,SAASC,oBAAoBC,aAAA,EAAoB;EACtD,MAAMC,KAAA,GAAQC,MAAA,CAAOC,cAAA,CAAeH,aAAa;IAC3CI,mBAAA,GAAsBF,MAAA,CAAOG,yBAAA,CAA0BL,aAAa;IAEpEM,WAAA,GAAc;MAClB,GAFuBJ,MAAA,CAAOG,yBAAA,CAA0BJ,KAAK;MAG7D,GAAGG;IACL;EAEA,cAAOE,WAAA,CAAYC,WAAA,EACZD,WAAA;AACT;AAEO,SAASE,IAAOC,CAAA,EAAMC,CAAA,EAAyD;EACpF,OAAOD,CAAA;AACT;AAEO,SAASE,UAAUC,GAAA,EAAU;EAClC,OAAIC,OAAA,CAAQC,GAAA,CAAIC,QAAA,KAAa,gBACpB,OAAOH,GAAA,IAAQ,aAClB,OACA,OAAOA,GAAA,IAAQ,WACb,IAAIA,GAAG,MACNA,GAAA,KAEC,OAAOA,GAAA,IAAQ,WACbA,GAAA,GACAI,KAAA,CAAMC,OAAA,CAAQL,GAAG,IACf,UACA,WAEPA,GAAA;AACT;AAGO,SAASM,kBAAkBC,KAAA,EAAY;EAC5C,OACEA,KAAA,CAAMxB,iBAAiB,KAAKE,KAAA,CAAMW,GAAA,CAAIlB,WAAA,CAAY6B,KAAA,CAAMZ,WAAA,EAAaY,KAAA,CAAM3B,KAAK,CAAC;AAErF","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { simpleHash } from "@hanzogui/simple-hash";
|
|
2
|
+
function _type_of(obj) {
|
|
3
|
+
"@swc/helpers - typeof";
|
|
4
|
+
|
|
5
|
+
return obj && typeof Symbol < "u" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
6
|
+
}
|
|
7
|
+
function getStoreUid(Constructor, props) {
|
|
8
|
+
return simpleHash(`${Constructor}${props ? typeof props == "string" ? props : JSON.stringify(props) : ""}`, "strict");
|
|
9
|
+
}
|
|
10
|
+
var UNWRAP_STORE_INFO = /* @__PURE__ */Symbol("UNWRAP_STORE_INFO"),
|
|
11
|
+
cache = /* @__PURE__ */new Map();
|
|
12
|
+
function getStoreDescriptors(storeInstance) {
|
|
13
|
+
var proto = Object.getPrototypeOf(storeInstance),
|
|
14
|
+
instanceDescriptors = Object.getOwnPropertyDescriptors(storeInstance),
|
|
15
|
+
protoDescriptors = Object.getOwnPropertyDescriptors(proto),
|
|
16
|
+
descriptors = {
|
|
17
|
+
...protoDescriptors,
|
|
18
|
+
...instanceDescriptors
|
|
19
|
+
};
|
|
20
|
+
return delete descriptors.constructor, descriptors;
|
|
21
|
+
}
|
|
22
|
+
function get(_, b) {
|
|
23
|
+
return _;
|
|
24
|
+
}
|
|
25
|
+
function simpleStr(arg) {
|
|
26
|
+
return process.env.NODE_ENV === "development" ? typeof arg == "function" ? "fn" : typeof arg == "string" ? `"${arg}"` : arg && ((typeof arg > "u" ? "undefined" : _type_of(arg)) !== "object" ? arg : Array.isArray(arg) ? "[...]" : "{...}") : arg;
|
|
27
|
+
}
|
|
28
|
+
function getStoreDebugInfo(store) {
|
|
29
|
+
var _store_UNWRAP_STORE_INFO;
|
|
30
|
+
return (_store_UNWRAP_STORE_INFO = store[UNWRAP_STORE_INFO]) !== null && _store_UNWRAP_STORE_INFO !== void 0 ? _store_UNWRAP_STORE_INFO : cache.get(getStoreUid(store.constructor, store.props));
|
|
31
|
+
}
|
|
32
|
+
export { UNWRAP_STORE_INFO, cache, get, getStoreDebugInfo, getStoreDescriptors, getStoreUid, simpleStr };
|
|
33
|
+
//# sourceMappingURL=helpers.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["simpleHash","_type_of","obj","Symbol","constructor","getStoreUid","Constructor","props","JSON","stringify","UNWRAP_STORE_INFO","cache","Map","getStoreDescriptors","storeInstance","proto","Object","getPrototypeOf","instanceDescriptors","getOwnPropertyDescriptors","protoDescriptors","descriptors","get","_","b","simpleStr","arg","process","env","NODE_ENV","Array","isArray","getStoreDebugInfo","store","_store_UNWRAP_STORE_INFO"],"sources":["../../src/helpers.tsx"],"sourcesContent":[null],"mappings":"AAAA,SAASA,UAAA,QAAkB;AAIpB,SAASC,SAAAC,GAAY;EAC1B,uBAAO;;EAAA,OACFA,GAAA,WACAC,MAAa,UAAOD,GAAA,CAAAE,WAAU,KAAWD,MAAQ,WAAK,GAAU,OAAKD,GAA7D;AACX;AACA,SACFG,YAAAC,WAAA,EAAAC,KAAA;EACF,OAAAP,UAAA,IAAAM,WAAA,GAAAC,KAAA,UAAAA,KAAA,eAAAA,KAAA,GAAAC,IAAA,CAAAC,SAAA,CAAAF,KAAA;AAEO;AAGA,IAAAG,iBAAS,kBAAoBP,MAAoB;EAAAQ,KAAA,sBAAAC,GAAA;AACtD,SAAMC,mBAAeA,CAAAC,aAAe;EAGhB,IAClBC,KAFuB,GAAOC,MAAA,CAAAC,cAAA,CAAAH,aAA+B;IAAAI,mBAAA,GAAAF,MAAA,CAAAG,yBAAA,CAAAL,aAAA;IAAAM,gBAAA,GAAAJ,MAAA,CAAAG,yBAAA,CAAAJ,KAAA;IAAAM,WAAA;MAG7D,GAAGD,gBAAA;MACL,GAAAF;IAEA;EAEF,cAAAG,WAAA,CAAAjB,WAAA,EAAAiB,WAAA;AAEO;AACL,SAAOC,IAAAC,CAAA,EAAAC,CAAA;EACT,OAAAD,CAAA;AAEO;AACL,SAAIE,SAAQA,CAAAC,GAAI;EAclB,OAAAC,OAAA,CAAAC,GAAA,CAAAC,QAAA,4BAAAH,GAAA,+BAAAA,GAAA,mBAAAA,GAAA,MAAAA,GAAA,aAAAA,GAAA,uBAAAzB,QAAA,CAAAyB,GAAA,kBAAAA,GAAA,GAAAI,KAAA,CAAAC,OAAA,CAAAL,GAAA,yBAAAA,GAAA;AAGO;AACL,SACEM,iBAAMA,CAAAC,KAAiB;EAE3B,IAAAC,wBAAA","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./useStore.mjs";
|
|
2
|
+
import { configureUseStore } from "./configureUseStore.mjs";
|
|
3
|
+
export * from "./interfaces.mjs";
|
|
4
|
+
export * from "./observe.mjs";
|
|
5
|
+
import { UNWRAP_PROXY } from "./constants.mjs";
|
|
6
|
+
export * from "./comparators.mjs";
|
|
7
|
+
export * from "./decorators.mjs";
|
|
8
|
+
class Store {
|
|
9
|
+
constructor(props) {
|
|
10
|
+
this.props = props;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export { Store, UNWRAP_PROXY, configureUseStore };
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["configureUseStore","UNWRAP_PROXY","Store","constructor","props"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,SAASA,iBAAA,QAAyB;AAClC,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAAoB;AAC7B,cAAc;AACd,cAAc;AAGP,MAAMC,KAAA,CAAyC;EACpDC,YAAmBC,KAAA,EAAc;IAAd,KAAAA,KAAA,GAAAA,KAAA;EAAe;AACpC","ignoreList":[]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from "./useStore.mjs";
|
|
2
|
+
import { configureUseStore } from "./configureUseStore.mjs";
|
|
3
|
+
export * from "./interfaces.mjs";
|
|
4
|
+
export * from "./observe.mjs";
|
|
5
|
+
import { UNWRAP_PROXY } from "./constants.mjs";
|
|
6
|
+
export * from "./comparators.mjs";
|
|
7
|
+
export * from "./decorators.mjs";
|
|
8
|
+
class Store {
|
|
9
|
+
constructor(props) {
|
|
10
|
+
this.props = props;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export { Store, UNWRAP_PROXY, configureUseStore };
|
|
14
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["configureUseStore","UNWRAP_PROXY","Store","constructor","props"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,SAASA,iBAAA,QAAyB;AAClC,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAAoB;AAC7B,cAAc;AACd,cAAc;AAGP,MAAMC,KAAA,CAAyC;EACpDC,YAAmBC,KAAA,EAAc;IAAd,KAAAA,KAAA,GAAAA,KAAA;EAAe;AACpC","ignoreList":[]}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export * from "./useStore.native.js";
|
|
2
|
+
import { configureUseStore } from "./configureUseStore.native.js";
|
|
3
|
+
export * from "./interfaces.native.js";
|
|
4
|
+
export * from "./observe.native.js";
|
|
5
|
+
import { UNWRAP_PROXY } from "./constants.native.js";
|
|
6
|
+
export * from "./comparators.native.js";
|
|
7
|
+
export * from "./decorators.native.js";
|
|
8
|
+
function _class_call_check(instance, Constructor) {
|
|
9
|
+
if (!(instance instanceof Constructor)) throw new TypeError("Cannot call a class as a function");
|
|
10
|
+
}
|
|
11
|
+
function _define_property(obj, key, value) {
|
|
12
|
+
return key in obj ? Object.defineProperty(obj, key, {
|
|
13
|
+
value,
|
|
14
|
+
enumerable: !0,
|
|
15
|
+
configurable: !0,
|
|
16
|
+
writable: !0
|
|
17
|
+
}) : obj[key] = value, obj;
|
|
18
|
+
}
|
|
19
|
+
var Store = function Store2(props) {
|
|
20
|
+
"use strict";
|
|
21
|
+
|
|
22
|
+
_class_call_check(this, Store2), _define_property(this, "props", void 0), this.props = props;
|
|
23
|
+
};
|
|
24
|
+
export { Store, UNWRAP_PROXY, configureUseStore };
|
|
25
|
+
//# sourceMappingURL=index.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["configureUseStore","UNWRAP_PROXY","_class_call_check","instance","Constructor","TypeError","_define_property","obj","key","value"],"sources":["../../src/index.ts"],"sourcesContent":[null],"mappings":"AAAA,cAAc;AACd,SAASA,iBAAA,QAAyB;AAClC,cAAc;AACd,cAAc;AACd,SAASC,YAAA,QAAoB;AAC7B,cAAc;AACd,cAAc;AAGP,SAAMC,iBAAyCA,CAAAC,QAAA,EAAAC,WAAA;EACpD,MAAAD,QAAmB,YAAcC,WAAA,GAAd,UAAAC,SAAA;AAAA;AACrB,SAAAC,iBAAAC,GAAA,EAAAC,GAAA,EAAAC,KAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { isEqualSubsetShallow } from "./comparators.mjs";
|
|
3
|
+
import { UNWRAP_PROXY } from "./constants.mjs";
|
|
4
|
+
import { trackStoresAccess } from "./useStore.mjs";
|
|
5
|
+
const logUpdate = process.env.NODE_ENV === "development" ? (fn, stores, last, next) => {
|
|
6
|
+
const getStoreLogName = store => `${(store[UNWRAP_PROXY] ?? store).constructor.name}${store.props?.id ? `:${store.props.id}` : ""}`,
|
|
7
|
+
storeNames = stores.map(getStoreLogName).join(", "),
|
|
8
|
+
name = `\u{1F311} \u25B6\uFE0F %c${fn.name} ${storeNames} () ${last} => ${next}`;
|
|
9
|
+
console.groupCollapsed(name, "color: tomato;"), console.groupCollapsed("trace >"), console.trace(), console.groupEnd(), console.info(" next", next), console.groupEnd();
|
|
10
|
+
} : null;
|
|
11
|
+
function observe(fn) {
|
|
12
|
+
let prev = getObserverValueAndStoresAccessed(fn),
|
|
13
|
+
disposeValue = null;
|
|
14
|
+
const subscribe = () => {
|
|
15
|
+
const stores = [...prev.storeInfos];
|
|
16
|
+
return subscribeToStores(stores, () => {
|
|
17
|
+
disposeValue?.();
|
|
18
|
+
const next = getObserverValueAndStoresAccessed(fn);
|
|
19
|
+
if (typeof next.value == "function") {
|
|
20
|
+
disposeValue = next.value, process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], "(fn)", "(fn)");
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
isEqualSubsetShallow(prev.storeInfos, next.storeInfos) && isEqualSubsetShallow(prev.value, next.value) || (process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], prev.value, next.value), prev = next, dispose(), dispose = subscribe());
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
let dispose = subscribe();
|
|
27
|
+
return {
|
|
28
|
+
dispose: () => {
|
|
29
|
+
dispose(), disposeValue?.();
|
|
30
|
+
},
|
|
31
|
+
getValue: () => prev.value
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
function useObserve(fn) {
|
|
35
|
+
const [state, setState] = React.useState(() => getObserverValueAndStoresAccessed(fn));
|
|
36
|
+
return React.useEffect(() => {
|
|
37
|
+
let dispose;
|
|
38
|
+
const unsub = subscribeToStores([...state.storeInfos], () => {
|
|
39
|
+
dispose?.();
|
|
40
|
+
const next = getObserverValueAndStoresAccessed(fn),
|
|
41
|
+
nextStoreInfos = [...next.storeInfos],
|
|
42
|
+
prevStoreInfos = [...state.storeInfos];
|
|
43
|
+
if (typeof next.value == "function") {
|
|
44
|
+
process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, "(fn)", "(fn)"), dispose = next.value;
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
setState(prev => isEqualSubsetShallow(prevStoreInfos, nextStoreInfos) && isEqualSubsetShallow(prev.value, next.value) ? prev : (process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, prev.value, next.value), next));
|
|
48
|
+
});
|
|
49
|
+
return () => {
|
|
50
|
+
unsub(), dispose?.();
|
|
51
|
+
};
|
|
52
|
+
}, [[...state.storeInfos].map(i => i.uid).join(",")]), state.value;
|
|
53
|
+
}
|
|
54
|
+
function getObserverValueAndStoresAccessed(selector) {
|
|
55
|
+
const storeInfos = /* @__PURE__ */new Set(),
|
|
56
|
+
dispose = trackStoresAccess(storeInfo => {
|
|
57
|
+
storeInfos.add(storeInfo);
|
|
58
|
+
}),
|
|
59
|
+
value = selector();
|
|
60
|
+
return dispose(), {
|
|
61
|
+
value,
|
|
62
|
+
storeInfos
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function subscribeToStores(storeInfos, onUpdate) {
|
|
66
|
+
const disposes = [];
|
|
67
|
+
let isUpdating = !1;
|
|
68
|
+
const onUpdateDebouncedWithoutTracking = () => {
|
|
69
|
+
isUpdating || (isUpdating = !0, queueMicrotask(() => {
|
|
70
|
+
try {
|
|
71
|
+
for (const storeInfo of storeInfos) storeInfo.disableTracking = !0;
|
|
72
|
+
onUpdate();
|
|
73
|
+
} finally {
|
|
74
|
+
isUpdating = !1;
|
|
75
|
+
for (const storeInfo of storeInfos) storeInfo.disableTracking = !1;
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
};
|
|
79
|
+
for (const storeInfo of storeInfos) disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
|
|
80
|
+
return () => {
|
|
81
|
+
disposes.forEach(x => x());
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
export { observe, useObserve };
|
|
85
|
+
//# sourceMappingURL=observe.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","isEqualSubsetShallow","UNWRAP_PROXY","trackStoresAccess","logUpdate","process","env","NODE_ENV","fn","stores","last","next","getStoreLogName","store","constructor","name","props","id","storeNames","map","join","console","groupCollapsed","trace","groupEnd","info","observe","prev","getObserverValueAndStoresAccessed","disposeValue","subscribe","storeInfos","subscribeToStores","value","dispose","getValue","useObserve","state","setState","useState","useEffect","unsub","nextStoreInfos","prevStoreInfos","i","uid","selector","Set","storeInfo","add","onUpdate","disposes","isUpdating","onUpdateDebouncedWithoutTracking","queueMicrotask","disableTracking","push","forEach","x"],"sources":["../../src/observe.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { isEqualSubsetShallow } from "./comparators.native.js";
|
|
3
|
+
import { UNWRAP_PROXY } from "./constants.native.js";
|
|
4
|
+
import { trackStoresAccess } from "./useStore.native.js";
|
|
5
|
+
var logUpdate = process.env.NODE_ENV === "development" ? function (fn, stores, last, next) {
|
|
6
|
+
var getStoreLogName = function (store) {
|
|
7
|
+
var _store_props,
|
|
8
|
+
_store_UNWRAP_PROXY,
|
|
9
|
+
str = (_store_UNWRAP_PROXY = store[UNWRAP_PROXY]) !== null && _store_UNWRAP_PROXY !== void 0 ? _store_UNWRAP_PROXY : store;
|
|
10
|
+
return `${str.constructor.name}${!((_store_props = store.props) === null || _store_props === void 0) && _store_props.id ? `:${store.props.id}` : ""}`;
|
|
11
|
+
},
|
|
12
|
+
storeNames = stores.map(getStoreLogName).join(", "),
|
|
13
|
+
name = `\u{1F311} \u25B6\uFE0F %c${fn.name} ${storeNames} () ${last} => ${next}`;
|
|
14
|
+
console.groupCollapsed(name, "color: tomato;"), console.groupCollapsed("trace >"), console.trace(), console.groupEnd(), console.info(" next", next), console.groupEnd();
|
|
15
|
+
} : null;
|
|
16
|
+
function observe(fn) {
|
|
17
|
+
var prev = getObserverValueAndStoresAccessed(fn),
|
|
18
|
+
disposeValue = null,
|
|
19
|
+
subscribe = function () {
|
|
20
|
+
var stores = [...prev.storeInfos];
|
|
21
|
+
return subscribeToStores(stores, function () {
|
|
22
|
+
disposeValue?.();
|
|
23
|
+
var next = getObserverValueAndStoresAccessed(fn);
|
|
24
|
+
if (typeof next.value == "function") {
|
|
25
|
+
disposeValue = next.value, process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], "(fn)", "(fn)");
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
isEqualSubsetShallow(prev.storeInfos, next.storeInfos) && isEqualSubsetShallow(prev.value, next.value) || (process.env.NODE_ENV === "development" && logUpdate(fn, [...next.storeInfos], prev.value, next.value), prev = next, dispose(), dispose = subscribe());
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
dispose = subscribe();
|
|
32
|
+
return {
|
|
33
|
+
dispose: function () {
|
|
34
|
+
dispose(), disposeValue?.();
|
|
35
|
+
},
|
|
36
|
+
getValue: function () {
|
|
37
|
+
return prev.value;
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
function useObserve(fn) {
|
|
42
|
+
var [state, setState] = React.useState(function () {
|
|
43
|
+
return getObserverValueAndStoresAccessed(fn);
|
|
44
|
+
});
|
|
45
|
+
return React.useEffect(function () {
|
|
46
|
+
var dispose,
|
|
47
|
+
unsub = subscribeToStores([...state.storeInfos], function () {
|
|
48
|
+
dispose?.();
|
|
49
|
+
var next = getObserverValueAndStoresAccessed(fn),
|
|
50
|
+
nextStoreInfos = [...next.storeInfos],
|
|
51
|
+
prevStoreInfos = [...state.storeInfos];
|
|
52
|
+
if (typeof next.value == "function") {
|
|
53
|
+
process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, "(fn)", "(fn)"), dispose = next.value;
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
setState(function (prev) {
|
|
57
|
+
return isEqualSubsetShallow(prevStoreInfos, nextStoreInfos) && isEqualSubsetShallow(prev.value, next.value) ? prev : (process.env.NODE_ENV === "development" && logUpdate(fn, nextStoreInfos, prev.value, next.value), next);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
return function () {
|
|
61
|
+
unsub(), dispose?.();
|
|
62
|
+
};
|
|
63
|
+
}, [[...state.storeInfos].map(function (i) {
|
|
64
|
+
return i.uid;
|
|
65
|
+
}).join(",")]), state.value;
|
|
66
|
+
}
|
|
67
|
+
function getObserverValueAndStoresAccessed(selector) {
|
|
68
|
+
var storeInfos = /* @__PURE__ */new Set(),
|
|
69
|
+
dispose = trackStoresAccess(function (storeInfo) {
|
|
70
|
+
storeInfos.add(storeInfo);
|
|
71
|
+
}),
|
|
72
|
+
value = selector();
|
|
73
|
+
return dispose(), {
|
|
74
|
+
value,
|
|
75
|
+
storeInfos
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function subscribeToStores(storeInfos, onUpdate) {
|
|
79
|
+
var disposes = [],
|
|
80
|
+
isUpdating = !1,
|
|
81
|
+
onUpdateDebouncedWithoutTracking = function () {
|
|
82
|
+
isUpdating || (isUpdating = !0, queueMicrotask(function () {
|
|
83
|
+
try {
|
|
84
|
+
var _iteratorNormalCompletion2 = !0,
|
|
85
|
+
_didIteratorError2 = !1,
|
|
86
|
+
_iteratorError2 = void 0;
|
|
87
|
+
try {
|
|
88
|
+
for (var _iterator2 = storeInfos[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = !0) {
|
|
89
|
+
var storeInfo2 = _step2.value;
|
|
90
|
+
storeInfo2.disableTracking = !0;
|
|
91
|
+
}
|
|
92
|
+
} catch (err) {
|
|
93
|
+
_didIteratorError2 = !0, _iteratorError2 = err;
|
|
94
|
+
} finally {
|
|
95
|
+
try {
|
|
96
|
+
!_iteratorNormalCompletion2 && _iterator2.return != null && _iterator2.return();
|
|
97
|
+
} finally {
|
|
98
|
+
if (_didIteratorError2) throw _iteratorError2;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
onUpdate();
|
|
102
|
+
} finally {
|
|
103
|
+
isUpdating = !1;
|
|
104
|
+
var _iteratorNormalCompletion1 = !0,
|
|
105
|
+
_didIteratorError1 = !1,
|
|
106
|
+
_iteratorError1 = void 0;
|
|
107
|
+
try {
|
|
108
|
+
for (var _iterator1 = storeInfos[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = !0) {
|
|
109
|
+
var storeInfo1 = _step1.value;
|
|
110
|
+
storeInfo1.disableTracking = !1;
|
|
111
|
+
}
|
|
112
|
+
} catch (err) {
|
|
113
|
+
_didIteratorError1 = !0, _iteratorError1 = err;
|
|
114
|
+
} finally {
|
|
115
|
+
try {
|
|
116
|
+
!_iteratorNormalCompletion1 && _iterator1.return != null && _iterator1.return();
|
|
117
|
+
} finally {
|
|
118
|
+
if (_didIteratorError1) throw _iteratorError1;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}));
|
|
123
|
+
},
|
|
124
|
+
_iteratorNormalCompletion = !0,
|
|
125
|
+
_didIteratorError = !1,
|
|
126
|
+
_iteratorError = void 0;
|
|
127
|
+
try {
|
|
128
|
+
for (var _iterator = storeInfos[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = !0) {
|
|
129
|
+
var storeInfo = _step.value;
|
|
130
|
+
disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
|
|
131
|
+
}
|
|
132
|
+
} catch (err) {
|
|
133
|
+
_didIteratorError = !0, _iteratorError = err;
|
|
134
|
+
} finally {
|
|
135
|
+
try {
|
|
136
|
+
!_iteratorNormalCompletion && _iterator.return != null && _iterator.return();
|
|
137
|
+
} finally {
|
|
138
|
+
if (_didIteratorError) throw _iteratorError;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return function () {
|
|
142
|
+
disposes.forEach(function (x) {
|
|
143
|
+
return x();
|
|
144
|
+
});
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export { observe, useObserve };
|
|
148
|
+
//# sourceMappingURL=observe.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","isEqualSubsetShallow","UNWRAP_PROXY","trackStoresAccess","logUpdate","process","env","NODE_ENV","fn","stores","last","next","getStoreLogName","store","_store_props","_store_UNWRAP_PROXY","str","constructor","name","props","id","storeNames","map","join","console","groupCollapsed","trace","groupEnd","info","observe","prev","getObserverValueAndStoresAccessed","disposeValue","subscribe","storeInfos","subscribeToStores","value","dispose","getValue","useObserve","state","setState","useState","useEffect","unsub","nextStoreInfos","prevStoreInfos","i","uid","selector","Set","storeInfo","add"],"sources":["../../src/observe.tsx"],"sourcesContent":[null],"mappings":"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","ignoreList":[]}
|