atom.io 0.6.3 → 0.6.5

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 (62) hide show
  1. package/dist/index.d.mts +25 -13
  2. package/dist/index.d.ts +25 -13
  3. package/dist/index.js +106 -50
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +103 -47
  6. package/dist/index.mjs.map +1 -1
  7. package/json/package.json +13 -13
  8. package/package.json +23 -15
  9. package/react/dist/index.d.mts +1 -1
  10. package/react/dist/index.d.ts +1 -1
  11. package/react/dist/index.js +8 -4
  12. package/react/dist/index.js.map +1 -1
  13. package/react/dist/index.mjs +8 -4
  14. package/react/dist/index.mjs.map +1 -1
  15. package/react/package.json +13 -13
  16. package/react-devtools/dist/index.js +693 -181
  17. package/react-devtools/dist/index.js.map +1 -1
  18. package/react-devtools/dist/index.mjs +689 -177
  19. package/react-devtools/dist/index.mjs.map +1 -1
  20. package/react-devtools/package.json +13 -13
  21. package/realtime/dist/index.js.map +1 -1
  22. package/realtime/dist/index.mjs.map +1 -1
  23. package/realtime/package.json +13 -13
  24. package/realtime-react/dist/index.js +14 -10
  25. package/realtime-react/dist/index.js.map +1 -1
  26. package/realtime-react/dist/index.mjs +14 -10
  27. package/realtime-react/dist/index.mjs.map +1 -1
  28. package/realtime-react/package.json +13 -13
  29. package/realtime-testing/dist/index.d.mts +1 -1
  30. package/realtime-testing/dist/index.d.ts +1 -1
  31. package/realtime-testing/dist/index.js +14 -2
  32. package/realtime-testing/dist/index.js.map +1 -1
  33. package/realtime-testing/dist/index.mjs +14 -2
  34. package/realtime-testing/dist/index.mjs.map +1 -1
  35. package/realtime-testing/package.json +13 -13
  36. package/src/atom.ts +2 -3
  37. package/src/internal/atom-internal.ts +3 -3
  38. package/src/internal/families-internal.ts +4 -5
  39. package/src/internal/index.ts +1 -0
  40. package/src/internal/selector/create-read-write-selector.ts +2 -2
  41. package/src/internal/selector/create-readonly-selector.ts +2 -2
  42. package/src/internal/selector-internal.ts +3 -4
  43. package/src/internal/store.ts +10 -10
  44. package/src/internal/subject.ts +24 -0
  45. package/src/internal/timeline-internal.ts +3 -4
  46. package/src/internal/transaction-internal.ts +3 -3
  47. package/src/react/store-context.tsx +1 -2
  48. package/src/react/store-hooks.ts +1 -2
  49. package/src/react-devtools/AtomIODevtools.tsx +2 -3
  50. package/src/react-devtools/StateEditor.tsx +1 -2
  51. package/src/react-devtools/TokenList.tsx +2 -3
  52. package/src/react-explorer/AtomIOExplorer.tsx +1 -2
  53. package/src/react-explorer/explorer-effects.ts +3 -3
  54. package/src/react-explorer/space-states.ts +3 -3
  55. package/src/realtime-react/realtime-context.tsx +1 -2
  56. package/src/realtime-react/use-pull-family-member.ts +1 -2
  57. package/src/realtime-react/use-pull-family.ts +1 -2
  58. package/src/realtime-react/use-pull.ts +1 -2
  59. package/src/realtime-react/use-push.ts +1 -2
  60. package/src/realtime-react/use-server-action.ts +1 -2
  61. package/src/realtime-testing/setup-realtime-test.tsx +1 -2
  62. package/src/selector.ts +3 -4
package/json/package.json CHANGED
@@ -1,15 +1,15 @@
1
1
  {
2
- "name": "atom.io-json",
3
- "private": true,
4
- "main": "dist/index.js",
5
- "types": "dist/index.d.ts",
6
- "module": "dist/index.mjs",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "browser": "./dist/index.mjs",
11
- "import": "./dist/index.mjs",
12
- "require": "./dist/index.js"
13
- }
14
- }
2
+ "name": "atom.io-json",
3
+ "private": true,
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "module": "dist/index.mjs",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "browser": "./dist/index.mjs",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ }
14
+ }
15
15
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atom.io",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Reactive state graph for React, Preact, and vanilla",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -72,12 +72,6 @@
72
72
  "require": "./realtime-testing/dist/index.js"
73
73
  }
74
74
  },
75
- "scripts": {
76
- "build": "tsup & (cd json && tsup) & (cd react && tsup) & (cd react-devtools && tsup) & (cd realtime && tsup) & (cd realtime-react && tsup) & (cd realtime-testing && tsup)",
77
- "lint": "rome check .",
78
- "test": "vitest",
79
- "test:once": "vitest run"
80
- },
81
75
  "peerDependencies": {
82
76
  "preact": ">=10.0.0",
83
77
  "react": ">=16.8.0",
@@ -99,20 +93,26 @@
99
93
  }
100
94
  },
101
95
  "dependencies": {
102
- "fp-ts": "2.16.0",
103
- "hamt_plus": "1.0.2",
104
- "rxjs": "7.8.1"
96
+ "hamt_plus": "1.0.2"
105
97
  },
106
98
  "devDependencies": {
99
+ "@emotion/react": "11.11.1",
107
100
  "@testing-library/react": "14.0.0",
108
101
  "@types/mock-fs": "4.13.1",
109
- "eslint": "8.44.0",
110
- "happy-dom": "10.3.0",
111
- "mock-fs": "5.2.0",
102
+ "@types/react": "18.2.15",
103
+ "@types/tmp": "0.2.3",
104
+ "eslint": "8.45.0",
105
+ "framer-motion": "10.12.22",
106
+ "happy-dom": "10.5.1",
112
107
  "react": "18.2.0",
113
108
  "react-dom": "18.2.0",
114
- "react-router-dom": "6.14.1",
109
+ "react-router-dom": "6.14.2",
110
+ "socket.io": "4.7.1",
111
+ "socket.io-client": "4.7.1",
112
+ "tmp": "0.2.1",
115
113
  "tsup": "7.1.0",
114
+ "typescript": "5.1.6",
115
+ "vite": "4.4.4",
116
116
  "vite-tsconfig-paths": "4.2.0",
117
117
  "vitest": "0.33.0"
118
118
  },
@@ -125,5 +125,13 @@
125
125
  "author": "Jeremy Banka",
126
126
  "publishConfig": {
127
127
  "access": "public"
128
+ },
129
+ "scripts": {
130
+ "build": "tsup & (cd json && tsup) & (cd react && tsup) & (cd react-devtools && tsup) & (cd realtime && tsup) & (cd realtime-react && tsup) & (cd realtime-testing && tsup)",
131
+ "lint:rome": "rome check .",
132
+ "lint:eslint": "eslint .",
133
+ "lint": "npm run lint:rome && npm run lint:eslint",
134
+ "test": "vitest",
135
+ "test:once": "vitest run"
128
136
  }
129
- }
137
+ }
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
1
  import * as AtomIO from 'atom.io';
2
+ import * as React from 'react';
3
3
 
4
4
  declare const StoreContext: React.Context<AtomIO.__INTERNAL__.Store>;
5
5
  declare const StoreProvider: React.FC<{
@@ -1,5 +1,5 @@
1
- import * as React from 'react';
2
1
  import * as AtomIO from 'atom.io';
2
+ import * as React from 'react';
3
3
 
4
4
  declare const StoreContext: React.Context<AtomIO.__INTERNAL__.Store>;
5
5
  declare const StoreProvider: React.FC<{
@@ -40,17 +40,21 @@ __export(react_exports, {
40
40
  module.exports = __toCommonJS(react_exports);
41
41
 
42
42
  // ../src/react/store-context.tsx
43
- var React = __toESM(require("react"));
44
43
  var AtomIO = __toESM(require("atom.io"));
45
- var import_jsx_runtime = require("react/jsx-runtime");
44
+ var React = __toESM(require("react"));
45
+ var import_jsx_dev_runtime = require("react/jsx-dev-runtime");
46
46
  var StoreContext = React.createContext(
47
47
  AtomIO.__INTERNAL__.IMPLICIT.STORE
48
48
  );
49
- var StoreProvider = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(StoreContext.Provider, { value: store, children });
49
+ var StoreProvider = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => /* @__PURE__ */ (0, import_jsx_dev_runtime.jsxDEV)(StoreContext.Provider, { value: store, children }, void 0, false, {
50
+ fileName: "../src/react/store-context.tsx",
51
+ lineNumber: 12,
52
+ columnNumber: 2
53
+ }, this);
50
54
 
51
55
  // ../src/react/store-hooks.ts
52
- var React2 = __toESM(require("react"));
53
56
  var AtomIO2 = __toESM(require("atom.io"));
57
+ var React2 = __toESM(require("react"));
54
58
  var storeHooks = { useI, useO, useIO };
55
59
  function useI(token) {
56
60
  const store = React2.useContext(StoreContext);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/index.ts","../../src/react/store-context.tsx","../../src/react/store-hooks.ts"],"sourcesContent":["export * from \"./store-context\"\nexport * from \"./store-hooks\"\n","import * as React from \"react\"\n\nimport * as AtomIO from \"atom.io\"\n\nexport const StoreContext = React.createContext<AtomIO.Store>(\n\tAtomIO.__INTERNAL__.IMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: AtomIO.Store\n}> = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import * as React from \"react\"\n\nimport * as AtomIO from \"atom.io\"\n\nimport type { Modifier } from \"~/packages/anvl/src/function\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type StoreHooks = {\n\tuseI: <T>(token: AtomIO.StateToken<T>) => (next: Modifier<T> | T) => void\n\tuseO: <T>(token: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>) => T\n\tuseIO: <T>(token: AtomIO.StateToken<T>) => [T, (next: Modifier<T> | T) => void]\n}\nexport const storeHooks: StoreHooks = { useI, useO, useIO }\n\nexport function useI<T>(\n\ttoken: AtomIO.StateToken<T>,\n): (next: Modifier<T> | T) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst update = (next: Modifier<T> | T) => AtomIO.setState(token, next, store)\n\treturn update\n}\n\nexport function useO<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T {\n\tconst store = React.useContext(StoreContext)\n\treturn React.useSyncExternalStore<T>(\n\t\t(observe) => AtomIO.subscribe(token, observe, store),\n\t\t() => AtomIO.getState(token, store),\n\t)\n}\n\nexport function useIO<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void] {\n\treturn [useO(token), useI(token)]\n}\n\nexport function useStore<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void]\nexport function useStore<T>(token: AtomIO.ReadonlySelectorToken<T>): T\nexport function useStore<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T | [T, (next: Modifier<T> | T) => void] {\n\treturn token.type === `readonly_selector` ? useO(token) : useIO(token)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,YAAuB;AAEvB,aAAwB;AAUvB;AARM,IAAM,eAAqB;AAAA,EAC1B,oBAAa,SAAS;AAC9B;AAEO,IAAM,gBAGR,CAAC,EAAE,UAAU,QAAe,oBAAa,SAAS,MAAM,MAC5D,4CAAC,aAAa,UAAb,EAAsB,OAAO,OAAQ,UAAS;;;ACZhD,IAAAA,SAAuB;AAEvB,IAAAC,UAAwB;AAWjB,IAAM,aAAyB,EAAE,MAAM,MAAM,MAAM;AAEnD,SAAS,KACf,OACkC;AAClC,QAAM,QAAc,kBAAW,YAAY;AAC3C,QAAM,SAAS,CAAC,SAAiC,iBAAS,OAAO,MAAM,KAAK;AAC5E,SAAO;AACR;AAEO,SAAS,KACf,OACI;AACJ,QAAM,QAAc,kBAAW,YAAY;AAC3C,SAAa;AAAA,IACZ,CAAC,YAAmB,kBAAU,OAAO,SAAS,KAAK;AAAA,IACnD,MAAa,iBAAS,OAAO,KAAK;AAAA,EACnC;AACD;AAEO,SAAS,MACf,OACuC;AACvC,SAAO,CAAC,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC;AACjC;AAMO,SAAS,SACf,OAC2C;AAC3C,SAAO,MAAM,SAAS,sBAAsB,KAAK,KAAK,IAAI,MAAM,KAAK;AACtE;","names":["React","AtomIO"]}
1
+ {"version":3,"sources":["../../src/react/index.ts","../../src/react/store-context.tsx","../../src/react/store-hooks.ts"],"sourcesContent":["export * from \"./store-context\"\nexport * from \"./store-hooks\"\n","import * as AtomIO from \"atom.io\"\nimport * as React from \"react\"\n\nexport const StoreContext = React.createContext<AtomIO.Store>(\n\tAtomIO.__INTERNAL__.IMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: AtomIO.Store\n}> = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import * as AtomIO from \"atom.io\"\nimport * as React from \"react\"\n\nimport type { Modifier } from \"~/packages/anvl/src/function\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type StoreHooks = {\n\tuseI: <T>(token: AtomIO.StateToken<T>) => (next: Modifier<T> | T) => void\n\tuseO: <T>(token: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>) => T\n\tuseIO: <T>(token: AtomIO.StateToken<T>) => [T, (next: Modifier<T> | T) => void]\n}\nexport const storeHooks: StoreHooks = { useI, useO, useIO }\n\nexport function useI<T>(\n\ttoken: AtomIO.StateToken<T>,\n): (next: Modifier<T> | T) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst update = (next: Modifier<T> | T) => AtomIO.setState(token, next, store)\n\treturn update\n}\n\nexport function useO<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T {\n\tconst store = React.useContext(StoreContext)\n\treturn React.useSyncExternalStore<T>(\n\t\t(observe) => AtomIO.subscribe(token, observe, store),\n\t\t() => AtomIO.getState(token, store),\n\t)\n}\n\nexport function useIO<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void] {\n\treturn [useO(token), useI(token)]\n}\n\nexport function useStore<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void]\nexport function useStore<T>(token: AtomIO.ReadonlySelectorToken<T>): T\nexport function useStore<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T | [T, (next: Modifier<T> | T) => void] {\n\treturn token.type === `readonly_selector` ? useO(token) : useIO(token)\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,aAAwB;AACxB,YAAuB;AAUtB;AARM,IAAM,eAAqB;AAAA,EAC1B,oBAAa,SAAS;AAC9B;AAEO,IAAM,gBAGR,CAAC,EAAE,UAAU,QAAe,oBAAa,SAAS,MAAM,MAC5D,mDAAC,aAAa,UAAb,EAAsB,OAAO,OAAQ,YAAtC;AAAA;AAAA;AAAA;AAAA,OAA+C;;;ACXhD,IAAAA,UAAwB;AACxB,IAAAC,SAAuB;AAWhB,IAAM,aAAyB,EAAE,MAAM,MAAM,MAAM;AAEnD,SAAS,KACf,OACkC;AAClC,QAAM,QAAc,kBAAW,YAAY;AAC3C,QAAM,SAAS,CAAC,SAAiC,iBAAS,OAAO,MAAM,KAAK;AAC5E,SAAO;AACR;AAEO,SAAS,KACf,OACI;AACJ,QAAM,QAAc,kBAAW,YAAY;AAC3C,SAAa;AAAA,IACZ,CAAC,YAAmB,kBAAU,OAAO,SAAS,KAAK;AAAA,IACnD,MAAa,iBAAS,OAAO,KAAK;AAAA,EACnC;AACD;AAEO,SAAS,MACf,OACuC;AACvC,SAAO,CAAC,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC;AACjC;AAMO,SAAS,SACf,OAC2C;AAC3C,SAAO,MAAM,SAAS,sBAAsB,KAAK,KAAK,IAAI,MAAM,KAAK;AACtE;","names":["AtomIO","React"]}
@@ -1,15 +1,19 @@
1
1
  // ../src/react/store-context.tsx
2
- import * as React from "react";
3
2
  import * as AtomIO from "atom.io";
4
- import { jsx } from "react/jsx-runtime";
3
+ import * as React from "react";
4
+ import { jsxDEV } from "react/jsx-dev-runtime";
5
5
  var StoreContext = React.createContext(
6
6
  AtomIO.__INTERNAL__.IMPLICIT.STORE
7
7
  );
8
- var StoreProvider = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => /* @__PURE__ */ jsx(StoreContext.Provider, { value: store, children });
8
+ var StoreProvider = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => /* @__PURE__ */ jsxDEV(StoreContext.Provider, { value: store, children }, void 0, false, {
9
+ fileName: "../src/react/store-context.tsx",
10
+ lineNumber: 12,
11
+ columnNumber: 2
12
+ }, this);
9
13
 
10
14
  // ../src/react/store-hooks.ts
11
- import * as React2 from "react";
12
15
  import * as AtomIO2 from "atom.io";
16
+ import * as React2 from "react";
13
17
  var storeHooks = { useI, useO, useIO };
14
18
  function useI(token) {
15
19
  const store = React2.useContext(StoreContext);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/store-context.tsx","../../src/react/store-hooks.ts"],"sourcesContent":["import * as React from \"react\"\n\nimport * as AtomIO from \"atom.io\"\n\nexport const StoreContext = React.createContext<AtomIO.Store>(\n\tAtomIO.__INTERNAL__.IMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: AtomIO.Store\n}> = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import * as React from \"react\"\n\nimport * as AtomIO from \"atom.io\"\n\nimport type { Modifier } from \"~/packages/anvl/src/function\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type StoreHooks = {\n\tuseI: <T>(token: AtomIO.StateToken<T>) => (next: Modifier<T> | T) => void\n\tuseO: <T>(token: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>) => T\n\tuseIO: <T>(token: AtomIO.StateToken<T>) => [T, (next: Modifier<T> | T) => void]\n}\nexport const storeHooks: StoreHooks = { useI, useO, useIO }\n\nexport function useI<T>(\n\ttoken: AtomIO.StateToken<T>,\n): (next: Modifier<T> | T) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst update = (next: Modifier<T> | T) => AtomIO.setState(token, next, store)\n\treturn update\n}\n\nexport function useO<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T {\n\tconst store = React.useContext(StoreContext)\n\treturn React.useSyncExternalStore<T>(\n\t\t(observe) => AtomIO.subscribe(token, observe, store),\n\t\t() => AtomIO.getState(token, store),\n\t)\n}\n\nexport function useIO<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void] {\n\treturn [useO(token), useI(token)]\n}\n\nexport function useStore<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void]\nexport function useStore<T>(token: AtomIO.ReadonlySelectorToken<T>): T\nexport function useStore<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T | [T, (next: Modifier<T> | T) => void] {\n\treturn token.type === `readonly_selector` ? useO(token) : useIO(token)\n}\n"],"mappings":";AAAA,YAAY,WAAW;AAEvB,YAAY,YAAY;AAUvB;AARM,IAAM,eAAqB;AAAA,EAC1B,oBAAa,SAAS;AAC9B;AAEO,IAAM,gBAGR,CAAC,EAAE,UAAU,QAAe,oBAAa,SAAS,MAAM,MAC5D,oBAAC,aAAa,UAAb,EAAsB,OAAO,OAAQ,UAAS;;;ACZhD,YAAYA,YAAW;AAEvB,YAAYC,aAAY;AAWjB,IAAM,aAAyB,EAAE,MAAM,MAAM,MAAM;AAEnD,SAAS,KACf,OACkC;AAClC,QAAM,QAAc,kBAAW,YAAY;AAC3C,QAAM,SAAS,CAAC,SAAiC,iBAAS,OAAO,MAAM,KAAK;AAC5E,SAAO;AACR;AAEO,SAAS,KACf,OACI;AACJ,QAAM,QAAc,kBAAW,YAAY;AAC3C,SAAa;AAAA,IACZ,CAAC,YAAmB,kBAAU,OAAO,SAAS,KAAK;AAAA,IACnD,MAAa,iBAAS,OAAO,KAAK;AAAA,EACnC;AACD;AAEO,SAAS,MACf,OACuC;AACvC,SAAO,CAAC,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC;AACjC;AAMO,SAAS,SACf,OAC2C;AAC3C,SAAO,MAAM,SAAS,sBAAsB,KAAK,KAAK,IAAI,MAAM,KAAK;AACtE;","names":["React","AtomIO"]}
1
+ {"version":3,"sources":["../../src/react/store-context.tsx","../../src/react/store-hooks.ts"],"sourcesContent":["import * as AtomIO from \"atom.io\"\nimport * as React from \"react\"\n\nexport const StoreContext = React.createContext<AtomIO.Store>(\n\tAtomIO.__INTERNAL__.IMPLICIT.STORE,\n)\n\nexport const StoreProvider: React.FC<{\n\tchildren: React.ReactNode\n\tstore?: AtomIO.Store\n}> = ({ children, store = AtomIO.__INTERNAL__.IMPLICIT.STORE }) => (\n\t<StoreContext.Provider value={store}>{children}</StoreContext.Provider>\n)\n","import * as AtomIO from \"atom.io\"\nimport * as React from \"react\"\n\nimport type { Modifier } from \"~/packages/anvl/src/function\"\n\nimport { StoreContext } from \"./store-context\"\n\nexport type StoreHooks = {\n\tuseI: <T>(token: AtomIO.StateToken<T>) => (next: Modifier<T> | T) => void\n\tuseO: <T>(token: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>) => T\n\tuseIO: <T>(token: AtomIO.StateToken<T>) => [T, (next: Modifier<T> | T) => void]\n}\nexport const storeHooks: StoreHooks = { useI, useO, useIO }\n\nexport function useI<T>(\n\ttoken: AtomIO.StateToken<T>,\n): (next: Modifier<T> | T) => void {\n\tconst store = React.useContext(StoreContext)\n\tconst update = (next: Modifier<T> | T) => AtomIO.setState(token, next, store)\n\treturn update\n}\n\nexport function useO<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T {\n\tconst store = React.useContext(StoreContext)\n\treturn React.useSyncExternalStore<T>(\n\t\t(observe) => AtomIO.subscribe(token, observe, store),\n\t\t() => AtomIO.getState(token, store),\n\t)\n}\n\nexport function useIO<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void] {\n\treturn [useO(token), useI(token)]\n}\n\nexport function useStore<T>(\n\ttoken: AtomIO.StateToken<T>,\n): [T, (next: Modifier<T> | T) => void]\nexport function useStore<T>(token: AtomIO.ReadonlySelectorToken<T>): T\nexport function useStore<T>(\n\ttoken: AtomIO.ReadonlySelectorToken<T> | AtomIO.StateToken<T>,\n): T | [T, (next: Modifier<T> | T) => void] {\n\treturn token.type === `readonly_selector` ? useO(token) : useIO(token)\n}\n"],"mappings":";AAAA,YAAY,YAAY;AACxB,YAAY,WAAW;AAUtB;AARM,IAAM,eAAqB;AAAA,EAC1B,oBAAa,SAAS;AAC9B;AAEO,IAAM,gBAGR,CAAC,EAAE,UAAU,QAAe,oBAAa,SAAS,MAAM,MAC5D,uBAAC,aAAa,UAAb,EAAsB,OAAO,OAAQ,YAAtC;AAAA;AAAA;AAAA;AAAA,OAA+C;;;ACXhD,YAAYA,aAAY;AACxB,YAAYC,YAAW;AAWhB,IAAM,aAAyB,EAAE,MAAM,MAAM,MAAM;AAEnD,SAAS,KACf,OACkC;AAClC,QAAM,QAAc,kBAAW,YAAY;AAC3C,QAAM,SAAS,CAAC,SAAiC,iBAAS,OAAO,MAAM,KAAK;AAC5E,SAAO;AACR;AAEO,SAAS,KACf,OACI;AACJ,QAAM,QAAc,kBAAW,YAAY;AAC3C,SAAa;AAAA,IACZ,CAAC,YAAmB,kBAAU,OAAO,SAAS,KAAK;AAAA,IACnD,MAAa,iBAAS,OAAO,KAAK;AAAA,EACnC;AACD;AAEO,SAAS,MACf,OACuC;AACvC,SAAO,CAAC,KAAK,KAAK,GAAG,KAAK,KAAK,CAAC;AACjC;AAMO,SAAS,SACf,OAC2C;AAC3C,SAAO,MAAM,SAAS,sBAAsB,KAAK,KAAK,IAAI,MAAM,KAAK;AACtE;","names":["AtomIO","React"]}
@@ -1,15 +1,15 @@
1
1
  {
2
- "name": "atom.io-react",
3
- "private": true,
4
- "main": "dist/index.js",
5
- "types": "dist/index.d.ts",
6
- "module": "dist/index.mjs",
7
- "exports": {
8
- ".": {
9
- "types": "./dist/index.d.ts",
10
- "browser": "./dist/index.mjs",
11
- "import": "./dist/index.mjs",
12
- "require": "./dist/index.js"
13
- }
14
- }
2
+ "name": "atom.io-react",
3
+ "private": true,
4
+ "main": "dist/index.js",
5
+ "types": "dist/index.d.ts",
6
+ "module": "dist/index.mjs",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "browser": "./dist/index.mjs",
11
+ "import": "./dist/index.mjs",
12
+ "require": "./dist/index.js"
13
+ }
14
+ }
15
15
  }