mobx-react-use-autorun 2.0.12 → 3.0.1
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 +13 -37
- package/dist/index.d.ts +5 -8
- package/dist/index.js +5 -8
- package/dist/index.js.map +1 -1
- package/dist/lib/useAsyncExhaust.js +2 -2
- package/dist/lib/useAsyncExhaust.js.map +1 -1
- package/dist/lib/useMobxEffect.d.ts +1 -0
- package/dist/lib/useMobxEffect.js +20 -0
- package/dist/lib/useMobxEffect.js.map +1 -0
- package/dist/lib/useMobxState.d.ts +1 -0
- package/dist/lib/useMobxState.js +20 -0
- package/dist/lib/useMobxState.js.map +1 -0
- package/lib/index.d.ts +6 -0
- package/lib/index.tsx +5 -8
- package/lib/lib/useAsyncExhaust.tsx +2 -2
- package/lib/lib/useMobxEffect.tsx +25 -0
- package/lib/lib/useMobxState.tsx +22 -0
- package/package.json +11 -6
- package/dist/lib/timeout.d.ts +0 -1
- package/dist/lib/timeout.js +0 -50
- package/dist/lib/timeout.js.map +0 -1
- package/dist/lib/useAsLocalSource.d.ts +0 -1
- package/dist/lib/useAsLocalSource.js +0 -34
- package/dist/lib/useAsLocalSource.js.map +0 -1
- package/dist/lib/useAutorun.d.ts +0 -1
- package/dist/lib/useAutorun.js +0 -22
- package/dist/lib/useAutorun.js.map +0 -1
- package/lib/lib/timeout.tsx +0 -5
- package/lib/lib/useAsLocalSource.tsx +0 -35
- package/lib/lib/useAutorun.tsx +0 -28
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
|
|
26
|
+
## Notes - Define state with useMobxState
|
|
27
27
|
|
|
28
|
-
import {
|
|
28
|
+
import { useMobxState, observer } from 'mobx-react-use-autorun';
|
|
29
29
|
|
|
30
30
|
export default observer(() => {
|
|
31
31
|
|
|
32
|
-
const state =
|
|
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,
|
|
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 =
|
|
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 -
|
|
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 {
|
|
78
|
+
import { useMobxState, observer, useMobxEffect, toJS } from 'mobx-react-use-autorun';
|
|
94
79
|
|
|
95
80
|
export default observer(() => {
|
|
96
81
|
|
|
97
|
-
const state =
|
|
82
|
+
const state = useMobxState({ randomNumber: 1 });
|
|
98
83
|
|
|
99
|
-
|
|
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 {
|
|
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 =
|
|
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 {
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
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 {
|
|
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
|
-
|
|
9
|
-
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
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,
|
|
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 {
|
|
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 =
|
|
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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useAsyncExhaust.js","sourceRoot":"","sources":["../../lib/lib/useAsyncExhaust.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpH,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,MAAM,UAAU,eAAe,CAAI,QAAW;IAA9C,iBAqFC;IAnFG,IAAM,WAAW,GAAQ;QACrB,IAAI,KAAK,CAAC,SAAS,EAAE;YACjB,IAAM,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACrE,oBAAoB,CAAC,KAAK,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;YACvC,OAAO,oBAAoB,CAAC;SAC/B;aAAM;YACH,IAAM,aAAa,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAM,oBAAoB,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;YAC1D,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBACzB,OAAO,EAAE,aAAa;gBACtB,OAAO,EAAE,oBAAoB;aAChC,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;gBACf,MAAM,EAAE,SAAS;aACpB,CAAC,CAAC;YACH,OAAO,oBAAoB,CAAC;SAC/B;IACL,CAAC,CAAA;IAED,IAAM,KAAK,GAAG,MAAM,CAAC;QACjB,YAAY,EAAE,IAAI,YAAY,EAAE;QAChC,OAAO,EAAE,IAAI,aAAa,CAAC,CAAC,CAAC;QAC7B,iBAAiB,EAAE,EAGhB;QACH,SAAS,EAAE,KAAK;KACnB,CAAC,CAAC,OAAO,CAAC;IAEX,IAAM,MAAM,GAAG,YAAY,CAAC,EAAE,EAAE,EAAE,QAAQ,UAAA,EAAE,CAAC,CAAC;IAE9C,QAAQ,CAAC;QACL,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CACrC,YAAY,CAAC,CAAC,CAAC,EACf,sBAAsB,CAAC,UAAC,EAAe;gBAAb,MAAM,YAAA;YAC5B,IAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC,CAAC;;4BAAqB,qBAAO,MAAM,CAAC,QAAQ,OAAf,MAAM,EAAqB,MAAM,GAAC;4BAAhD,sBAAO,SAAyC,EAAA;;qBAAE,CAAC,EAAE,CAAC,CAAC,IAAI,CAClF,SAAS,CAAC,UAAC,MAAM;wCACF,aAAa;oBACpB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;oBACnC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACjC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;wBAC9B,IAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,aAAa,EAAnB,CAAmB,CAAC,CAAC;wBAC1E,IAAI,KAAK,IAAI,CAAC,EAAE;4BACZ,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBAC5C;qBACJ;;gBARL,KAA4B,UAAiB,EAAjB,uCAAiB,EAAjB,+BAAiB,EAAjB,IAAiB;oBAAxC,IAAM,aAAa,0BAAA;4BAAb,aAAa;iBASvB;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,EACF,UAAU,CAAC,UAAC,KAAK;wCACF,aAAa;oBACpB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;oBACnC,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;wBAC9B,IAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,aAAa,EAAnB,CAAmB,CAAC,CAAC;wBAC1E,IAAI,KAAK,IAAI,CAAC,EAAE;4BACZ,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;yBAC5C;qBACJ;;gBAPL,KAA4B,UAAiB,EAAjB,uCAAiB,EAAjB,+BAAiB,EAAjB,IAAiB;oBAAxC,IAAM,aAAa,0BAAA;4BAAb,aAAa;iBAQvB;gBACD,OAAO,KAAK,CAAC;YACjB,CAAC,CAAC,CACL,CAAC;QACN,CAAC,CAAC,CACL,CAAC,SAAS,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,CAAA;IAEF,UAAU,CAAC;QACP,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACjC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;gCACZ,aAAa;YACpB,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,cAAM,OAAA,IAAI,EAAJ,CAAI,CAAC,CAAC;YACxC,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;YACrD,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC9B,IAAM,KAAK,GAAG,KAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,KAAK,aAAa,EAAnB,CAAmB,CAAC,CAAC;gBAC1E,IAAI,KAAK,IAAI,CAAC,EAAE;oBACZ,KAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;iBAC5C;aACJ;;QARL,KAA4B,UAA6B,EAA7B,KAAA,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,EAA7B,cAA6B,EAA7B,IAA6B;YAApD,IAAM,aAAa,SAAA;oBAAb,aAAa;SASvB;IACL,CAAC,CAAC,CAAA;IAEF,OAAO,WAAgB,CAAC;AAC5B,CAAC"}
|
|
@@ -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,20 @@
|
|
|
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(typeof state === "function" ? state : function () { return state; });
|
|
6
|
+
var propsResult = typeof props === "function" ? props() : props;
|
|
7
|
+
for (var key in propsResult) {
|
|
8
|
+
if (isObservable(propsResult[key])) {
|
|
9
|
+
mobxState[key] = propsResult[key];
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
if (propsResult[key] !== mobxState[key]) {
|
|
13
|
+
remove(mobxState, key);
|
|
14
|
+
extendObservable(mobxState, (_a = {}, _a[key] = propsResult[key], _a), (_b = {}, _b[key] = false, _b));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return mobxState;
|
|
19
|
+
}
|
|
20
|
+
//# 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,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAEjG,IAAM,WAAW,GAAG,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;IAElE,KAAK,IAAM,GAAG,IAAI,WAAW,EAAE;QAC3B,IAAI,YAAY,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE;YAChC,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;SACrC;aAAM;YACH,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE;gBACrC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACvB,gBAAgB,CAAC,SAAS,YAAI,GAAC,GAAG,IAAG,WAAW,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;aAC7E;SACJ;KACJ;IAED,OAAO,SAAgB,CAAC;AAC5B,CAAC"}
|
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
declare function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(state: T, props?: P): T & P;
|
|
2
|
+
declare function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(statefn: () => T, propsfn: () => P): T & P;
|
|
3
|
+
declare function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(statefn: () => T, props?: P): T & P;
|
|
4
|
+
declare function useMobxState<T extends Record<any, any>, P extends Record<any, any>>(state: T, propsfn: () => P): T & P;
|
|
5
|
+
|
|
6
|
+
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 {
|
|
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
|
|
10
|
-
export {
|
|
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 {
|
|
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 =
|
|
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,22 @@
|
|
|
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(typeof state === "function" ? (state as any) : () => state);
|
|
7
|
+
|
|
8
|
+
const propsResult = typeof props === "function" ? props() : props;
|
|
9
|
+
|
|
10
|
+
for (const key in propsResult) {
|
|
11
|
+
if (isObservable(propsResult[key])) {
|
|
12
|
+
mobxState[key] = propsResult[key];
|
|
13
|
+
} else {
|
|
14
|
+
if (propsResult[key] !== mobxState[key]) {
|
|
15
|
+
remove(mobxState, key);
|
|
16
|
+
extendObservable(mobxState, { [key]: propsResult[key] }, { [key]: false })
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
return mobxState as any;
|
|
22
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobx-react-use-autorun",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.1",
|
|
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": {
|
package/dist/lib/timeout.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare function timeout(due: number | Date): Promise<void>;
|
package/dist/lib/timeout.js
DELETED
|
@@ -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
|
package/dist/lib/timeout.js.map
DELETED
|
@@ -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 { useState } 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({});
|
|
9
|
-
return initState;
|
|
10
|
-
};
|
|
11
|
-
var state = useState(initStateCallback)[0];
|
|
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,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,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,CAAM,CAAC;QACtC,OAAO,SAAS,CAAC;IACrB,CAAC,CAAC;IAEK,IAAA,KAAK,GAAI,QAAQ,CAAC,iBAAiB,CAAC,GAA/B,CAAgC;IAE5C,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,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE;oBAC1B,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"}
|
package/dist/lib/useAutorun.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export declare const useAutorun: (callback: () => void, dependencyList: any[]) => void;
|
package/dist/lib/useAutorun.js
DELETED
|
@@ -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"}
|
package/lib/lib/timeout.tsx
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { extendObservable, observable, remove, runInAction, isObservable } from 'mobx';
|
|
2
|
-
import { useState } 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({}) as T;
|
|
11
|
-
return initState;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
const [state] = useState(initStateCallback);
|
|
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
|
-
};
|
package/lib/lib/useAutorun.tsx
DELETED
|
@@ -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
|
-
}
|