mobx-react-use-autorun 4.0.27 → 4.0.29-beta
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/dist/cjs/js/useMobxEffect.js +45 -4
- package/dist/cjs/js/useMobxEffect.js.map +1 -1
- package/dist/cjs/js/useMobxState.js +1 -2
- package/dist/cjs/js/useMobxState.js.map +1 -1
- package/dist/cjs/js/useMount.js +1 -2
- package/dist/cjs/js/useMount.js.map +1 -1
- package/dist/esm/js/useMobxEffect.js +47 -6
- package/dist/esm/js/useMobxEffect.js.map +1 -1
- package/lib/js/useMobxEffect.tsx +41 -7
- package/package.json +2 -2
|
@@ -1,14 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
2
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
14
|
exports.useMobxEffect = void 0;
|
|
4
15
|
var useMount_1 = require("./useMount");
|
|
5
16
|
var rxjs_1 = require("rxjs");
|
|
6
17
|
var mobx_1 = require("mobx");
|
|
7
|
-
var useMobxState_1 = require("./useMobxState");
|
|
8
18
|
var react_1 = require("react");
|
|
19
|
+
var mobx_2 = require("mobx");
|
|
9
20
|
var useMobxEffect = function (callback, dependencyList) {
|
|
10
|
-
var
|
|
11
|
-
|
|
21
|
+
var callbackRef = (0, react_1.useRef)({ callback: callback });
|
|
22
|
+
callbackRef.current.callback = callback;
|
|
23
|
+
var keyListOfSourceRef = (0, react_1.useRef)([]);
|
|
24
|
+
var props = Object.assign({}, dependencyList);
|
|
25
|
+
var sourceRef = (0, react_1.useRef)((0, mobx_1.observable)(__assign({}, props)));
|
|
26
|
+
(0, mobx_2.runInAction)(function () {
|
|
27
|
+
var _a, _b;
|
|
28
|
+
var _c;
|
|
29
|
+
if (dependencyList) {
|
|
30
|
+
for (var _i = 0, _d = keyListOfSourceRef.current; _i < _d.length; _i++) {
|
|
31
|
+
var key = _d[_i];
|
|
32
|
+
if (!Object.keys(props).includes(key)) {
|
|
33
|
+
(0, mobx_2.remove)(sourceRef.current, key);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
for (var key in props) {
|
|
37
|
+
if ((0, mobx_2.isObservable)(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
|
|
38
|
+
Object.defineProperty(sourceRef.current, key, Object.getOwnPropertyDescriptor(props, key));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
if (props[key] !== sourceRef.current[key]) {
|
|
42
|
+
(0, mobx_2.remove)(sourceRef.current, key);
|
|
43
|
+
(0, mobx_2.extendObservable)(sourceRef.current, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
|
|
48
|
+
for (var key in props) {
|
|
49
|
+
keyListOfSourceRef.current.push(key);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
12
53
|
(0, react_1.useEffect)(function () {
|
|
13
54
|
if (!dependencyList) {
|
|
14
55
|
callback();
|
|
@@ -16,7 +57,7 @@ var useMobxEffect = function (callback, dependencyList) {
|
|
|
16
57
|
});
|
|
17
58
|
(0, useMount_1.useMount)(function (subscription) {
|
|
18
59
|
if (dependencyList) {
|
|
19
|
-
var disposer_1 = (0, mobx_1.reaction)(function () { return [(0, mobx_1.toJS)(
|
|
60
|
+
var disposer_1 = (0, mobx_1.reaction)(function () { return [(0, mobx_1.toJS)(sourceRef.current)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
|
|
20
61
|
subscription.add(new rxjs_1.Subscription(function () {
|
|
21
62
|
disposer_1();
|
|
22
63
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useMobxState =
|
|
3
|
+
exports.useMobxState = useMobxState;
|
|
4
4
|
var mobx_1 = require("mobx");
|
|
5
5
|
var mobx_react_lite_1 = require("mobx-react-lite");
|
|
6
6
|
var react_1 = require("react");
|
|
@@ -36,5 +36,4 @@ function useMobxState(state, props) {
|
|
|
36
36
|
});
|
|
37
37
|
return mobxState;
|
|
38
38
|
}
|
|
39
|
-
exports.useMobxState = useMobxState;
|
|
40
39
|
//# sourceMappingURL=useMobxState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMobxState.js","sourceRoot":"","sources":["../../../lib/js/useMobxState.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMobxState.js","sourceRoot":"","sources":["../../../lib/js/useMobxState.tsx"],"names":[],"mappings":";;AAOA,oCAkCC;AAzCD,6BAA2E;AAC3E,mDAAqD;AACrD,+BAA+B;AAK/B,SAAgB,YAAY,CAAyD,KAAoB,EAAE,KAAS;IAClH,IAAM,SAAS,GAAG,IAAA,oCAAkB,EAAC,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAE,KAAa,CAAC,CAAC,CAAC,cAAM,OAAA,KAAK,EAAL,CAAK,CAAC,CAAC;IAEjG,IAAM,cAAc,GAAG,IAAA,cAAM,EAAW,EAAE,CAAC,CAAC;IAE5C,IAAA,kBAAW,EAAC;;;QAEV,IAAI,KAAK,EAAE,CAAC;YAEV,KAAkB,UAAsB,EAAtB,KAAA,cAAc,CAAC,OAAO,EAAtB,cAAsB,EAAtB,IAAsB,EAAE,CAAC;gBAAtC,IAAM,GAAG,SAAA;gBACZ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtC,IAAA,aAAM,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;YAED,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,IAAI,IAAA,mBAAY,EAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAI,MAAA,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAC,0CAAE,GAAG,CAAA,EAAE,CAAC;oBACjF,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,GAAG,CAAQ,CAAC,CAAA;gBAC3F,CAAC;qBAAM,CAAC;oBACN,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;wBAClC,IAAA,aAAM,EAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBACvB,IAAA,uBAAgB,EAAC,SAAS,YAAI,GAAC,GAAG,IAAG,KAAK,CAAC,GAAG,CAAC,iBAAM,GAAC,GAAG,IAAG,KAAK,MAAG,CAAA;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChE,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE,CAAC;gBACxB,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,OAAO,SAAgB,CAAC;AAC1B,CAAC"}
|
package/dist/cjs/js/useMount.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.useMount =
|
|
3
|
+
exports.useMount = useMount;
|
|
4
4
|
var react_1 = require("react");
|
|
5
5
|
var rxjs_1 = require("rxjs");
|
|
6
6
|
var useMobxState_1 = require("./useMobxState");
|
|
@@ -20,5 +20,4 @@ function useMount(callback) {
|
|
|
20
20
|
return function () { return subscription.unsubscribe(); };
|
|
21
21
|
}, []);
|
|
22
22
|
}
|
|
23
|
-
exports.useMount = useMount;
|
|
24
23
|
//# sourceMappingURL=useMount.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMount.js","sourceRoot":"","sources":["../../../lib/js/useMount.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useMount.js","sourceRoot":"","sources":["../../../lib/js/useMount.tsx"],"names":[],"mappings":";;AAIA,4BAmBC;AAvBD,+BAAkC;AAClC,6BAAoC;AACpC,+CAA8C;AAE9C,SAAgB,QAAQ,CAAC,QAA8C;IAErE,IAAM,KAAK,GAAG,IAAA,2BAAY,EAAC;QACzB,YAAY,EAAE,IAAI,mBAAY,EAAE;KACjC,CAAC,CAAC;IAEH,IAAA,iBAAS,EAAC;QACR,IAAM,YAAY,GAAG,IAAI,mBAAY,EAAE,CAAC;QACxC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC;QAClC,OAAO,cAAM,OAAA,YAAY,CAAC,WAAW,EAAE,EAA1B,CAA0B,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,IAAA,iBAAS,EAAC;QACR,IAAM,YAAY,GAAG,IAAI,mBAAY,EAAE,CAAC;QACxC,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACrC,QAAQ,CAAC,YAAY,CAAC,CAAC;QACvB,OAAO,cAAM,OAAA,YAAY,CAAC,WAAW,EAAE,EAA1B,CAA0B,CAAC;IAC1C,CAAC,EAAE,EAAE,CAAC,CAAA;AAER,CAAC"}
|
|
@@ -1,11 +1,52 @@
|
|
|
1
|
+
var __assign = (this && this.__assign) || function () {
|
|
2
|
+
__assign = Object.assign || function(t) {
|
|
3
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
4
|
+
s = arguments[i];
|
|
5
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
6
|
+
t[p] = s[p];
|
|
7
|
+
}
|
|
8
|
+
return t;
|
|
9
|
+
};
|
|
10
|
+
return __assign.apply(this, arguments);
|
|
11
|
+
};
|
|
1
12
|
import { useMount } from './useMount';
|
|
2
13
|
import { Subscription } from 'rxjs';
|
|
3
|
-
import { reaction, toJS } from 'mobx';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
14
|
+
import { observable, reaction, toJS } from 'mobx';
|
|
15
|
+
import { useEffect, useRef } from 'react';
|
|
16
|
+
import { extendObservable, remove, isObservable, runInAction } from 'mobx';
|
|
6
17
|
export var useMobxEffect = function (callback, dependencyList) {
|
|
7
|
-
var
|
|
8
|
-
|
|
18
|
+
var callbackRef = useRef({ callback: callback });
|
|
19
|
+
callbackRef.current.callback = callback;
|
|
20
|
+
var keyListOfSourceRef = useRef([]);
|
|
21
|
+
var props = Object.assign({}, dependencyList);
|
|
22
|
+
var sourceRef = useRef(observable(__assign({}, props)));
|
|
23
|
+
runInAction(function () {
|
|
24
|
+
var _a, _b;
|
|
25
|
+
var _c;
|
|
26
|
+
if (dependencyList) {
|
|
27
|
+
for (var _i = 0, _d = keyListOfSourceRef.current; _i < _d.length; _i++) {
|
|
28
|
+
var key = _d[_i];
|
|
29
|
+
if (!Object.keys(props).includes(key)) {
|
|
30
|
+
remove(sourceRef.current, key);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
for (var key in props) {
|
|
34
|
+
if (isObservable(props[key]) || ((_c = Object.getOwnPropertyDescriptor(props, key)) === null || _c === void 0 ? void 0 : _c.get)) {
|
|
35
|
+
Object.defineProperty(sourceRef.current, key, Object.getOwnPropertyDescriptor(props, key));
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
if (props[key] !== sourceRef.current[key]) {
|
|
39
|
+
remove(sourceRef.current, key);
|
|
40
|
+
extendObservable(sourceRef.current, (_a = {}, _a[key] = props[key], _a), (_b = {}, _b[key] = false, _b));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
|
|
45
|
+
for (var key in props) {
|
|
46
|
+
keyListOfSourceRef.current.push(key);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
9
50
|
useEffect(function () {
|
|
10
51
|
if (!dependencyList) {
|
|
11
52
|
callback();
|
|
@@ -13,7 +54,7 @@ export var useMobxEffect = function (callback, dependencyList) {
|
|
|
13
54
|
});
|
|
14
55
|
useMount(function (subscription) {
|
|
15
56
|
if (dependencyList) {
|
|
16
|
-
var disposer_1 = reaction(function () { return [toJS(
|
|
57
|
+
var disposer_1 = reaction(function () { return [toJS(sourceRef.current)]; }, function () { return callbackRef.current.callback(); }, { fireImmediately: true, delay: 1 });
|
|
17
58
|
subscription.add(new Subscription(function () {
|
|
18
59
|
disposer_1();
|
|
19
60
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"useMobxEffect.js","sourceRoot":"","sources":["../../../lib/js/useMobxEffect.tsx"],"names":[],"mappings":"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"}
|
package/lib/js/useMobxEffect.tsx
CHANGED
|
@@ -1,15 +1,49 @@
|
|
|
1
1
|
import { useMount } from './useMount';
|
|
2
2
|
import { Subscription } from 'rxjs';
|
|
3
|
-
import { reaction, toJS } from 'mobx'
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { observable, reaction, toJS } from 'mobx'
|
|
4
|
+
import { useEffect, useRef } from 'react';
|
|
5
|
+
import { extendObservable, remove, isObservable, runInAction } from 'mobx';
|
|
6
6
|
|
|
7
7
|
export const useMobxEffect = (callback: () => void, dependencyList?: any[]): void => {
|
|
8
8
|
|
|
9
|
-
const
|
|
10
|
-
}, { callback })
|
|
9
|
+
const callbackRef = useRef<{ callback: () => void }>({ callback: callback });
|
|
11
10
|
|
|
12
|
-
|
|
11
|
+
callbackRef.current!.callback = callback;
|
|
12
|
+
|
|
13
|
+
const keyListOfSourceRef = useRef<string[]>([]);
|
|
14
|
+
|
|
15
|
+
const props = Object.assign({}, dependencyList);
|
|
16
|
+
|
|
17
|
+
const sourceRef = useRef(observable({
|
|
18
|
+
...props
|
|
19
|
+
}));
|
|
20
|
+
|
|
21
|
+
runInAction(() => {
|
|
22
|
+
if (dependencyList) {
|
|
23
|
+
|
|
24
|
+
for (const key of keyListOfSourceRef.current) {
|
|
25
|
+
if (!Object.keys(props).includes(key)) {
|
|
26
|
+
remove(sourceRef.current!, key);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
for (const key in props) {
|
|
31
|
+
if (isObservable(props[key]) || Object.getOwnPropertyDescriptor(props, key)?.get) {
|
|
32
|
+
Object.defineProperty(sourceRef.current!, key, Object.getOwnPropertyDescriptor(props, key) as any)
|
|
33
|
+
} else {
|
|
34
|
+
if (props[key] !== sourceRef.current![key]) {
|
|
35
|
+
remove(sourceRef.current!, key);
|
|
36
|
+
extendObservable(sourceRef.current!, { [key]: props[key] }, { [key]: false })
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
keyListOfSourceRef.current.splice(0, keyListOfSourceRef.current.length);
|
|
42
|
+
for (const key in props) {
|
|
43
|
+
keyListOfSourceRef.current.push(key);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
})
|
|
13
47
|
|
|
14
48
|
useEffect(() => {
|
|
15
49
|
if (!dependencyList) {
|
|
@@ -19,7 +53,7 @@ export const useMobxEffect = (callback: () => void, dependencyList?: any[]): voi
|
|
|
19
53
|
|
|
20
54
|
useMount((subscription) => {
|
|
21
55
|
if (dependencyList) {
|
|
22
|
-
const disposer = reaction(() => [toJS(
|
|
56
|
+
const disposer = reaction(() => [toJS(sourceRef.current)], () => callbackRef.current!.callback(), { fireImmediately: true, delay: 1 });
|
|
23
57
|
|
|
24
58
|
subscription.add(new Subscription(() => {
|
|
25
59
|
disposer();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mobx-react-use-autorun",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.29-beta",
|
|
4
4
|
"description": "Provide concise usage for mobx in react",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"test": "npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_test.ts",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"make": "npx -y -p typescript -p ts-node ts-node --skipProject bin/mobx_react_make.ts"
|
|
9
9
|
},
|
|
10
10
|
"dependencies": {
|
|
11
|
-
"mobx": "6.12.
|
|
11
|
+
"mobx": "6.12.4",
|
|
12
12
|
"mobx-react-lite": "4.0.7",
|
|
13
13
|
"rxjs": "7.8.1"
|
|
14
14
|
},
|