@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.
Files changed (85) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/dist/cjs/comparators.cjs +37 -0
  4. package/dist/cjs/comparators.native.js +46 -0
  5. package/dist/cjs/comparators.native.js.map +1 -0
  6. package/dist/cjs/configureUseStore.cjs +30 -0
  7. package/dist/cjs/configureUseStore.native.js +33 -0
  8. package/dist/cjs/configureUseStore.native.js.map +1 -0
  9. package/dist/cjs/constants.cjs +31 -0
  10. package/dist/cjs/constants.native.js +34 -0
  11. package/dist/cjs/constants.native.js.map +1 -0
  12. package/dist/cjs/decorators.cjs +30 -0
  13. package/dist/cjs/decorators.native.js +33 -0
  14. package/dist/cjs/decorators.native.js.map +1 -0
  15. package/dist/cjs/helpers.cjs +55 -0
  16. package/dist/cjs/helpers.native.js +65 -0
  17. package/dist/cjs/helpers.native.js.map +1 -0
  18. package/dist/cjs/index.cjs +40 -0
  19. package/dist/cjs/index.native.js +54 -0
  20. package/dist/cjs/index.native.js.map +1 -0
  21. package/dist/cjs/interfaces.cjs +16 -0
  22. package/dist/cjs/interfaces.native.js +19 -0
  23. package/dist/cjs/interfaces.native.js.map +1 -0
  24. package/dist/cjs/observe.cjs +120 -0
  25. package/dist/cjs/observe.native.js +186 -0
  26. package/dist/cjs/observe.native.js.map +1 -0
  27. package/dist/cjs/useStore.cjs +390 -0
  28. package/dist/cjs/useStore.native.js +544 -0
  29. package/dist/cjs/useStore.native.js.map +1 -0
  30. package/dist/cjs/useStoreDebug.cjs +56 -0
  31. package/dist/cjs/useStoreDebug.native.js +65 -0
  32. package/dist/cjs/useStoreDebug.native.js.map +1 -0
  33. package/dist/esm/comparators.mjs +14 -0
  34. package/dist/esm/comparators.mjs.map +1 -0
  35. package/dist/esm/comparators.native.js +20 -0
  36. package/dist/esm/comparators.native.js.map +1 -0
  37. package/dist/esm/configureUseStore.mjs +6 -0
  38. package/dist/esm/configureUseStore.mjs.map +1 -0
  39. package/dist/esm/configureUseStore.native.js +6 -0
  40. package/dist/esm/configureUseStore.native.js.map +1 -0
  41. package/dist/esm/constants.mjs +7 -0
  42. package/dist/esm/constants.mjs.map +1 -0
  43. package/dist/esm/constants.native.js +7 -0
  44. package/dist/esm/constants.native.js.map +1 -0
  45. package/dist/esm/decorators.mjs +7 -0
  46. package/dist/esm/decorators.mjs.map +1 -0
  47. package/dist/esm/decorators.native.js +7 -0
  48. package/dist/esm/decorators.native.js.map +1 -0
  49. package/dist/esm/helpers.mjs +26 -0
  50. package/dist/esm/helpers.mjs.map +1 -0
  51. package/dist/esm/helpers.native.js +33 -0
  52. package/dist/esm/helpers.native.js.map +1 -0
  53. package/dist/esm/index.js +14 -0
  54. package/dist/esm/index.js.map +1 -0
  55. package/dist/esm/index.mjs +14 -0
  56. package/dist/esm/index.mjs.map +1 -0
  57. package/dist/esm/index.native.js +25 -0
  58. package/dist/esm/index.native.js.map +1 -0
  59. package/dist/esm/interfaces.mjs +2 -0
  60. package/dist/esm/interfaces.mjs.map +1 -0
  61. package/dist/esm/interfaces.native.js +2 -0
  62. package/dist/esm/interfaces.native.js.map +1 -0
  63. package/dist/esm/observe.mjs +85 -0
  64. package/dist/esm/observe.mjs.map +1 -0
  65. package/dist/esm/observe.native.js +148 -0
  66. package/dist/esm/observe.native.js.map +1 -0
  67. package/dist/esm/useStore.mjs +342 -0
  68. package/dist/esm/useStore.mjs.map +1 -0
  69. package/dist/esm/useStore.native.js +493 -0
  70. package/dist/esm/useStore.native.js.map +1 -0
  71. package/dist/esm/useStoreDebug.mjs +18 -0
  72. package/dist/esm/useStoreDebug.mjs.map +1 -0
  73. package/dist/esm/useStoreDebug.native.js +24 -0
  74. package/dist/esm/useStoreDebug.native.js.map +1 -0
  75. package/package.json +47 -0
  76. package/src/comparators.tsx +18 -0
  77. package/src/configureUseStore.tsx +7 -0
  78. package/src/constants.tsx +6 -0
  79. package/src/decorators.tsx +8 -0
  80. package/src/helpers.tsx +56 -0
  81. package/src/index.ts +12 -0
  82. package/src/interfaces.tsx +46 -0
  83. package/src/observe.tsx +160 -0
  84. package/src/useStore.tsx +705 -0
  85. 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,6 @@
1
+ let configureOpts = {};
2
+ function configureUseStore(opts) {
3
+ configureOpts = opts;
4
+ }
5
+ export { configureOpts, configureUseStore };
6
+ //# sourceMappingURL=configureUseStore.mjs.map
@@ -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,6 @@
1
+ var configureOpts = {};
2
+ function configureUseStore(opts) {
3
+ configureOpts = opts;
4
+ }
5
+ export { configureOpts, configureUseStore };
6
+ //# sourceMappingURL=configureUseStore.native.js.map
@@ -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,7 @@
1
+ const UNWRAP_PROXY = /* @__PURE__ */Symbol(),
2
+ defaultOptions = {
3
+ once: !1,
4
+ selector: void 0
5
+ };
6
+ export { UNWRAP_PROXY, defaultOptions };
7
+ //# sourceMappingURL=constants.mjs.map
@@ -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,7 @@
1
+ var UNWRAP_PROXY = /* @__PURE__ */Symbol(),
2
+ defaultOptions = {
3
+ once: !1,
4
+ selector: void 0
5
+ };
6
+ export { UNWRAP_PROXY, defaultOptions };
7
+ //# sourceMappingURL=constants.native.js.map
@@ -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,7 @@
1
+ function compare(comparator) {
2
+ return (target, propertyKey) => {
3
+ target._comparators = target._comparators || {}, target._comparators[propertyKey] = comparator;
4
+ };
5
+ }
6
+ export { compare };
7
+ //# sourceMappingURL=decorators.mjs.map
@@ -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,7 @@
1
+ function compare(comparator) {
2
+ return function (target, propertyKey) {
3
+ target._comparators = target._comparators || {}, target._comparators[propertyKey] = comparator;
4
+ };
5
+ }
6
+ export { compare };
7
+ //# sourceMappingURL=decorators.native.js.map
@@ -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,2 @@
1
+
2
+ //# sourceMappingURL=interfaces.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":[],"sources":[],"sourcesContent":[],"mappings":"","ignoreList":[]}
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=interfaces.native.js.map
@@ -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":[]}