@hanzogui/use-store 8.3.1 → 8.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/dist/cjs/comparators.js +21 -0
  2. package/dist/cjs/comparators.js.map +1 -0
  3. package/dist/cjs/configureUseStore.js +9 -0
  4. package/dist/cjs/configureUseStore.js.map +1 -0
  5. package/dist/cjs/constants.js +9 -0
  6. package/dist/cjs/constants.js.map +1 -0
  7. package/dist/cjs/decorators.js +10 -0
  8. package/dist/cjs/decorators.js.map +1 -0
  9. package/dist/cjs/helpers.js +50 -0
  10. package/dist/cjs/helpers.js.map +1 -0
  11. package/dist/cjs/index.js +21 -0
  12. package/dist/cjs/index.js.map +1 -0
  13. package/dist/cjs/interfaces.js +3 -0
  14. package/dist/cjs/interfaces.js.map +1 -0
  15. package/dist/cjs/observe.js +141 -0
  16. package/dist/cjs/observe.js.map +1 -0
  17. package/dist/cjs/package.json +1 -0
  18. package/dist/cjs/useStore.js +574 -0
  19. package/dist/cjs/useStore.js.map +1 -0
  20. package/dist/cjs/useStoreDebug.js +41 -0
  21. package/dist/cjs/useStoreDebug.js.map +1 -0
  22. package/dist/esm/comparators.js +17 -0
  23. package/dist/esm/comparators.js.map +1 -0
  24. package/dist/esm/configureUseStore.js +5 -0
  25. package/dist/esm/configureUseStore.js.map +1 -0
  26. package/dist/esm/constants.js +6 -0
  27. package/dist/esm/constants.js.map +1 -0
  28. package/dist/esm/decorators.js +7 -0
  29. package/dist/esm/decorators.js.map +1 -0
  30. package/dist/esm/helpers.js +42 -0
  31. package/dist/esm/helpers.js.map +1 -0
  32. package/dist/esm/index.js +13 -14
  33. package/dist/esm/index.js.map +1 -1
  34. package/dist/esm/interfaces.js +2 -0
  35. package/dist/esm/interfaces.js.map +1 -0
  36. package/dist/esm/observe.js +136 -0
  37. package/dist/esm/observe.js.map +1 -0
  38. package/dist/esm/useStore.js +556 -0
  39. package/dist/esm/useStore.js.map +1 -0
  40. package/dist/esm/useStoreDebug.js +34 -0
  41. package/dist/esm/useStoreDebug.js.map +1 -0
  42. package/package.json +23 -18
  43. package/src/configureUseStore.tsx +1 -1
  44. package/src/helpers.tsx +1 -1
  45. package/src/index.ts +7 -7
  46. package/src/interfaces.tsx +1 -1
  47. package/src/observe.tsx +4 -4
  48. package/src/useStore.tsx +6 -6
  49. package/src/useStoreDebug.tsx +1 -1
  50. package/types/comparators.d.ts +6 -0
  51. package/types/comparators.d.ts.map +1 -0
  52. package/types/configureUseStore.d.ts +4 -0
  53. package/types/configureUseStore.d.ts.map +1 -0
  54. package/types/constants.d.ts +6 -0
  55. package/types/constants.d.ts.map +1 -0
  56. package/types/decorators.d.ts +3 -0
  57. package/types/decorators.d.ts.map +1 -0
  58. package/types/helpers.d.ts +11 -0
  59. package/types/helpers.d.ts.map +1 -0
  60. package/types/index.d.ts +12 -0
  61. package/types/index.d.ts.map +1 -0
  62. package/types/interfaces.d.ts +43 -0
  63. package/types/interfaces.d.ts.map +1 -0
  64. package/types/observe.d.ts +6 -0
  65. package/types/observe.d.ts.map +1 -0
  66. package/types/useStore.d.ts +26 -0
  67. package/types/useStore.d.ts.map +1 -0
  68. package/types/useStoreDebug.d.ts +7 -0
  69. package/types/useStoreDebug.d.ts.map +1 -0
  70. package/dist/cjs/comparators.cjs +0 -41
  71. package/dist/cjs/comparators.native.js +0 -50
  72. package/dist/cjs/comparators.native.js.map +0 -1
  73. package/dist/cjs/configureUseStore.cjs +0 -32
  74. package/dist/cjs/configureUseStore.native.js +0 -35
  75. package/dist/cjs/configureUseStore.native.js.map +0 -1
  76. package/dist/cjs/constants.cjs +0 -33
  77. package/dist/cjs/constants.native.js +0 -36
  78. package/dist/cjs/constants.native.js.map +0 -1
  79. package/dist/cjs/decorators.cjs +0 -33
  80. package/dist/cjs/decorators.native.js +0 -36
  81. package/dist/cjs/decorators.native.js.map +0 -1
  82. package/dist/cjs/helpers.cjs +0 -62
  83. package/dist/cjs/helpers.native.js +0 -71
  84. package/dist/cjs/helpers.native.js.map +0 -1
  85. package/dist/cjs/index.cjs +0 -43
  86. package/dist/cjs/index.native.js +0 -65
  87. package/dist/cjs/index.native.js.map +0 -1
  88. package/dist/cjs/interfaces.cjs +0 -18
  89. package/dist/cjs/interfaces.native.js +0 -21
  90. package/dist/cjs/interfaces.native.js.map +0 -1
  91. package/dist/cjs/observe.cjs +0 -166
  92. package/dist/cjs/observe.native.js +0 -234
  93. package/dist/cjs/observe.native.js.map +0 -1
  94. package/dist/cjs/useStore.cjs +0 -467
  95. package/dist/cjs/useStore.native.js +0 -608
  96. package/dist/cjs/useStore.native.js.map +0 -1
  97. package/dist/cjs/useStoreDebug.cjs +0 -67
  98. package/dist/cjs/useStoreDebug.native.js +0 -71
  99. package/dist/cjs/useStoreDebug.native.js.map +0 -1
  100. package/dist/esm/comparators.mjs +0 -16
  101. package/dist/esm/comparators.mjs.map +0 -1
  102. package/dist/esm/comparators.native.js +0 -22
  103. package/dist/esm/comparators.native.js.map +0 -1
  104. package/dist/esm/configureUseStore.mjs +0 -6
  105. package/dist/esm/configureUseStore.mjs.map +0 -1
  106. package/dist/esm/configureUseStore.native.js +0 -6
  107. package/dist/esm/configureUseStore.native.js.map +0 -1
  108. package/dist/esm/constants.mjs +0 -7
  109. package/dist/esm/constants.mjs.map +0 -1
  110. package/dist/esm/constants.native.js +0 -7
  111. package/dist/esm/constants.native.js.map +0 -1
  112. package/dist/esm/decorators.mjs +0 -8
  113. package/dist/esm/decorators.mjs.map +0 -1
  114. package/dist/esm/decorators.native.js +0 -8
  115. package/dist/esm/decorators.native.js.map +0 -1
  116. package/dist/esm/helpers.mjs +0 -31
  117. package/dist/esm/helpers.mjs.map +0 -1
  118. package/dist/esm/helpers.native.js +0 -37
  119. package/dist/esm/helpers.native.js.map +0 -1
  120. package/dist/esm/index.mjs +0 -15
  121. package/dist/esm/index.mjs.map +0 -1
  122. package/dist/esm/index.native.js +0 -34
  123. package/dist/esm/index.native.js.map +0 -1
  124. package/dist/esm/interfaces.mjs +0 -2
  125. package/dist/esm/interfaces.mjs.map +0 -1
  126. package/dist/esm/interfaces.native.js +0 -2
  127. package/dist/esm/interfaces.native.js.map +0 -1
  128. package/dist/esm/observe.mjs +0 -129
  129. package/dist/esm/observe.mjs.map +0 -1
  130. package/dist/esm/observe.native.js +0 -194
  131. package/dist/esm/observe.native.js.map +0 -1
  132. package/dist/esm/useStore.mjs +0 -415
  133. package/dist/esm/useStore.mjs.map +0 -1
  134. package/dist/esm/useStore.native.js +0 -553
  135. package/dist/esm/useStore.native.js.map +0 -1
  136. package/dist/esm/useStoreDebug.mjs +0 -27
  137. package/dist/esm/useStoreDebug.mjs.map +0 -1
  138. package/dist/esm/useStoreDebug.native.js +0 -28
  139. 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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=interfaces.js.map
@@ -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" }