mobx-react-use-autorun 2.0.11 → 3.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.
package/README.md CHANGED
@@ -23,13 +23,13 @@ Builds the files for production to the `dist` folder.<br/>
23
23
 
24
24
  Publish to npm repository
25
25
 
26
- ## Notes - Define state with useLocalObservable
26
+ ## Notes - Define state with useMobxState
27
27
 
28
- import { useLocalObservable, observer } from 'mobx-react-use-autorun';
28
+ import { useMobxState, observer } from 'mobx-react-use-autorun';
29
29
 
30
30
  export default observer(() => {
31
31
 
32
- const state = useLocalObservable(() => ({ randomNumber: 1 }));
32
+ const state = useMobxState({ randomNumber: 1 });
33
33
 
34
34
  return <div onClick={() => state.randomNumber = Math.random()}>
35
35
  {state.randomNumber}
@@ -40,12 +40,12 @@ more usage:<br/>
40
40
  Form validation<br/>
41
41
 
42
42
  import { Button, TextField } from '@mui/material';
43
- import { observer, useLocalObservable } from 'mobx-react-use-autorun';
43
+ import { observer, useMobxState } from 'mobx-react-use-autorun';
44
44
  import { MessageService } from '../../common/MessageService';
45
45
 
46
46
  export default observer(() => {
47
47
 
48
- const state = useLocalObservable(() => ({
48
+ const state = useMobxState({
49
49
  name: "",
50
50
  submit: false,
51
51
  errors: {
@@ -56,7 +56,7 @@ Form validation<br/>
56
56
  return state.errors.name;
57
57
  }
58
58
  }
59
- }));
59
+ });
60
60
 
61
61
  const ok = async () => {
62
62
  state.submit = true;
@@ -73,30 +73,15 @@ Form validation<br/>
73
73
  </div>)
74
74
  })
75
75
 
76
- ## Notes - Using props and other hooks with useAsLocalSource
77
-
78
- import { observer, useAsLocalSource } from 'mobx-react-use-autorun';
79
- import { useLocation } from 'react-router-dom';
80
-
81
- export default observer((props: { name: string }) => {
82
-
83
- const source = useAsLocalSource({ location: useLocation(), ...props });
84
-
85
- return <div>
86
- {source.name}
87
- {source.location.pathname}
88
- </div>
89
- })
90
-
91
- ## Notes - Subscription property changes with useAutorun
76
+ ## Notes - Subscription property changes with useMobxEffect
92
77
 
93
- import { useLocalObservable, observer, useAutorun, toJS } from 'mobx-react-use-autorun';
78
+ import { useMobxState, observer, useMobxEffect, toJS } from 'mobx-react-use-autorun';
94
79
 
95
80
  export default observer(() => {
96
81
 
97
- const state = useLocalObservable(() => ({ randomNumber: 1 }));
82
+ const state = useMobxState({ randomNumber: 1 });
98
83
 
99
- useAutorun(() => {
84
+ useMobxEffect(() => {
100
85
  console.log(toJS(state))
101
86
  }, [state]);
102
87
 
@@ -108,15 +93,15 @@ Form validation<br/>
108
93
  ## Notes - Ignore frequent asynchronous calls with useAsyncExhaust
109
94
 
110
95
  import { TextField } from "@mui/material";
111
- import { useLocalObservable, observer, useAsyncExhaust } from 'mobx-react-use-autorun';
96
+ import { useMobxState, observer, useAsyncExhaust } from 'mobx-react-use-autorun';
112
97
  import axios from 'axios';
113
98
 
114
99
  export default observer(() => {
115
100
 
116
- const state = useLocalObservable(() => ({
101
+ const state = useMobxState({
117
102
  list: [],
118
103
  searchText: ""
119
- }));
104
+ });
120
105
 
121
106
  const search = useAsyncExhaust(async () => {
122
107
  state.list = await axios.get("/search");
@@ -141,15 +126,6 @@ Form validation<br/>
141
126
 
142
127
  const state = observable({});
143
128
 
144
- ## Notes - Define a delayed promise with timeout
145
-
146
- import { timeout } form 'mobx-react-use-autorun';
147
-
148
- async function(){
149
- await timeout(100);
150
- await timeout(new Date());
151
- }
152
-
153
129
  ## Notes - Get the real data of the proxy object with toJS
154
130
 
155
131
  import { observable, toJS } from 'mobx-react-use-autorun';
package/dist/index.d.ts CHANGED
@@ -1,12 +1,9 @@
1
1
  import './lib/mobx_config';
2
2
  import { toJS, observable } from 'mobx';
3
- import { useLocalObservable, observer } from 'mobx-react-lite';
4
- import { timeout } from './lib/timeout';
5
- import { useAsLocalSource } from './lib/useAsLocalSource';
6
- import { useAutorun } from './lib/useAutorun';
3
+ import { observer } from 'mobx-react-lite';
7
4
  import { useAsyncExhaust } from './lib/useAsyncExhaust';
8
- export { toJS, observable, observer, useLocalObservable };
9
- export { timeout };
10
- export { useAsLocalSource };
11
- export { useAutorun };
5
+ import { useMobxEffect } from './lib/useMobxEffect';
6
+ import { useMobxState } from './lib/useMobxState';
7
+ export { toJS, observable, observer };
8
+ export { useMobxEffect, useMobxState };
12
9
  export { useAsyncExhaust };
package/dist/index.js CHANGED
@@ -1,13 +1,10 @@
1
1
  import './lib/mobx_config';
2
2
  import { toJS, observable } from 'mobx';
3
- import { useLocalObservable, observer } from 'mobx-react-lite';
4
- import { timeout } from './lib/timeout';
5
- import { useAsLocalSource } from './lib/useAsLocalSource';
6
- import { useAutorun } from './lib/useAutorun';
3
+ import { observer } from 'mobx-react-lite';
7
4
  import { useAsyncExhaust } from './lib/useAsyncExhaust';
8
- export { toJS, observable, observer, useLocalObservable };
9
- export { timeout };
10
- export { useAsLocalSource };
11
- export { useAutorun };
5
+ import { useMobxEffect } from './lib/useMobxEffect';
6
+ import { useMobxState } from './lib/useMobxState';
7
+ export { toJS, observable, observer };
8
+ export { useMobxEffect, useMobxState };
12
9
  export { useAsyncExhaust };
13
10
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAA;AAC1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,CAAA;AAClB,OAAO,EAAE,gBAAgB,EAAE,CAAA;AAC3B,OAAO,EAAE,UAAU,EAAE,CAAA;AACrB,OAAO,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../lib/index.tsx"],"names":[],"mappings":"AAAA,OAAO,mBAAmB,CAAA;AAC1B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAA;AACrC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,CAAA"}
@@ -39,7 +39,7 @@ import { useRef } from 'react';
39
39
  import { useMount, useUnmount } from 'react-use';
40
40
  import { catchError, concatMap, debounceTime, EMPTY, from, lastValueFrom, ReplaySubject, Subscription } from 'rxjs';
41
41
  import { exhaustMapWithTrailing } from 'rxjs-exhaustmap-with-trailing';
42
- import { useAsLocalSource } from './useAsLocalSource';
42
+ import { useMobxState } from './useMobxState';
43
43
  export function useAsyncExhaust(callback) {
44
44
  var _this = this;
45
45
  var runCallback = function () {
@@ -67,7 +67,7 @@ export function useAsyncExhaust(callback) {
67
67
  resultSubjectList: [],
68
68
  isUnmount: false,
69
69
  }).current;
70
- var source = useAsLocalSource({ callback: callback });
70
+ var source = useMobxState({}, { callback: callback });
71
71
  useMount(function () {
72
72
  state.subscription.add(state.subject.pipe(debounceTime(0), exhaustMapWithTrailing(function (_a) {
73
73
  var params = _a.params;
@@ -1 +1 @@
1
- {"version":3,"file":"useAsyncExhaust.js","sourceRoot":"","sources":["../../lib/lib/useAsyncExhaust.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useAsyncExhaust.js","sourceRoot":"","sources":["../../lib/lib/useAsyncExhaust.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare const useMobxEffect: (callback: () => void, dependencyList: any[]) => void;
@@ -0,0 +1,20 @@
1
+ import { useMount, useUnmount } from 'react-use';
2
+ import { Subscription } from 'rxjs';
3
+ import { reaction, toJS } from 'mobx';
4
+ import { useMobxState } from './useMobxState';
5
+ export var useMobxEffect = function (callback, dependencyList) {
6
+ var state = useMobxState({
7
+ subscription: new Subscription(),
8
+ }, Object.assign({}, dependencyList));
9
+ var source = useMobxState({}, { callback: callback });
10
+ useMount(function () {
11
+ var disposer = reaction(function () { return [toJS(state)]; }, function () { return source.callback(); }, { fireImmediately: true, delay: 1 });
12
+ state.subscription.add(new Subscription(function () {
13
+ disposer();
14
+ }));
15
+ });
16
+ useUnmount(function () {
17
+ state.subscription.unsubscribe();
18
+ });
19
+ };
20
+ //# sourceMappingURL=useMobxEffect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../lib/lib/useMobxEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,CAAC,IAAM,aAAa,GAAG,UAAC,QAAoB,EAAE,cAAqB;IAErE,IAAM,KAAK,GAAG,YAAY,CAAC;QACvB,YAAY,EAAE,IAAI,YAAY,EAAE;KACnC,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;IAErC,IAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAC,EAAC,QAAQ,UAAA,EAAC,CAAC,CAAC;IAE3C,QAAQ,CAAC;QACL,IAAM,QAAQ,GAAG,QAAQ,CAAC,cAAM,OAAA,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAb,CAAa,EAAE,cAAM,OAAA,MAAM,CAAC,QAAQ,EAAE,EAAjB,CAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE7G,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;YACpC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC;QACP,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ export declare function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(state: T, props?: P): T & P;
@@ -0,0 +1,19 @@
1
+ import { extendObservable, remove, isObservable } from 'mobx';
2
+ import { useLocalObservable } from 'mobx-react-lite';
3
+ export function useMobxState(state, props) {
4
+ var _a, _b;
5
+ var mobxState = useLocalObservable(function () { return state; });
6
+ for (var key in props) {
7
+ if (isObservable(props[key])) {
8
+ mobxState[key] = props[key];
9
+ }
10
+ else {
11
+ if (props[key] !== mobxState[key]) {
12
+ remove(mobxState, key);
13
+ extendObservable(mobxState, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
14
+ }
15
+ }
16
+ }
17
+ return mobxState;
18
+ }
19
+ //# sourceMappingURL=useMobxState.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useMobxState.js","sourceRoot":"","sources":["../../lib/lib/useMobxState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAErD,MAAM,UAAU,YAAY,CAAyD,KAAQ,EAAE,KAAS;;IAEpG,IAAM,SAAS,GAAG,kBAAkB,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAElD,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;QACrB,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE;YAC1B,SAAS,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM;YACH,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE;gBAC/B,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACvB,gBAAgB,CAAC,SAAS,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;aACvE;SACJ;KACJ;IAED,OAAO,SAAS,CAAC;AACrB,CAAC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ declare const useMobxState: (fn: () => any) => void;
2
+ export { useMobxState };
package/lib/index.tsx CHANGED
@@ -1,13 +1,10 @@
1
1
  import './lib/mobx_config'
2
2
  import { toJS, observable } from 'mobx';
3
- import { useLocalObservable, observer } from 'mobx-react-lite';
4
- import { timeout } from './lib/timeout'
5
- import { useAsLocalSource } from './lib/useAsLocalSource';
6
- import { useAutorun } from './lib/useAutorun';
3
+ import { observer } from 'mobx-react-lite';
7
4
  import { useAsyncExhaust } from './lib/useAsyncExhaust';
5
+ import { useMobxEffect } from './lib/useMobxEffect';
6
+ import { useMobxState } from './lib/useMobxState';
8
7
 
9
- export { toJS, observable, observer, useLocalObservable }
10
- export { timeout }
11
- export { useAsLocalSource }
12
- export { useAutorun }
8
+ export { toJS, observable, observer }
9
+ export { useMobxEffect, useMobxState }
13
10
  export { useAsyncExhaust }
@@ -3,7 +3,7 @@ import { useRef } from 'react';
3
3
  import { useMount, useUnmount } from 'react-use';
4
4
  import { catchError, concatMap, debounceTime, EMPTY, from, lastValueFrom, ReplaySubject, Subscription } from 'rxjs';
5
5
  import { exhaustMapWithTrailing } from 'rxjs-exhaustmap-with-trailing';
6
- import { useAsLocalSource } from './useAsLocalSource';
6
+ import { useMobxState } from './useMobxState';
7
7
 
8
8
  export function useAsyncExhaust<T>(callback: T) {
9
9
 
@@ -36,7 +36,7 @@ export function useAsyncExhaust<T>(callback: T) {
36
36
  isUnmount: false,
37
37
  }).current;
38
38
 
39
- const source = useAsLocalSource({ callback });
39
+ const source = useMobxState({}, { callback });
40
40
 
41
41
  useMount(() => {
42
42
  state.subscription.add(state.subject.pipe(
@@ -0,0 +1,25 @@
1
+ import { useMount, useUnmount } from 'react-use';
2
+ import { Subscription } from 'rxjs';
3
+ import { reaction, toJS } from 'mobx'
4
+ import { useMobxState } from './useMobxState';
5
+
6
+ export const useMobxEffect = (callback: () => void, dependencyList: any[]): void => {
7
+
8
+ const state = useMobxState({
9
+ subscription: new Subscription(),
10
+ }, Object.assign({}, dependencyList))
11
+
12
+ const source = useMobxState({},{callback});
13
+
14
+ useMount(() => {
15
+ const disposer = reaction(() => [toJS(state)], () => source.callback(), { fireImmediately: true, delay: 1 });
16
+
17
+ state.subscription.add(new Subscription(() => {
18
+ disposer();
19
+ }));
20
+ })
21
+
22
+ useUnmount(() => {
23
+ state.subscription.unsubscribe();
24
+ })
25
+ }
@@ -0,0 +1,20 @@
1
+ import { extendObservable, remove, isObservable } from 'mobx';
2
+ import { useLocalObservable } from 'mobx-react-lite';
3
+
4
+ export function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(state: T, props?: P): T & P {
5
+
6
+ const mobxState = useLocalObservable(() => state);
7
+
8
+ for (const key in props) {
9
+ if (isObservable(props[key])) {
10
+ mobxState[key] = props[key];
11
+ } else {
12
+ if (props[key] !== mobxState[key]) {
13
+ remove(mobxState, key);
14
+ extendObservable(mobxState, { [key]: props[key] }, { [key]: false })
15
+ }
16
+ }
17
+ }
18
+
19
+ return mobxState;
20
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mobx-react-use-autorun",
3
- "version": "2.0.11",
3
+ "version": "3.0.0",
4
4
  "description": "React Hook for mobx",
5
5
  "scripts": {
6
6
  "build": "npm install -g typescript@4.6.3 @types/node@17.0.23 ts-node@10.7.0 cross-env@7.0.3 && cross-env TS_NODE_SKIP_PROJECT=true ts-node bin/mobx_react_build.ts",
@@ -8,11 +8,11 @@
8
8
  "prepublishOnly": "npm test && npm run build"
9
9
  },
10
10
  "dependencies": {
11
- "mobx": "6.5.0",
12
- "mobx-react-lite": "3.3.0",
13
- "react-use": "17.3.2",
14
- "rxjs": "7.5.5",
15
- "rxjs-exhaustmap-with-trailing": "2.0.0"
11
+ "mobx": ">=6.5.0",
12
+ "mobx-react-lite": ">=3.3.0",
13
+ "react-use": ">=17.3.2",
14
+ "rxjs": ">=7.5.5",
15
+ "rxjs-exhaustmap-with-trailing": ">=2.0.0"
16
16
  },
17
17
  "peerDependencies": {
18
18
  "react": ">=16.8.0"
@@ -31,6 +31,11 @@
31
31
  "react-scripts": "5.0.1"
32
32
  },
33
33
  "license": "MIT",
34
+ "keywords": [
35
+ "react",
36
+ "mobx",
37
+ "typescript"
38
+ ],
34
39
  "main": "./dist/index.js",
35
40
  "types": "./dist/index.d.ts",
36
41
  "eslintConfig": {
@@ -1 +0,0 @@
1
- export declare function timeout(due: number | Date): Promise<void>;
@@ -1,50 +0,0 @@
1
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
- return new (P || (P = Promise))(function (resolve, reject) {
4
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
- step((generator = generator.apply(thisArg, _arguments || [])).next());
8
- });
9
- };
10
- var __generator = (this && this.__generator) || function (thisArg, body) {
11
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
12
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
13
- function verb(n) { return function (v) { return step([n, v]); }; }
14
- function step(op) {
15
- if (f) throw new TypeError("Generator is already executing.");
16
- while (_) try {
17
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
18
- if (y = 0, t) op = [op[0] & 2, t.value];
19
- switch (op[0]) {
20
- case 0: case 1: t = op; break;
21
- case 4: _.label++; return { value: op[1], done: false };
22
- case 5: _.label++; y = op[1]; op = [0]; continue;
23
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
24
- default:
25
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
26
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
27
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
28
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
29
- if (t[2]) _.ops.pop();
30
- _.trys.pop(); continue;
31
- }
32
- op = body.call(thisArg, _);
33
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
34
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
35
- }
36
- };
37
- import { lastValueFrom, timer } from 'rxjs';
38
- export function timeout(due) {
39
- return __awaiter(this, void 0, void 0, function () {
40
- return __generator(this, function (_a) {
41
- switch (_a.label) {
42
- case 0: return [4 /*yield*/, lastValueFrom(timer(due))];
43
- case 1:
44
- _a.sent();
45
- return [2 /*return*/];
46
- }
47
- });
48
- });
49
- }
50
- //# sourceMappingURL=timeout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"timeout.js","sourceRoot":"","sources":["../../lib/lib/timeout.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAE5C,MAAM,UAAgB,OAAO,CAAC,GAAkB;;;;wBAC5C,qBAAM,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAA;;oBAA/B,SAA+B,CAAC;;;;;CACnC"}
@@ -1 +0,0 @@
1
- export declare function useAsLocalSource<T extends object>(data: T): T;
@@ -1,34 +0,0 @@
1
- import { extendObservable, observable, remove, runInAction, isObservable } from 'mobx';
2
- import { useRef } from 'react';
3
- export function useAsLocalSource(data) {
4
- var initStateCallback = function () {
5
- if (Array.isArray(data)) {
6
- throw new Error('Arrays is unsupported!');
7
- }
8
- var initState = observable({}, undefined, { deep: false });
9
- return initState;
10
- };
11
- var state = useRef(initStateCallback()).current;
12
- runInAction(function () {
13
- var _a, _b;
14
- for (var key in state) {
15
- if (!Object.keys(data).includes(key)) {
16
- remove(state, key);
17
- }
18
- }
19
- for (var key in data) {
20
- if (isObservable(data[key])) {
21
- state[key] = data[key];
22
- }
23
- else {
24
- if (data[key] !== state[key]) {
25
- remove(state, key);
26
- extendObservable(state, (_a = {}, _a[key] = data[key], _a), (_b = {}, _b[key] = false, _b));
27
- }
28
- }
29
- }
30
- });
31
- return state;
32
- }
33
- ;
34
- //# sourceMappingURL=useAsLocalSource.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAsLocalSource.js","sourceRoot":"","sources":["../../lib/lib/useAsLocalSource.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACvF,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE/B,MAAM,UAAU,gBAAgB,CAAmB,IAAO;IAEtD,IAAM,iBAAiB,GAAG;QACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC7C;QACD,IAAM,SAAS,GAAG,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAM,CAAC;QAClE,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;IAEF,IAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC;IAElD,WAAW,CAAC;;QACR,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;gBAClC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;aACtB;SACJ;QACD,KAAK,IAAM,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;gBACzB,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aAC1B;iBAAM;gBACH,IAAG,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAC;oBACxB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;oBACnB,gBAAgB,CAAC,KAAK,YAAI,GAAC,GAAG,IAAG,IAAI,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;iBAClE;aACJ;SACJ;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC;AACjB,CAAC;AAAA,CAAC"}
@@ -1 +0,0 @@
1
- export declare const useAutorun: (callback: () => void, dependencyList: any[]) => void;
@@ -1,22 +0,0 @@
1
- import { useLocalObservable } from 'mobx-react-lite';
2
- import { useMount, useUnmount } from 'react-use';
3
- import { Subscription } from 'rxjs';
4
- import { useAsLocalSource } from './useAsLocalSource';
5
- import { reaction, toJS } from 'mobx';
6
- export var useAutorun = function (callback, dependencyList) {
7
- var state = useLocalObservable(function () { return ({
8
- subscription: new Subscription(),
9
- }); });
10
- var dependencyListSource = useAsLocalSource(Object.assign({}, dependencyList));
11
- var source = useAsLocalSource({ callback: callback });
12
- useMount(function () {
13
- var disposer = reaction(function () { return [toJS(dependencyListSource)]; }, function () { return source.callback(); }, { fireImmediately: true, delay: 1 });
14
- state.subscription.add(new Subscription(function () {
15
- disposer();
16
- }));
17
- });
18
- useUnmount(function () {
19
- state.subscription.unsubscribe();
20
- });
21
- };
22
- //# sourceMappingURL=useAutorun.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useAutorun.js","sourceRoot":"","sources":["../../lib/lib/useAutorun.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAErC,MAAM,CAAC,IAAM,UAAU,GAAG,UAAC,QAAoB,EAAE,cAAqB;IAElE,IAAM,KAAK,GAAG,kBAAkB,CAAC,cAAM,OAAA,CAAC;QACpC,YAAY,EAAE,IAAI,YAAY,EAAE;KACnC,CAAC,EAFqC,CAErC,CAAC,CAAA;IAEH,IAAM,oBAAoB,GAAG,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,CAAC,CAAC,CAAA;IAEhF,IAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAE9C,QAAQ,CAAC;QACL,IAAM,QAAQ,GAAG,QAAQ,CAAC,cAAM,OAAA,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAA5B,CAA4B,EAAE,cAAM,OAAA,MAAM,CAAC,QAAQ,EAAE,EAAjB,CAAiB,EAAE,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;QAE5H,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;YACpC,QAAQ,EAAE,CAAC;QACf,CAAC,CAAC,CAAC,CAAC;IACR,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC;QACP,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACrC,CAAC,CAAC,CAAA;AACN,CAAC,CAAA"}
@@ -1,5 +0,0 @@
1
- import { lastValueFrom, timer } from 'rxjs';
2
-
3
- export async function timeout(due: number | Date) {
4
- await lastValueFrom(timer(due));
5
- }
@@ -1,35 +0,0 @@
1
- import { extendObservable, observable, remove, runInAction, isObservable } from 'mobx';
2
- import { useRef } from 'react';
3
-
4
- export function useAsLocalSource<T extends object>(data: T): T {
5
-
6
- const initStateCallback = () => {
7
- if (Array.isArray(data)) {
8
- throw new Error('Arrays is unsupported!');
9
- }
10
- const initState = observable({}, undefined, { deep: false }) as T;
11
- return initState;
12
- };
13
-
14
- const state = useRef(initStateCallback()).current;
15
-
16
- runInAction(() => {
17
- for (const key in state) {
18
- if (!Object.keys(data).includes(key)) {
19
- remove(state, key);
20
- }
21
- }
22
- for (const key in data) {
23
- if (isObservable(data[key])) {
24
- state[key] = data[key];
25
- } else {
26
- if(data[key] !== state[key]){
27
- remove(state, key);
28
- extendObservable(state, { [key]: data[key] }, { [key]: false })
29
- }
30
- }
31
- }
32
- })
33
-
34
- return state;
35
- };
@@ -1,28 +0,0 @@
1
- import { useLocalObservable } from 'mobx-react-lite';
2
- import { useMount, useUnmount } from 'react-use';
3
- import { Subscription } from 'rxjs';
4
- import { useAsLocalSource } from './useAsLocalSource';
5
- import { reaction, toJS } from 'mobx'
6
-
7
- export const useAutorun = (callback: () => void, dependencyList: any[]): void => {
8
-
9
- const state = useLocalObservable(() => ({
10
- subscription: new Subscription(),
11
- }))
12
-
13
- const dependencyListSource = useAsLocalSource(Object.assign({}, dependencyList))
14
-
15
- const source = useAsLocalSource({ callback });
16
-
17
- useMount(() => {
18
- const disposer = reaction(() => [toJS(dependencyListSource)], () => source.callback(), { fireImmediately: true, delay: 1 });
19
-
20
- state.subscription.add(new Subscription(() => {
21
- disposer();
22
- }));
23
- })
24
-
25
- useUnmount(() => {
26
- state.subscription.unsubscribe();
27
- })
28
- }