@hanzogui/use-store 8.3.0 → 8.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/comparators.js +21 -0
- package/dist/cjs/comparators.js.map +1 -0
- package/dist/cjs/configureUseStore.js +9 -0
- package/dist/cjs/configureUseStore.js.map +1 -0
- package/dist/cjs/constants.js +9 -0
- package/dist/cjs/constants.js.map +1 -0
- package/dist/cjs/decorators.js +10 -0
- package/dist/cjs/decorators.js.map +1 -0
- package/dist/cjs/helpers.js +50 -0
- package/dist/cjs/helpers.js.map +1 -0
- package/dist/cjs/index.js +21 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/interfaces.js +3 -0
- package/dist/cjs/interfaces.js.map +1 -0
- package/dist/cjs/observe.js +141 -0
- package/dist/cjs/observe.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/useStore.js +574 -0
- package/dist/cjs/useStore.js.map +1 -0
- package/dist/cjs/useStoreDebug.js +41 -0
- package/dist/cjs/useStoreDebug.js.map +1 -0
- package/dist/esm/comparators.js +17 -0
- package/dist/esm/comparators.js.map +1 -0
- package/dist/esm/configureUseStore.js +5 -0
- package/dist/esm/configureUseStore.js.map +1 -0
- package/dist/esm/constants.js +6 -0
- package/dist/esm/constants.js.map +1 -0
- package/dist/esm/decorators.js +7 -0
- package/dist/esm/decorators.js.map +1 -0
- package/dist/esm/helpers.js +42 -0
- package/dist/esm/helpers.js.map +1 -0
- package/dist/esm/index.js +13 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces.js +2 -0
- package/dist/esm/interfaces.js.map +1 -0
- package/dist/esm/observe.js +136 -0
- package/dist/esm/observe.js.map +1 -0
- package/dist/esm/useStore.js +556 -0
- package/dist/esm/useStore.js.map +1 -0
- package/dist/esm/useStoreDebug.js +34 -0
- package/dist/esm/useStoreDebug.js.map +1 -0
- package/package.json +18 -18
- package/src/configureUseStore.tsx +1 -1
- package/src/helpers.tsx +1 -1
- package/src/index.ts +7 -7
- package/src/interfaces.tsx +1 -1
- package/src/observe.tsx +4 -4
- package/src/useStore.tsx +6 -6
- package/src/useStoreDebug.tsx +1 -1
- package/types/comparators.d.ts +6 -0
- package/types/comparators.d.ts.map +1 -0
- package/types/configureUseStore.d.ts +4 -0
- package/types/configureUseStore.d.ts.map +1 -0
- package/types/constants.d.ts +6 -0
- package/types/constants.d.ts.map +1 -0
- package/types/decorators.d.ts +3 -0
- package/types/decorators.d.ts.map +1 -0
- package/types/helpers.d.ts +11 -0
- package/types/helpers.d.ts.map +1 -0
- package/types/index.d.ts +12 -0
- package/types/index.d.ts.map +1 -0
- package/types/interfaces.d.ts +43 -0
- package/types/interfaces.d.ts.map +1 -0
- package/types/observe.d.ts +6 -0
- package/types/observe.d.ts.map +1 -0
- package/types/useStore.d.ts +26 -0
- package/types/useStore.d.ts.map +1 -0
- package/types/useStoreDebug.d.ts +7 -0
- package/types/useStoreDebug.d.ts.map +1 -0
- package/dist/cjs/comparators.cjs +0 -41
- package/dist/cjs/comparators.native.js +0 -50
- package/dist/cjs/comparators.native.js.map +0 -1
- package/dist/cjs/configureUseStore.cjs +0 -32
- package/dist/cjs/configureUseStore.native.js +0 -35
- package/dist/cjs/configureUseStore.native.js.map +0 -1
- package/dist/cjs/constants.cjs +0 -33
- package/dist/cjs/constants.native.js +0 -36
- package/dist/cjs/constants.native.js.map +0 -1
- package/dist/cjs/decorators.cjs +0 -33
- package/dist/cjs/decorators.native.js +0 -36
- package/dist/cjs/decorators.native.js.map +0 -1
- package/dist/cjs/helpers.cjs +0 -62
- package/dist/cjs/helpers.native.js +0 -71
- package/dist/cjs/helpers.native.js.map +0 -1
- package/dist/cjs/index.cjs +0 -43
- package/dist/cjs/index.native.js +0 -65
- package/dist/cjs/index.native.js.map +0 -1
- package/dist/cjs/interfaces.cjs +0 -18
- package/dist/cjs/interfaces.native.js +0 -21
- package/dist/cjs/interfaces.native.js.map +0 -1
- package/dist/cjs/observe.cjs +0 -166
- package/dist/cjs/observe.native.js +0 -234
- package/dist/cjs/observe.native.js.map +0 -1
- package/dist/cjs/useStore.cjs +0 -467
- package/dist/cjs/useStore.native.js +0 -608
- package/dist/cjs/useStore.native.js.map +0 -1
- package/dist/cjs/useStoreDebug.cjs +0 -67
- package/dist/cjs/useStoreDebug.native.js +0 -71
- package/dist/cjs/useStoreDebug.native.js.map +0 -1
- package/dist/esm/comparators.mjs +0 -16
- package/dist/esm/comparators.mjs.map +0 -1
- package/dist/esm/comparators.native.js +0 -22
- package/dist/esm/comparators.native.js.map +0 -1
- package/dist/esm/configureUseStore.mjs +0 -6
- package/dist/esm/configureUseStore.mjs.map +0 -1
- package/dist/esm/configureUseStore.native.js +0 -6
- package/dist/esm/configureUseStore.native.js.map +0 -1
- package/dist/esm/constants.mjs +0 -7
- package/dist/esm/constants.mjs.map +0 -1
- package/dist/esm/constants.native.js +0 -7
- package/dist/esm/constants.native.js.map +0 -1
- package/dist/esm/decorators.mjs +0 -8
- package/dist/esm/decorators.mjs.map +0 -1
- package/dist/esm/decorators.native.js +0 -8
- package/dist/esm/decorators.native.js.map +0 -1
- package/dist/esm/helpers.mjs +0 -31
- package/dist/esm/helpers.mjs.map +0 -1
- package/dist/esm/helpers.native.js +0 -37
- package/dist/esm/helpers.native.js.map +0 -1
- package/dist/esm/index.mjs +0 -15
- package/dist/esm/index.mjs.map +0 -1
- package/dist/esm/index.native.js +0 -34
- package/dist/esm/index.native.js.map +0 -1
- package/dist/esm/interfaces.mjs +0 -2
- package/dist/esm/interfaces.mjs.map +0 -1
- package/dist/esm/interfaces.native.js +0 -2
- package/dist/esm/interfaces.native.js.map +0 -1
- package/dist/esm/observe.mjs +0 -129
- package/dist/esm/observe.mjs.map +0 -1
- package/dist/esm/observe.native.js +0 -194
- package/dist/esm/observe.native.js.map +0 -1
- package/dist/esm/useStore.mjs +0 -415
- package/dist/esm/useStore.mjs.map +0 -1
- package/dist/esm/useStore.native.js +0 -553
- package/dist/esm/useStore.native.js.map +0 -1
- package/dist/esm/useStoreDebug.mjs +0 -27
- package/dist/esm/useStoreDebug.mjs.map +0 -1
- package/dist/esm/useStoreDebug.native.js +0 -28
- package/dist/esm/useStoreDebug.native.js.map +0 -1
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isEqualSubsetShallow = void 0;
|
|
4
|
+
const isEqualSubsetShallow = (a, b, opts) => {
|
|
5
|
+
if (b == null || a == null)
|
|
6
|
+
return a === b;
|
|
7
|
+
if (typeof a !== typeof b)
|
|
8
|
+
return false;
|
|
9
|
+
if (typeof b === 'object') {
|
|
10
|
+
for (const key in b) {
|
|
11
|
+
const compare = opts?.keyComparators?.[key];
|
|
12
|
+
if (compare ? !compare(a[key], b[key]) : b[key] !== a[key]) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
return a === b;
|
|
19
|
+
};
|
|
20
|
+
exports.isEqualSubsetShallow = isEqualSubsetShallow;
|
|
21
|
+
//# sourceMappingURL=comparators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"comparators.js","sourceRoot":"","sources":["../../src/comparators.tsx"],"names":[],"mappings":";;;AAAO,MAAM,oBAAoB,GAAG,CAClC,CAAM,EACN,CAAM,EACN,IAA0E,EAC1E,EAAE;IACF,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI;QAAE,OAAO,CAAC,KAAK,CAAC,CAAA;IAC1C,IAAI,OAAO,CAAC,KAAK,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACvC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,OAAO,GAAG,IAAI,EAAE,cAAc,EAAE,CAAC,GAAG,CAAC,CAAA;YAC3C,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3D,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,CAAC,KAAK,CAAC,CAAA;AAChB,CAAC,CAAA;AAjBY,QAAA,oBAAoB,GAApB,oBAAoB,CAiBhC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.configureOpts = void 0;
|
|
4
|
+
exports.configureUseStore = configureUseStore;
|
|
5
|
+
exports.configureOpts = {};
|
|
6
|
+
function configureUseStore(opts) {
|
|
7
|
+
exports.configureOpts = opts;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=configureUseStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureUseStore.js","sourceRoot":"","sources":["../../src/configureUseStore.tsx"],"names":[],"mappings":";;;;AAEW,QAAA,aAAa,GAAmB,EAAE,CAAA;AAE7C,2BAAkC,IAAoB;IACpD,QAAA,aAAa,GAAG,IAAI,CAAA;AACtB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defaultOptions = exports.UNWRAP_PROXY = void 0;
|
|
4
|
+
exports.UNWRAP_PROXY = Symbol();
|
|
5
|
+
exports.defaultOptions = {
|
|
6
|
+
once: false,
|
|
7
|
+
selector: undefined,
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.tsx"],"names":[],"mappings":";;;AAAa,QAAA,YAAY,GAAG,MAAM,EAAE,CAAA;AAEvB,QAAA,cAAc,GAAG;IAC5B,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,SAAS;CACpB,CAAA"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.compare = compare;
|
|
4
|
+
function compare(comparator) {
|
|
5
|
+
return (target, propertyKey) => {
|
|
6
|
+
target['_comparators'] = target['_comparators'] || {};
|
|
7
|
+
target['_comparators'][propertyKey] = comparator;
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=decorators.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decorators.js","sourceRoot":"","sources":["../../src/decorators.tsx"],"names":[],"mappings":";;;AAEA,iBAAwB,UAAwB;IAC9C,OAAO,CAAC,MAAW,EAAE,WAAmB,EAAO,EAAE;QAC/C,MAAM,CAAC,cAAc,CAAC,GAAG,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACrD,MAAM,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,GAAG,UAAU,CAAA;IAClD,CAAC,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.cache = exports.UNWRAP_STORE_INFO = void 0;
|
|
4
|
+
exports.getStoreUid = getStoreUid;
|
|
5
|
+
exports.getStoreDescriptors = getStoreDescriptors;
|
|
6
|
+
exports.get = get;
|
|
7
|
+
exports.simpleStr = simpleStr;
|
|
8
|
+
exports.getStoreDebugInfo = getStoreDebugInfo;
|
|
9
|
+
const simple_hash_1 = require("@hanzogui/simple-hash");
|
|
10
|
+
function getStoreUid(Constructor, props) {
|
|
11
|
+
return (0, simple_hash_1.simpleHash)(`${Constructor}${!props ? '' : typeof props === 'string' ? props : JSON.stringify(props)}`, 'strict');
|
|
12
|
+
}
|
|
13
|
+
exports.UNWRAP_STORE_INFO = Symbol('UNWRAP_STORE_INFO');
|
|
14
|
+
exports.cache = new Map();
|
|
15
|
+
function getStoreDescriptors(storeInstance) {
|
|
16
|
+
const proto = Object.getPrototypeOf(storeInstance);
|
|
17
|
+
const instanceDescriptors = Object.getOwnPropertyDescriptors(storeInstance);
|
|
18
|
+
const protoDescriptors = Object.getOwnPropertyDescriptors(proto);
|
|
19
|
+
const descriptors = {
|
|
20
|
+
...protoDescriptors,
|
|
21
|
+
...instanceDescriptors,
|
|
22
|
+
};
|
|
23
|
+
// @ts-ignore
|
|
24
|
+
delete descriptors.constructor;
|
|
25
|
+
return descriptors;
|
|
26
|
+
}
|
|
27
|
+
function get(_, b) {
|
|
28
|
+
return _;
|
|
29
|
+
}
|
|
30
|
+
function simpleStr(arg) {
|
|
31
|
+
if (process.env.NODE_ENV === 'development') {
|
|
32
|
+
return typeof arg === 'function'
|
|
33
|
+
? 'fn'
|
|
34
|
+
: typeof arg === 'string'
|
|
35
|
+
? `"${arg}"`
|
|
36
|
+
: !arg
|
|
37
|
+
? arg
|
|
38
|
+
: typeof arg !== 'object'
|
|
39
|
+
? arg
|
|
40
|
+
: Array.isArray(arg)
|
|
41
|
+
? '[...]'
|
|
42
|
+
: `{...}`;
|
|
43
|
+
}
|
|
44
|
+
return arg;
|
|
45
|
+
}
|
|
46
|
+
// helper for debugging
|
|
47
|
+
function getStoreDebugInfo(store) {
|
|
48
|
+
return (store[exports.UNWRAP_STORE_INFO] ?? exports.cache.get(getStoreUid(store.constructor, store.props)));
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.tsx"],"names":[],"mappings":";;;;;;;;AAAA,uDAAkD;AAIlD,qBAA4B,WAAgB,EAAE,KAA6B;IACzE,OAAO,IAAA,wBAAU,EACf,GAAG,WAAW,GACZ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CACxE,EAAE,EACF,QAAQ,CACT,CAAA;AACH,CAAC;AAEY,QAAA,iBAAiB,GAAG,MAAM,CAAC,mBAAmB,CAAC,CAAA;AAC/C,QAAA,KAAK,GAAG,IAAI,GAAG,EAAqB,CAAA;AAEjD,6BAAoC,aAAkB;IACpD,MAAM,KAAK,GAAG,MAAM,CAAC,cAAc,CAAC,aAAa,CAAC,CAAA;IAClD,MAAM,mBAAmB,GAAG,MAAM,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAA;IAC3E,MAAM,gBAAgB,GAAG,MAAM,CAAC,yBAAyB,CAAC,KAAK,CAAC,CAAA;IAChE,MAAM,WAAW,GAAG;QAClB,GAAG,gBAAgB;QACnB,GAAG,mBAAmB;KACvB,CAAA;IACD,aAAa;IACb,OAAO,WAAW,CAAC,WAAW,CAAA;IAC9B,OAAO,WAAW,CAAA;AACpB,CAAC;AAED,aAAuB,CAAI,EAAE,CAAO;IAClC,OAAO,CAAQ,CAAA;AACjB,CAAC;AAED,mBAA0B,GAAQ;IAChC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;QAC3C,OAAO,OAAO,GAAG,KAAK,UAAU;YAC9B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ;gBACvB,CAAC,CAAC,IAAI,GAAG,GAAG;gBACZ,CAAC,CAAC,CAAC,GAAG;oBACJ,CAAC,CAAC,GAAG;oBACL,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ;wBACvB,CAAC,CAAC,GAAG;wBACL,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;4BAClB,CAAC,CAAC,OAAO;4BACT,CAAC,CAAC,OAAO,CAAA;IACrB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AACD,uBAAuB;AAEvB,2BAAkC,KAAU;IAC1C,OAAO,CACL,KAAK,CAAC,QAAA,iBAAiB,CAAC,IAAI,QAAA,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CACnF,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Store = exports.UNWRAP_PROXY = exports.configureUseStore = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
tslib_1.__exportStar(require("./useStore.js"), exports);
|
|
6
|
+
var configureUseStore_tsx_1 = require("./configureUseStore.js");
|
|
7
|
+
Object.defineProperty(exports, "configureUseStore", { enumerable: true, get: function () { return configureUseStore_tsx_1.configureUseStore; } });
|
|
8
|
+
tslib_1.__exportStar(require("./interfaces.js"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./observe.js"), exports);
|
|
10
|
+
var constants_tsx_1 = require("./constants.js");
|
|
11
|
+
Object.defineProperty(exports, "UNWRAP_PROXY", { enumerable: true, get: function () { return constants_tsx_1.UNWRAP_PROXY; } });
|
|
12
|
+
tslib_1.__exportStar(require("./comparators.js"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./decorators.js"), exports);
|
|
14
|
+
// to extend for prop types
|
|
15
|
+
class Store {
|
|
16
|
+
constructor(props) {
|
|
17
|
+
this.props = props;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
exports.Store = Store;
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,wDAA8B;AAC9B,gEAA2D;AAAlD,0HAAA,iBAAiB,OAAA;AAC1B,0DAAgC;AAChC,uDAA6B;AAC7B,gDAA8C;AAArC,6GAAA,YAAY,OAAA;AACrB,2DAAiC;AACjC,0DAAgC;AAEhC,2BAA2B;AAC3B;IACE,YAAmB,KAAY;qBAAZ,KAAK;IAAU,CAAC;CACpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.observe = observe;
|
|
4
|
+
exports.useObserve = useObserve;
|
|
5
|
+
const tslib_1 = require("tslib");
|
|
6
|
+
const react_1 = tslib_1.__importDefault(require("react"));
|
|
7
|
+
const comparators_tsx_1 = require("./comparators.js");
|
|
8
|
+
const constants_tsx_1 = require("./constants.js");
|
|
9
|
+
const useStore_tsx_1 = require("./useStore.js");
|
|
10
|
+
const logUpdate = process.env.NODE_ENV === 'development'
|
|
11
|
+
? (fn, stores, last, next) => {
|
|
12
|
+
const getStoreLogName = (store) => {
|
|
13
|
+
const str = store[constants_tsx_1.UNWRAP_PROXY] ?? store;
|
|
14
|
+
return `${str.constructor.name}${store.props?.id ? `:${store.props.id}` : ''}`;
|
|
15
|
+
};
|
|
16
|
+
const storeNames = stores.map(getStoreLogName).join(', ');
|
|
17
|
+
const name = `🌑 ▶️ %c${fn.name} ${storeNames} () ${last} => ${next}`;
|
|
18
|
+
console.groupCollapsed(name, 'color: tomato;');
|
|
19
|
+
console.groupCollapsed('trace >');
|
|
20
|
+
console.trace();
|
|
21
|
+
console.groupEnd();
|
|
22
|
+
console.info(' next', next);
|
|
23
|
+
console.groupEnd();
|
|
24
|
+
}
|
|
25
|
+
: null;
|
|
26
|
+
function observe(fn) {
|
|
27
|
+
let prev = getObserverValueAndStoresAccessed(fn);
|
|
28
|
+
let 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;
|
|
36
|
+
if (process.env.NODE_ENV === 'development') {
|
|
37
|
+
logUpdate(fn, [...next.storeInfos], '(fn)', '(fn)');
|
|
38
|
+
}
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if ((0, comparators_tsx_1.isEqualSubsetShallow)(prev.storeInfos, next.storeInfos) &&
|
|
42
|
+
(0, comparators_tsx_1.isEqualSubsetShallow)(prev.value, next.value)) {
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
if (process.env.NODE_ENV === 'development') {
|
|
46
|
+
logUpdate(fn, [...next.storeInfos], prev.value, next.value);
|
|
47
|
+
}
|
|
48
|
+
prev = next;
|
|
49
|
+
dispose();
|
|
50
|
+
dispose = subscribe();
|
|
51
|
+
});
|
|
52
|
+
};
|
|
53
|
+
let dispose = subscribe();
|
|
54
|
+
return {
|
|
55
|
+
dispose: () => {
|
|
56
|
+
dispose();
|
|
57
|
+
disposeValue?.();
|
|
58
|
+
},
|
|
59
|
+
getValue: () => prev.value,
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function useObserve(fn) {
|
|
63
|
+
const [state, setState] = react_1.default.useState(() => {
|
|
64
|
+
return getObserverValueAndStoresAccessed(fn);
|
|
65
|
+
});
|
|
66
|
+
react_1.default.useEffect(() => {
|
|
67
|
+
let dispose;
|
|
68
|
+
const unsub = subscribeToStores([...state.storeInfos], () => {
|
|
69
|
+
dispose?.();
|
|
70
|
+
const next = getObserverValueAndStoresAccessed(fn);
|
|
71
|
+
const nextStoreInfos = [...next.storeInfos];
|
|
72
|
+
const prevStoreInfos = [...state.storeInfos];
|
|
73
|
+
// return function === return disposable
|
|
74
|
+
if (typeof next.value === 'function') {
|
|
75
|
+
if (process.env.NODE_ENV === 'development') {
|
|
76
|
+
logUpdate(fn, nextStoreInfos, '(fn)', '(fn)');
|
|
77
|
+
}
|
|
78
|
+
dispose = next.value;
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
setState((prev) => {
|
|
82
|
+
if ((0, comparators_tsx_1.isEqualSubsetShallow)(prevStoreInfos, nextStoreInfos) &&
|
|
83
|
+
(0, comparators_tsx_1.isEqualSubsetShallow)(prev.value, next.value)) {
|
|
84
|
+
return prev;
|
|
85
|
+
}
|
|
86
|
+
if (process.env.NODE_ENV === 'development') {
|
|
87
|
+
logUpdate(fn, nextStoreInfos, prev.value, next.value);
|
|
88
|
+
}
|
|
89
|
+
return next;
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
return () => {
|
|
93
|
+
unsub();
|
|
94
|
+
dispose?.();
|
|
95
|
+
};
|
|
96
|
+
}, [[...state.storeInfos].map((i) => i.uid).join(',')]);
|
|
97
|
+
return state.value;
|
|
98
|
+
}
|
|
99
|
+
function getObserverValueAndStoresAccessed(selector) {
|
|
100
|
+
const storeInfos = new Set();
|
|
101
|
+
const dispose = (0, useStore_tsx_1.trackStoresAccess)((storeInfo) => {
|
|
102
|
+
storeInfos.add(storeInfo);
|
|
103
|
+
});
|
|
104
|
+
const value = selector();
|
|
105
|
+
dispose();
|
|
106
|
+
return {
|
|
107
|
+
value,
|
|
108
|
+
storeInfos,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function subscribeToStores(storeInfos, onUpdate) {
|
|
112
|
+
const disposes = [];
|
|
113
|
+
// wrap onUpdate to avoid waterfall calls + avoid tracking during onUpdate
|
|
114
|
+
let isUpdating = false;
|
|
115
|
+
const onUpdateDebouncedWithoutTracking = () => {
|
|
116
|
+
if (isUpdating)
|
|
117
|
+
return;
|
|
118
|
+
isUpdating = true;
|
|
119
|
+
queueMicrotask(() => {
|
|
120
|
+
try {
|
|
121
|
+
for (const storeInfo of storeInfos) {
|
|
122
|
+
storeInfo.disableTracking = true;
|
|
123
|
+
}
|
|
124
|
+
onUpdate();
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
isUpdating = false;
|
|
128
|
+
for (const storeInfo of storeInfos) {
|
|
129
|
+
storeInfo.disableTracking = false;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
for (const storeInfo of storeInfos) {
|
|
135
|
+
disposes.push(storeInfo.subscribe(onUpdateDebouncedWithoutTracking));
|
|
136
|
+
}
|
|
137
|
+
return () => {
|
|
138
|
+
disposes.forEach((x) => x());
|
|
139
|
+
};
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=observe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/observe.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{ "type": "commonjs" }
|