@tamagui/use-store 1.15.40

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 (118) hide show
  1. package/README.md +91 -0
  2. package/dist/cjs/Store.js +99 -0
  3. package/dist/cjs/Store.js.map +6 -0
  4. package/dist/cjs/comparators.js +45 -0
  5. package/dist/cjs/comparators.js.map +6 -0
  6. package/dist/cjs/configureUseStore.js +34 -0
  7. package/dist/cjs/configureUseStore.js.map +6 -0
  8. package/dist/cjs/constants.js +35 -0
  9. package/dist/cjs/constants.js.map +6 -0
  10. package/dist/cjs/decorators.js +34 -0
  11. package/dist/cjs/decorators.js.map +6 -0
  12. package/dist/cjs/fastCompare.js +168 -0
  13. package/dist/cjs/fastCompare.js.map +6 -0
  14. package/dist/cjs/helpers.js +101 -0
  15. package/dist/cjs/helpers.js.map +6 -0
  16. package/dist/cjs/index.js +47 -0
  17. package/dist/cjs/index.js.map +6 -0
  18. package/dist/cjs/interfaces.js +17 -0
  19. package/dist/cjs/interfaces.js.map +6 -0
  20. package/dist/cjs/reaction.js +78 -0
  21. package/dist/cjs/reaction.js.map +6 -0
  22. package/dist/cjs/selector.js +139 -0
  23. package/dist/cjs/selector.js.map +6 -0
  24. package/dist/cjs/useStore.js +534 -0
  25. package/dist/cjs/useStore.js.map +6 -0
  26. package/dist/cjs/useStoreDebug.js +73 -0
  27. package/dist/cjs/useStoreDebug.js.map +6 -0
  28. package/dist/esm/Store.js +69 -0
  29. package/dist/esm/Store.js.map +6 -0
  30. package/dist/esm/Store.mjs +69 -0
  31. package/dist/esm/Store.mjs.map +6 -0
  32. package/dist/esm/comparators.js +21 -0
  33. package/dist/esm/comparators.js.map +6 -0
  34. package/dist/esm/comparators.mjs +21 -0
  35. package/dist/esm/comparators.mjs.map +6 -0
  36. package/dist/esm/configureUseStore.js +9 -0
  37. package/dist/esm/configureUseStore.js.map +6 -0
  38. package/dist/esm/configureUseStore.mjs +9 -0
  39. package/dist/esm/configureUseStore.mjs.map +6 -0
  40. package/dist/esm/constants.js +10 -0
  41. package/dist/esm/constants.js.map +6 -0
  42. package/dist/esm/constants.mjs +10 -0
  43. package/dist/esm/constants.mjs.map +6 -0
  44. package/dist/esm/decorators.js +10 -0
  45. package/dist/esm/decorators.js.map +6 -0
  46. package/dist/esm/decorators.mjs +10 -0
  47. package/dist/esm/decorators.mjs.map +6 -0
  48. package/dist/esm/fastCompare.js +143 -0
  49. package/dist/esm/fastCompare.js.map +6 -0
  50. package/dist/esm/fastCompare.mjs +143 -0
  51. package/dist/esm/fastCompare.mjs.map +6 -0
  52. package/dist/esm/helpers.js +70 -0
  53. package/dist/esm/helpers.js.map +6 -0
  54. package/dist/esm/helpers.mjs +70 -0
  55. package/dist/esm/helpers.mjs.map +6 -0
  56. package/dist/esm/index.js +14 -0
  57. package/dist/esm/index.js.map +6 -0
  58. package/dist/esm/index.mjs +14 -0
  59. package/dist/esm/index.mjs.map +6 -0
  60. package/dist/esm/interfaces.js +1 -0
  61. package/dist/esm/interfaces.js.map +6 -0
  62. package/dist/esm/interfaces.mjs +1 -0
  63. package/dist/esm/interfaces.mjs.map +6 -0
  64. package/dist/esm/reaction.js +53 -0
  65. package/dist/esm/reaction.js.map +6 -0
  66. package/dist/esm/reaction.mjs +53 -0
  67. package/dist/esm/reaction.mjs.map +6 -0
  68. package/dist/esm/selector.js +114 -0
  69. package/dist/esm/selector.js.map +6 -0
  70. package/dist/esm/selector.mjs +114 -0
  71. package/dist/esm/selector.mjs.map +6 -0
  72. package/dist/esm/useStore.js +516 -0
  73. package/dist/esm/useStore.js.map +6 -0
  74. package/dist/esm/useStore.mjs +516 -0
  75. package/dist/esm/useStore.mjs.map +6 -0
  76. package/dist/esm/useStoreDebug.js +35 -0
  77. package/dist/esm/useStoreDebug.js.map +6 -0
  78. package/dist/esm/useStoreDebug.mjs +35 -0
  79. package/dist/esm/useStoreDebug.mjs.map +6 -0
  80. package/package.json +44 -0
  81. package/src/Store.tsx +77 -0
  82. package/src/comparators.tsx +18 -0
  83. package/src/configureUseStore.tsx +7 -0
  84. package/src/constants.tsx +6 -0
  85. package/src/decorators.tsx +8 -0
  86. package/src/helpers.tsx +87 -0
  87. package/src/index.ts +9 -0
  88. package/src/interfaces.tsx +32 -0
  89. package/src/reaction.tsx +109 -0
  90. package/src/selector.tsx +129 -0
  91. package/src/useStore.tsx +705 -0
  92. package/src/useStoreDebug.tsx +40 -0
  93. package/types/Store.d.ts +28 -0
  94. package/types/Store.d.ts.map +1 -0
  95. package/types/comparators.d.ts +6 -0
  96. package/types/comparators.d.ts.map +1 -0
  97. package/types/configureUseStore.d.ts +4 -0
  98. package/types/configureUseStore.d.ts.map +1 -0
  99. package/types/constants.d.ts +6 -0
  100. package/types/constants.d.ts.map +1 -0
  101. package/types/decorators.d.ts +3 -0
  102. package/types/decorators.d.ts.map +1 -0
  103. package/types/fastCompare.d.ts +13 -0
  104. package/types/fastCompare.d.ts.map +1 -0
  105. package/types/helpers.d.ts +13 -0
  106. package/types/helpers.d.ts.map +1 -0
  107. package/types/index.d.ts +10 -0
  108. package/types/index.d.ts.map +1 -0
  109. package/types/interfaces.d.ts +30 -0
  110. package/types/interfaces.d.ts.map +1 -0
  111. package/types/reaction.d.ts +4 -0
  112. package/types/reaction.d.ts.map +1 -0
  113. package/types/selector.d.ts +3 -0
  114. package/types/selector.d.ts.map +1 -0
  115. package/types/useStore.d.ts +18 -0
  116. package/types/useStore.d.ts.map +1 -0
  117. package/types/useStoreDebug.d.ts +7 -0
  118. package/types/useStoreDebug.d.ts.map +1 -0
@@ -0,0 +1,70 @@
1
+ import { useRef } from "react";
2
+ const wkm = /* @__PURE__ */ new WeakMap();
3
+ const weakKey = (obj, prefix = "") => {
4
+ if (wkm.has(obj))
5
+ return wkm.get(obj);
6
+ const key = `${prefix}-${Math.random()}`;
7
+ wkm.set(obj, key);
8
+ return key;
9
+ };
10
+ function getStoreUid(Constructor, props) {
11
+ const storeName = process.env.NODE_ENV === "development" ? Constructor.name : weakKey(Constructor);
12
+ return `${storeName}${!props ? "" : typeof props === "string" ? props : getKey(props)}`;
13
+ }
14
+ const UNWRAP_STORE_INFO = Symbol("UNWRAP_STORE_INFO");
15
+ const cache = /* @__PURE__ */ new Map();
16
+ function getStoreDescriptors(storeInstance) {
17
+ const proto = Object.getPrototypeOf(storeInstance);
18
+ const instanceDescriptors = Object.getOwnPropertyDescriptors(storeInstance);
19
+ const protoDescriptors = Object.getOwnPropertyDescriptors(proto);
20
+ const descriptors = {
21
+ ...protoDescriptors,
22
+ ...instanceDescriptors
23
+ };
24
+ delete descriptors.constructor;
25
+ return descriptors;
26
+ }
27
+ function get(_, b) {
28
+ return _;
29
+ }
30
+ function getKey(props) {
31
+ let s = "";
32
+ const sorted = Object.keys(props).sort();
33
+ for (const key of sorted) {
34
+ const v = props[key];
35
+ if (v && typeof v === "object") {
36
+ s += getKey(v);
37
+ } else {
38
+ s += `.${key}:${v}`;
39
+ }
40
+ }
41
+ return s;
42
+ }
43
+ function useConstant(fn) {
44
+ const ref = useRef();
45
+ if (!ref.current) {
46
+ ref.current = { v: fn() };
47
+ }
48
+ return ref.current.v;
49
+ }
50
+ function simpleStr(arg) {
51
+ if (process.env.NODE_ENV === "development") {
52
+ return typeof arg === "function" ? "fn" : typeof arg === "string" ? `"${arg}"` : !arg ? arg : typeof arg !== "object" ? arg : Array.isArray(arg) ? "[...]" : `{...}`;
53
+ }
54
+ return arg;
55
+ }
56
+ function getStoreDebugInfo(store) {
57
+ return store[UNWRAP_STORE_INFO] ?? cache.get(getStoreUid(store.constructor, store.props));
58
+ }
59
+ export {
60
+ UNWRAP_STORE_INFO,
61
+ cache,
62
+ useConstant as default,
63
+ get,
64
+ getKey,
65
+ getStoreDebugInfo,
66
+ getStoreDescriptors,
67
+ getStoreUid,
68
+ simpleStr
69
+ };
70
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/helpers.tsx"],
4
+ "mappings": "AAAA,SAAS,cAAc;AAIvB,MAAM,MAAM,oBAAI,QAAqB;AACrC,MAAM,UAAU,CAAC,KAAU,SAAS,OAAO;AACzC,MAAI,IAAI,IAAI,GAAG;AAAG,WAAO,IAAI,IAAI,GAAG;AACpC,QAAM,MAAM,GAAG,UAAU,KAAK,OAAO;AACrC,MAAI,IAAI,KAAK,GAAG;AAChB,SAAO;AACT;AAEO,SAAS,YAAY,aAAkB,OAA+B;AAG3E,QAAM,YACJ,QAAQ,IAAI,aAAa,gBAAgB,YAAY,OAAO,QAAQ,WAAW;AACjF,SAAO,GAAG,YAAY,CAAC,QAAQ,KAAK,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AACtF;AAEO,MAAM,oBAAoB,OAAO,mBAAmB;AACpD,MAAM,QAAQ,oBAAI,IAAuB;AAEzC,SAAS,oBAAoB,eAAoB;AACtD,QAAM,QAAQ,OAAO,eAAe,aAAa;AACjD,QAAM,sBAAsB,OAAO,0BAA0B,aAAa;AAC1E,QAAM,mBAAmB,OAAO,0BAA0B,KAAK;AAC/D,QAAM,cAAc;AAAA,IAClB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SAAO,YAAY;AACnB,SAAO;AACT;AAEO,SAAS,IAAO,GAAM,GAAyD;AACpF,SAAO;AACT;AAEO,SAAS,OAAO,OAAe;AACpC,MAAI,IAAI;AACR,QAAM,SAAS,OAAO,KAAK,KAAK,EAAE,KAAK;AACvC,aAAW,OAAO,QAAQ;AACxB,UAAM,IAAI,MAAM,GAAG;AACnB,QAAI,KAAK,OAAO,MAAM,UAAU;AAC9B,WAAK,OAAO,CAAC;AAAA,IACf,OAAO;AACL,WAAK,IAAI,OAAO;AAAA,IAClB;AAAA,EACF;AACA,SAAO;AACT;AAIe,SAAR,YAAgC,IAAgB;AACrD,QAAM,MAAM,OAAqB;AACjC,MAAI,CAAC,IAAI,SAAS;AAChB,QAAI,UAAU,EAAE,GAAG,GAAG,EAAE;AAAA,EAC1B;AACA,SAAO,IAAI,QAAQ;AACrB;AAEO,SAAS,UAAU,KAAU;AAClC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,WAAO,OAAO,QAAQ,aAClB,OACA,OAAO,QAAQ,WACf,IAAI,SACJ,CAAC,MACD,MACA,OAAO,QAAQ,WACf,MACA,MAAM,QAAQ,GAAG,IACjB,UACA;AAAA,EACN;AACA,SAAO;AACT;AAGO,SAAS,kBAAkB,OAAY;AAC5C,SACE,MAAM,iBAAiB,KAAK,MAAM,IAAI,YAAY,MAAM,aAAa,MAAM,KAAK,CAAC;AAErF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,70 @@
1
+ import { useRef } from "react";
2
+ const wkm = /* @__PURE__ */ new WeakMap();
3
+ const weakKey = (obj, prefix = "") => {
4
+ if (wkm.has(obj))
5
+ return wkm.get(obj);
6
+ const key = `${prefix}-${Math.random()}`;
7
+ wkm.set(obj, key);
8
+ return key;
9
+ };
10
+ function getStoreUid(Constructor, props) {
11
+ const storeName = process.env.NODE_ENV === "development" ? Constructor.name : weakKey(Constructor);
12
+ return `${storeName}${!props ? "" : typeof props === "string" ? props : getKey(props)}`;
13
+ }
14
+ const UNWRAP_STORE_INFO = Symbol("UNWRAP_STORE_INFO");
15
+ const cache = /* @__PURE__ */ new Map();
16
+ function getStoreDescriptors(storeInstance) {
17
+ const proto = Object.getPrototypeOf(storeInstance);
18
+ const instanceDescriptors = Object.getOwnPropertyDescriptors(storeInstance);
19
+ const protoDescriptors = Object.getOwnPropertyDescriptors(proto);
20
+ const descriptors = {
21
+ ...protoDescriptors,
22
+ ...instanceDescriptors
23
+ };
24
+ delete descriptors.constructor;
25
+ return descriptors;
26
+ }
27
+ function get(_, b) {
28
+ return _;
29
+ }
30
+ function getKey(props) {
31
+ let s = "";
32
+ const sorted = Object.keys(props).sort();
33
+ for (const key of sorted) {
34
+ const v = props[key];
35
+ if (v && typeof v === "object") {
36
+ s += getKey(v);
37
+ } else {
38
+ s += `.${key}:${v}`;
39
+ }
40
+ }
41
+ return s;
42
+ }
43
+ function useConstant(fn) {
44
+ const ref = useRef();
45
+ if (!ref.current) {
46
+ ref.current = { v: fn() };
47
+ }
48
+ return ref.current.v;
49
+ }
50
+ function simpleStr(arg) {
51
+ if (process.env.NODE_ENV === "development") {
52
+ return typeof arg === "function" ? "fn" : typeof arg === "string" ? `"${arg}"` : !arg ? arg : typeof arg !== "object" ? arg : Array.isArray(arg) ? "[...]" : `{...}`;
53
+ }
54
+ return arg;
55
+ }
56
+ function getStoreDebugInfo(store) {
57
+ return store[UNWRAP_STORE_INFO] ?? cache.get(getStoreUid(store.constructor, store.props));
58
+ }
59
+ export {
60
+ UNWRAP_STORE_INFO,
61
+ cache,
62
+ useConstant as default,
63
+ get,
64
+ getKey,
65
+ getStoreDebugInfo,
66
+ getStoreDescriptors,
67
+ getStoreUid,
68
+ simpleStr
69
+ };
70
+ //# sourceMappingURL=helpers.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/helpers.tsx"],
4
+ "mappings": "AAAA,SAAS,cAAc;AAIvB,MAAM,MAAM,oBAAI,QAAqB;AACrC,MAAM,UAAU,CAAC,KAAU,SAAS,OAAO;AACzC,MAAI,IAAI,IAAI,GAAG;AAAG,WAAO,IAAI,IAAI,GAAG;AACpC,QAAM,MAAM,GAAG,UAAU,KAAK,OAAO;AACrC,MAAI,IAAI,KAAK,GAAG;AAChB,SAAO;AACT;AAEO,SAAS,YAAY,aAAkB,OAA+B;AAG3E,QAAM,YACJ,QAAQ,IAAI,aAAa,gBAAgB,YAAY,OAAO,QAAQ,WAAW;AACjF,SAAO,GAAG,YAAY,CAAC,QAAQ,KAAK,OAAO,UAAU,WAAW,QAAQ,OAAO,KAAK;AACtF;AAEO,MAAM,oBAAoB,OAAO,mBAAmB;AACpD,MAAM,QAAQ,oBAAI,IAAuB;AAEzC,SAAS,oBAAoB,eAAoB;AACtD,QAAM,QAAQ,OAAO,eAAe,aAAa;AACjD,QAAM,sBAAsB,OAAO,0BAA0B,aAAa;AAC1E,QAAM,mBAAmB,OAAO,0BAA0B,KAAK;AAC/D,QAAM,cAAc;AAAA,IAClB,GAAG;AAAA,IACH,GAAG;AAAA,EACL;AAEA,SAAO,YAAY;AACnB,SAAO;AACT;AAEO,SAAS,IAAO,GAAM,GAAyD;AACpF,SAAO;AACT;AAEO,SAAS,OAAO,OAAe;AACpC,MAAI,IAAI;AACR,QAAM,SAAS,OAAO,KAAK,KAAK,EAAE,KAAK;AACvC,aAAW,OAAO,QAAQ;AACxB,UAAM,IAAI,MAAM,GAAG;AACnB,QAAI,KAAK,OAAO,MAAM,UAAU;AAC9B,WAAK,OAAO,CAAC;AAAA,IACf,OAAO;AACL,WAAK,IAAI,OAAO;AAAA,IAClB;AAAA,EACF;AACA,SAAO;AACT;AAIe,SAAR,YAAgC,IAAgB;AACrD,QAAM,MAAM,OAAqB;AACjC,MAAI,CAAC,IAAI,SAAS;AAChB,QAAI,UAAU,EAAE,GAAG,GAAG,EAAE;AAAA,EAC1B;AACA,SAAO,IAAI,QAAQ;AACrB;AAEO,SAAS,UAAU,KAAU;AAClC,MAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,WAAO,OAAO,QAAQ,aAClB,OACA,OAAO,QAAQ,WACf,IAAI,SACJ,CAAC,MACD,MACA,OAAO,QAAQ,WACf,MACA,MAAM,QAAQ,GAAG,IACjB,UACA;AAAA,EACN;AACA,SAAO;AACT;AAGO,SAAS,kBAAkB,OAAY;AAC5C,SACE,MAAM,iBAAiB,KAAK,MAAM,IAAI,YAAY,MAAM,aAAa,MAAM,KAAK,CAAC;AAErF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,14 @@
1
+ export * from "./useStore";
2
+ import { configureUseStore } from "./configureUseStore";
3
+ export * from "./interfaces";
4
+ export * from "./selector";
5
+ export * from "./reaction";
6
+ export * from "./Store";
7
+ import { UNWRAP_PROXY } from "./constants";
8
+ export * from "./comparators";
9
+ export * from "./decorators";
10
+ export {
11
+ UNWRAP_PROXY,
12
+ configureUseStore
13
+ };
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA,cAAc;AACd,SAAS,yBAAyB;AAClC,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,oBAAoB;AAC7B,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1,14 @@
1
+ export * from "./useStore";
2
+ import { configureUseStore } from "./configureUseStore";
3
+ export * from "./interfaces";
4
+ export * from "./selector";
5
+ export * from "./reaction";
6
+ export * from "./Store";
7
+ import { UNWRAP_PROXY } from "./constants";
8
+ export * from "./comparators";
9
+ export * from "./decorators";
10
+ export {
11
+ UNWRAP_PROXY,
12
+ configureUseStore
13
+ };
14
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "mappings": "AAAA,cAAc;AACd,SAAS,yBAAyB;AAClC,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,SAAS,oBAAoB;AAC7B,cAAc;AACd,cAAc;",
5
+ "names": []
6
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "mappings": "",
5
+ "names": []
6
+ }
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=interfaces.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "mappings": "",
5
+ "names": []
6
+ }
@@ -0,0 +1,53 @@
1
+ import { useMemo } from "react";
2
+ import { isEqualSubsetShallow } from "./comparators";
3
+ import { UNWRAP_PROXY } from "./constants";
4
+ import { setIsInReaction } from "./useStore";
5
+ const dispose = (d) => {
6
+ if (typeof d === "function") {
7
+ d();
8
+ }
9
+ };
10
+ function useReaction(store, selector, receiver, equalityFn = isEqualSubsetShallow, memoArgs) {
11
+ return useMemo(() => reaction(store, selector, receiver, equalityFn), [memoArgs]);
12
+ }
13
+ function reaction(store, selector, receiver, equalityFn = isEqualSubsetShallow) {
14
+ let last = void 0;
15
+ let innerDispose;
16
+ function updateReaction() {
17
+ var _a;
18
+ try {
19
+ setIsInReaction(true);
20
+ const storeInstance = store[UNWRAP_PROXY] || store;
21
+ const next = selector(storeInstance);
22
+ if (!equalityFn(last, next)) {
23
+ if (process.env.NODE_ENV === "development") {
24
+ console.groupCollapsed(
25
+ `\u{1F311} \u23ED %c${receiver.name.padStart(24)} (${storeInstance.constructor.name}${((_a = store.props) == null ? void 0 : _a.id) ? `:${store.props.id}` : ""}) ${last} => ${next}`,
26
+ "color: chocolate;"
27
+ );
28
+ console.groupCollapsed("trace >");
29
+ console.trace();
30
+ console.groupEnd();
31
+ console.log(" ARG", next);
32
+ console.groupEnd();
33
+ }
34
+ dispose(innerDispose);
35
+ last = next;
36
+ innerDispose = receiver(next);
37
+ }
38
+ } finally {
39
+ setIsInReaction(false);
40
+ }
41
+ }
42
+ const disposeSubscribe = store.subscribe(updateReaction);
43
+ updateReaction();
44
+ return () => {
45
+ disposeSubscribe();
46
+ dispose(innerDispose);
47
+ };
48
+ }
49
+ export {
50
+ reaction,
51
+ useReaction
52
+ };
53
+ //# sourceMappingURL=reaction.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/reaction.tsx"],
4
+ "mappings": "AAAA,SAAS,eAAe;AAExB,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;AAEhC,MAAM,UAAU,CAAC,MAAW;AAC1B,MAAI,OAAO,MAAM,YAAY;AAC3B,MAAE;AAAA,EACJ;AACF;AAEO,SAAS,YAId,OACA,UACA,UAGA,aAA0C,sBAC1C,UACA;AACA,SAAO,QAAQ,MAAM,SAAS,OAAO,UAAU,UAAU,UAAU,GAAG,CAAC,QAAQ,CAAC;AAClF;AAEO,SAAS,SAId,OACA,UACA,UAGA,aAA0C,sBAC1C;AACA,MAAI,OAAY;AAChB,MAAI;AAEJ,WAAS,iBAAiB;AA1C5B;AA2CI,QAAI;AACF,sBAAgB,IAAI;AACpB,YAAM,gBAAgB,MAAM,YAAY,KAAK;AAC7C,YAAM,OAAO,SAAS,aAAa;AACnC,UAAI,CAAC,WAAW,MAAM,IAAI,GAAG;AAC3B,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,kBAAQ;AAAA,YACN,uBAAW,SAAS,KAAK,SAAS,EAAE,MAAM,cAAc,YAAY,SAClE,WAAM,UAAN,mBAAa,MAAK,IAAI,MAAM,MAAM,OAAO,OACtC,WAAW;AAAA,YAChB;AAAA,UACF;AACA,kBAAQ,eAAe,SAAS;AAChC,kBAAQ,MAAM;AACd,kBAAQ,SAAS;AACjB,kBAAQ,IAAI,SAAS,IAAI;AACzB,kBAAQ,SAAS;AAAA,QACnB;AACA,gBAAQ,YAAY;AACpB,eAAO;AACP,uBAAe,SAAS,IAAI;AAAA,MAC9B;AAAA,IACF,UAAE;AACA,sBAAgB,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM,UAAU,cAAc;AACvD,iBAAe;AAEf,SAAO,MAAM;AACX,qBAAiB;AACjB,YAAQ,YAAY;AAAA,EACtB;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,53 @@
1
+ import { useMemo } from "react";
2
+ import { isEqualSubsetShallow } from "./comparators";
3
+ import { UNWRAP_PROXY } from "./constants";
4
+ import { setIsInReaction } from "./useStore";
5
+ const dispose = (d) => {
6
+ if (typeof d === "function") {
7
+ d();
8
+ }
9
+ };
10
+ function useReaction(store, selector, receiver, equalityFn = isEqualSubsetShallow, memoArgs) {
11
+ return useMemo(() => reaction(store, selector, receiver, equalityFn), [memoArgs]);
12
+ }
13
+ function reaction(store, selector, receiver, equalityFn = isEqualSubsetShallow) {
14
+ let last = void 0;
15
+ let innerDispose;
16
+ function updateReaction() {
17
+ var _a;
18
+ try {
19
+ setIsInReaction(true);
20
+ const storeInstance = store[UNWRAP_PROXY] || store;
21
+ const next = selector(storeInstance);
22
+ if (!equalityFn(last, next)) {
23
+ if (process.env.NODE_ENV === "development") {
24
+ console.groupCollapsed(
25
+ `\u{1F311} \u23ED %c${receiver.name.padStart(24)} (${storeInstance.constructor.name}${((_a = store.props) == null ? void 0 : _a.id) ? `:${store.props.id}` : ""}) ${last} => ${next}`,
26
+ "color: chocolate;"
27
+ );
28
+ console.groupCollapsed("trace >");
29
+ console.trace();
30
+ console.groupEnd();
31
+ console.log(" ARG", next);
32
+ console.groupEnd();
33
+ }
34
+ dispose(innerDispose);
35
+ last = next;
36
+ innerDispose = receiver(next);
37
+ }
38
+ } finally {
39
+ setIsInReaction(false);
40
+ }
41
+ }
42
+ const disposeSubscribe = store.subscribe(updateReaction);
43
+ updateReaction();
44
+ return () => {
45
+ disposeSubscribe();
46
+ dispose(innerDispose);
47
+ };
48
+ }
49
+ export {
50
+ reaction,
51
+ useReaction
52
+ };
53
+ //# sourceMappingURL=reaction.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/reaction.tsx"],
4
+ "mappings": "AAAA,SAAS,eAAe;AAExB,SAAS,4BAA4B;AACrC,SAAS,oBAAoB;AAE7B,SAAS,uBAAuB;AAEhC,MAAM,UAAU,CAAC,MAAW;AAC1B,MAAI,OAAO,MAAM,YAAY;AAC3B,MAAE;AAAA,EACJ;AACF;AAEO,SAAS,YAId,OACA,UACA,UAGA,aAA0C,sBAC1C,UACA;AACA,SAAO,QAAQ,MAAM,SAAS,OAAO,UAAU,UAAU,UAAU,GAAG,CAAC,QAAQ,CAAC;AAClF;AAEO,SAAS,SAId,OACA,UACA,UAGA,aAA0C,sBAC1C;AACA,MAAI,OAAY;AAChB,MAAI;AAEJ,WAAS,iBAAiB;AA1C5B;AA2CI,QAAI;AACF,sBAAgB,IAAI;AACpB,YAAM,gBAAgB,MAAM,YAAY,KAAK;AAC7C,YAAM,OAAO,SAAS,aAAa;AACnC,UAAI,CAAC,WAAW,MAAM,IAAI,GAAG;AAC3B,YAAI,QAAQ,IAAI,aAAa,eAAe;AAC1C,kBAAQ;AAAA,YACN,uBAAW,SAAS,KAAK,SAAS,EAAE,MAAM,cAAc,YAAY,SAClE,WAAM,UAAN,mBAAa,MAAK,IAAI,MAAM,MAAM,OAAO,OACtC,WAAW;AAAA,YAChB;AAAA,UACF;AACA,kBAAQ,eAAe,SAAS;AAChC,kBAAQ,MAAM;AACd,kBAAQ,SAAS;AACjB,kBAAQ,IAAI,SAAS,IAAI;AACzB,kBAAQ,SAAS;AAAA,QACnB;AACA,gBAAQ,YAAY;AACpB,eAAO;AACP,uBAAe,SAAS,IAAI;AAAA,MAC9B;AAAA,IACF,UAAE;AACA,sBAAgB,KAAK;AAAA,IACvB;AAAA,EACF;AAEA,QAAM,mBAAmB,MAAM,UAAU,cAAc;AACvD,iBAAe;AAEf,SAAO,MAAM;AACX,qBAAiB;AACjB,YAAQ,YAAY;AAAA,EACtB;AACF;",
5
+ "names": []
6
+ }
@@ -0,0 +1,114 @@
1
+ import { useEffect, useState } from "react";
2
+ import { isEqualSubsetShallow } from "./comparators";
3
+ import { UNWRAP_PROXY } from "./constants";
4
+ import { setIsInReaction, trackStoresAccess } from "./useStore";
5
+ const logUpdate = process.env.NODE_ENV === "development" ? (fn, stores, last, next) => {
6
+ const getStoreLogName = (store) => {
7
+ var _a;
8
+ const str = store[UNWRAP_PROXY] ?? store;
9
+ return `${str.constructor.name}${((_a = store.props) == null ? void 0 : _a.id) ? `:${store.props.id}` : ""}`;
10
+ };
11
+ const storeNames = stores.map(getStoreLogName).join(", ");
12
+ const name = `\u{1F311} \u25B6\uFE0F %c${fn.name} ${storeNames} () ${last} => ${next}`;
13
+ console.groupCollapsed(name, "color: tomato;");
14
+ console.groupCollapsed("trace >");
15
+ console.trace();
16
+ console.groupEnd();
17
+ console.log(" next", next);
18
+ console.groupEnd();
19
+ } : null;
20
+ function selector(fn) {
21
+ let prev = runStoreSelector(fn);
22
+ let disposeValue = null;
23
+ const subscribe = () => {
24
+ return subscribeToStores([...prev.stores], () => {
25
+ try {
26
+ disposeValue == null ? void 0 : disposeValue();
27
+ setIsInReaction(true);
28
+ const next = runStoreSelector(fn);
29
+ if (typeof next.value === "function") {
30
+ disposeValue = next.value;
31
+ if (process.env.NODE_ENV === "development") {
32
+ logUpdate(fn, [...next.stores], "(fn)", "(fn)");
33
+ }
34
+ return;
35
+ }
36
+ if (isEqualSubsetShallow(prev.stores, next.stores) && isEqualSubsetShallow(prev.value, next.value)) {
37
+ return;
38
+ }
39
+ if (process.env.NODE_ENV === "development") {
40
+ logUpdate(fn, [...next.stores], prev.value, next.value);
41
+ }
42
+ prev = next;
43
+ dispose();
44
+ dispose = subscribe();
45
+ } finally {
46
+ setIsInReaction(false);
47
+ }
48
+ });
49
+ };
50
+ let dispose = subscribe();
51
+ return () => {
52
+ dispose();
53
+ disposeValue == null ? void 0 : disposeValue();
54
+ };
55
+ }
56
+ function useSelector(fn) {
57
+ const [state, setState] = useState(() => {
58
+ return runStoreSelector(fn);
59
+ });
60
+ useEffect(() => {
61
+ let dispose;
62
+ const unsub = subscribeToStores([...state.stores], () => {
63
+ dispose == null ? void 0 : dispose();
64
+ const next = runStoreSelector(fn);
65
+ if (typeof next.value === "function") {
66
+ if (process.env.NODE_ENV === "development") {
67
+ logUpdate(fn, [...next.stores], "(fn)", "(fn)");
68
+ }
69
+ dispose = next.value;
70
+ return;
71
+ }
72
+ setState((prev) => {
73
+ if (isEqualSubsetShallow(prev.stores, next.stores) && isEqualSubsetShallow(prev.value, next.value)) {
74
+ return prev;
75
+ }
76
+ if (process.env.NODE_ENV === "development") {
77
+ logUpdate(fn, [...next.stores], prev.value, next.value);
78
+ }
79
+ return next;
80
+ });
81
+ });
82
+ return () => {
83
+ unsub();
84
+ dispose == null ? void 0 : dispose();
85
+ };
86
+ }, [...state.stores]);
87
+ return state.value;
88
+ }
89
+ function runStoreSelector(selector2) {
90
+ const stores = /* @__PURE__ */ new Set();
91
+ const dispose = trackStoresAccess((store) => {
92
+ stores.add(store);
93
+ });
94
+ const value = selector2();
95
+ dispose();
96
+ return {
97
+ value,
98
+ stores
99
+ };
100
+ }
101
+ function subscribeToStores(stores, onUpdate) {
102
+ const disposes = [];
103
+ for (const store of stores) {
104
+ disposes.push(store.subscribe(onUpdate));
105
+ }
106
+ return () => {
107
+ disposes.forEach((x) => x());
108
+ };
109
+ }
110
+ export {
111
+ selector,
112
+ useSelector
113
+ };
114
+ //# sourceMappingURL=selector.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/selector.tsx"],
4
+ "mappings": "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",
5
+ "names": ["selector"]
6
+ }
@@ -0,0 +1,114 @@
1
+ import { useEffect, useState } from "react";
2
+ import { isEqualSubsetShallow } from "./comparators";
3
+ import { UNWRAP_PROXY } from "./constants";
4
+ import { setIsInReaction, trackStoresAccess } from "./useStore";
5
+ const logUpdate = process.env.NODE_ENV === "development" ? (fn, stores, last, next) => {
6
+ const getStoreLogName = (store) => {
7
+ var _a;
8
+ const str = store[UNWRAP_PROXY] ?? store;
9
+ return `${str.constructor.name}${((_a = store.props) == null ? void 0 : _a.id) ? `:${store.props.id}` : ""}`;
10
+ };
11
+ const storeNames = stores.map(getStoreLogName).join(", ");
12
+ const name = `\u{1F311} \u25B6\uFE0F %c${fn.name} ${storeNames} () ${last} => ${next}`;
13
+ console.groupCollapsed(name, "color: tomato;");
14
+ console.groupCollapsed("trace >");
15
+ console.trace();
16
+ console.groupEnd();
17
+ console.log(" next", next);
18
+ console.groupEnd();
19
+ } : null;
20
+ function selector(fn) {
21
+ let prev = runStoreSelector(fn);
22
+ let disposeValue = null;
23
+ const subscribe = () => {
24
+ return subscribeToStores([...prev.stores], () => {
25
+ try {
26
+ disposeValue == null ? void 0 : disposeValue();
27
+ setIsInReaction(true);
28
+ const next = runStoreSelector(fn);
29
+ if (typeof next.value === "function") {
30
+ disposeValue = next.value;
31
+ if (process.env.NODE_ENV === "development") {
32
+ logUpdate(fn, [...next.stores], "(fn)", "(fn)");
33
+ }
34
+ return;
35
+ }
36
+ if (isEqualSubsetShallow(prev.stores, next.stores) && isEqualSubsetShallow(prev.value, next.value)) {
37
+ return;
38
+ }
39
+ if (process.env.NODE_ENV === "development") {
40
+ logUpdate(fn, [...next.stores], prev.value, next.value);
41
+ }
42
+ prev = next;
43
+ dispose();
44
+ dispose = subscribe();
45
+ } finally {
46
+ setIsInReaction(false);
47
+ }
48
+ });
49
+ };
50
+ let dispose = subscribe();
51
+ return () => {
52
+ dispose();
53
+ disposeValue == null ? void 0 : disposeValue();
54
+ };
55
+ }
56
+ function useSelector(fn) {
57
+ const [state, setState] = useState(() => {
58
+ return runStoreSelector(fn);
59
+ });
60
+ useEffect(() => {
61
+ let dispose;
62
+ const unsub = subscribeToStores([...state.stores], () => {
63
+ dispose == null ? void 0 : dispose();
64
+ const next = runStoreSelector(fn);
65
+ if (typeof next.value === "function") {
66
+ if (process.env.NODE_ENV === "development") {
67
+ logUpdate(fn, [...next.stores], "(fn)", "(fn)");
68
+ }
69
+ dispose = next.value;
70
+ return;
71
+ }
72
+ setState((prev) => {
73
+ if (isEqualSubsetShallow(prev.stores, next.stores) && isEqualSubsetShallow(prev.value, next.value)) {
74
+ return prev;
75
+ }
76
+ if (process.env.NODE_ENV === "development") {
77
+ logUpdate(fn, [...next.stores], prev.value, next.value);
78
+ }
79
+ return next;
80
+ });
81
+ });
82
+ return () => {
83
+ unsub();
84
+ dispose == null ? void 0 : dispose();
85
+ };
86
+ }, [...state.stores]);
87
+ return state.value;
88
+ }
89
+ function runStoreSelector(selector2) {
90
+ const stores = /* @__PURE__ */ new Set();
91
+ const dispose = trackStoresAccess((store) => {
92
+ stores.add(store);
93
+ });
94
+ const value = selector2();
95
+ dispose();
96
+ return {
97
+ value,
98
+ stores
99
+ };
100
+ }
101
+ function subscribeToStores(stores, onUpdate) {
102
+ const disposes = [];
103
+ for (const store of stores) {
104
+ disposes.push(store.subscribe(onUpdate));
105
+ }
106
+ return () => {
107
+ disposes.forEach((x) => x());
108
+ };
109
+ }
110
+ export {
111
+ selector,
112
+ useSelector
113
+ };
114
+ //# sourceMappingURL=selector.mjs.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/selector.tsx"],
4
+ "mappings": "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",
5
+ "names": ["selector"]
6
+ }