@mic-rexjs/usecases-react 1.3.35 → 1.4.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/dist/index.min.js +1 -1
- package/es/components/UpdateFragment/index.d.ts +2 -0
- package/es/components/UpdateFragment/index.js +8 -0
- package/es/components/UpdateFragment/types.d.ts +3 -0
- package/es/components/UseCaseFragment/index.d.ts +1 -1
- package/es/components/UseCaseFragment/types.d.ts +2 -2
- package/es/configs/defaultUseCaseContext/index.d.ts +3 -1
- package/es/configs/defaultUseCaseContext/index.js +1 -1
- package/es/configs/defaultUseCaseContext/types.d.ts +11 -0
- package/es/configs/defaultUseCaseContext/types.js +1 -0
- package/es/configs/usecaseContextMap/index.d.ts +1 -3
- package/es/configs/usecaseContextMap/types.d.ts +4 -17
- package/es/hooks/useCompareDeps/index.d.ts +1 -0
- package/es/hooks/useCompareDeps/index.js +24 -0
- package/es/hooks/useConstant/index.d.ts +2 -0
- package/es/hooks/useConstant/index.js +5 -0
- package/es/hooks/useConstant/types.d.ts +3 -0
- package/es/hooks/useConstant/types.js +1 -0
- package/es/hooks/useConstantFn/index.d.ts +1 -0
- package/es/hooks/useConstantFn/index.js +7 -0
- package/es/hooks/useOptionsRefCollection/index.d.ts +3 -0
- package/es/hooks/useOptionsRefCollection/index.js +22 -0
- package/es/hooks/useOptionsRefCollection/types.d.ts +2 -0
- package/es/hooks/useOptionsRefCollection/types.js +1 -0
- package/es/hooks/useProvider/index.d.ts +7 -0
- package/es/hooks/useProvider/index.js +17 -0
- package/es/hooks/useProvider/types.d.ts +3 -0
- package/es/hooks/useProvider/types.js +1 -0
- package/es/hooks/useScope/index.d.ts +2 -0
- package/es/hooks/useScope/index.js +3 -0
- package/es/hooks/useScope/types.d.ts +3 -0
- package/es/hooks/useScope/types.js +1 -0
- package/es/hooks/useUseCase/index.js +68 -89
- package/es/hooks/useUseCase/index.test.js +166 -136
- package/es/hooks/useUseCase/types.d.ts +9 -7
- package/es/hooks/useUseCaseContext/index.d.ts +3 -0
- package/es/hooks/useUseCaseContext/index.js +17 -0
- package/es/index.d.ts +3 -2
- package/es/methods/getRootEntity/index.d.ts +2 -0
- package/es/methods/getRootEntity/index.js +9 -0
- package/es/methods/initEntityReducers/index.d.ts +5 -0
- package/es/methods/initEntityReducers/index.js +13 -0
- package/es/methods/initEntityReducers/types.d.ts +3 -0
- package/es/methods/initEntityReducers/types.js +1 -0
- package/es/methods/removeItem/index.d.ts +1 -0
- package/es/methods/removeItem/index.js +7 -0
- package/es/methods/triggerCallbacks/index.d.ts +3 -0
- package/es/methods/triggerCallbacks/index.js +14 -0
- package/es/{hooks/useUseCase/methods → methods}/triggerWatchers/index.d.ts +1 -1
- package/lib/components/UpdateFragment/index.js +16 -0
- package/lib/configs/defaultUseCaseContext/index.js +1 -1
- package/lib/configs/defaultUseCaseContext/types.js +5 -0
- package/lib/hooks/useCompareDeps/index.js +31 -0
- package/lib/hooks/useConstant/index.js +16 -0
- package/lib/hooks/useConstant/types.js +5 -0
- package/lib/hooks/useConstantFn/index.js +18 -0
- package/lib/hooks/useOptionsRefCollection/index.js +29 -0
- package/lib/hooks/useOptionsRefCollection/types.js +5 -0
- package/lib/hooks/useProvider/index.js +30 -0
- package/lib/hooks/useProvider/types.js +5 -0
- package/lib/hooks/useScope/index.js +10 -0
- package/lib/hooks/useScope/types.js +5 -0
- package/lib/hooks/useUseCase/index.js +73 -115
- package/lib/hooks/useUseCase/index.test.js +226 -177
- package/lib/hooks/useUseCaseContext/index.js +24 -0
- package/lib/methods/getRootEntity/index.js +16 -0
- package/lib/methods/initEntityReducers/index.js +29 -0
- package/lib/methods/initEntityReducers/types.js +5 -0
- package/lib/methods/removeItem/index.js +14 -0
- package/lib/methods/triggerCallbacks/index.js +22 -0
- package/package.json +2 -2
- package/es/core/usecases/optionsGetterCellectionUseCase/index.d.ts +0 -2
- package/es/core/usecases/optionsGetterCellectionUseCase/index.js +0 -13
- package/es/core/usecases/optionsGetterCellectionUseCase/types.d.ts +0 -8
- package/es/hooks/useOptionsTransfer/index.d.ts +0 -3
- package/es/hooks/useOptionsTransfer/index.js +0 -15
- package/es/hooks/useUseCase/methods/triggerCallbacks/index.d.ts +0 -3
- package/es/hooks/useUseCase/methods/triggerCallbacks/index.js +0 -11
- package/lib/core/usecases/optionsGetterCellectionUseCase/index.js +0 -23
- package/lib/hooks/useOptionsTransfer/index.js +0 -23
- package/lib/hooks/useUseCase/methods/triggerCallbacks/index.js +0 -32
- /package/es/{core/usecases/optionsGetterCellectionUseCase → components/UpdateFragment}/types.js +0 -0
- /package/es/{hooks/useUseCase/methods → methods}/triggerWatchers/index.js +0 -0
- /package/lib/{core/usecases/optionsGetterCellectionUseCase → components/UpdateFragment}/types.js +0 -0
- /package/lib/{hooks/useUseCase/methods → methods}/triggerWatchers/index.js +0 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.useProvider = void 0;
|
|
8
|
+
var _react = _interopRequireDefault(require("react"));
|
|
9
|
+
var _useConstant = require("../useConstant");
|
|
10
|
+
var _ahooks = require("ahooks");
|
|
11
|
+
var useProvider = function useProvider(context, entity, reducers, optionsRefCollection) {
|
|
12
|
+
var contextValue = (0, _ahooks.useCreation)(function () {
|
|
13
|
+
return {
|
|
14
|
+
entity: entity,
|
|
15
|
+
reducers: reducers,
|
|
16
|
+
optionsRefCollection: optionsRefCollection
|
|
17
|
+
};
|
|
18
|
+
}, [entity, reducers, optionsRefCollection]);
|
|
19
|
+
var contextValueRef = (0, _ahooks.useLatest)(contextValue);
|
|
20
|
+
return (0, _useConstant.useConstant)(function () {
|
|
21
|
+
return function (_ref) {
|
|
22
|
+
var children = _ref.children;
|
|
23
|
+
var ContextProvider = context.Provider;
|
|
24
|
+
return _react["default"].createElement(ContextProvider, {
|
|
25
|
+
value: contextValueRef.current
|
|
26
|
+
}, children);
|
|
27
|
+
};
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
exports.useProvider = useProvider;
|
|
@@ -1,135 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
5
4
|
Object.defineProperty(exports, "__esModule", {
|
|
6
5
|
value: true
|
|
7
6
|
});
|
|
8
7
|
exports.useUseCase = void 0;
|
|
9
|
-
var
|
|
10
|
-
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
11
|
-
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
|
|
8
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
12
9
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
10
|
var _ahooks = require("ahooks");
|
|
14
|
-
var _react =
|
|
11
|
+
var _react = require("react");
|
|
12
|
+
var _useConstant = require("../useConstant");
|
|
13
|
+
var _useConstantFn = require("../useConstantFn");
|
|
14
|
+
var _useProvider = require("../useProvider");
|
|
15
|
+
var _useCompareDeps = require("../useCompareDeps");
|
|
16
|
+
var _initEntityReducers = require("../../methods/initEntityReducers");
|
|
17
|
+
var _useOptionsRefCollection = require("../useOptionsRefCollection");
|
|
18
|
+
var _triggerCallbacks = require("../../methods/triggerCallbacks");
|
|
19
|
+
var _getRootEntity = require("../../methods/getRootEntity");
|
|
20
|
+
var _useUseCaseContext = require("../useUseCaseContext");
|
|
15
21
|
var _defaultUseCaseContext = require("../../configs/defaultUseCaseContext");
|
|
16
|
-
var _usecaseContextMap = require("../../configs/usecaseContextMap");
|
|
17
|
-
var _optionsGetterCellectionUseCase = require("../../core/usecases/optionsGetterCellectionUseCase");
|
|
18
|
-
var _triggerCallbacks = require("./methods/triggerCallbacks");
|
|
19
|
-
var _useOptionsTransfer = require("../useOptionsTransfer");
|
|
20
|
-
var _usecases = require("@mic-rexjs/usecases");
|
|
21
|
-
var _excluded = ["stateless", "watch", "onChange", "options"];
|
|
22
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
24
|
-
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
25
|
-
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
26
22
|
var useUseCase = function useUseCase(arg1, arg2, arg3, arg4) {
|
|
27
|
-
var
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
var
|
|
31
|
-
|
|
32
|
-
entityState =
|
|
33
|
-
setEntityState =
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
var
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return _defaultUseCaseContext.defaultUseCaseContext;
|
|
55
|
-
}
|
|
56
|
-
var ctx = (0, _react.createContext)(null);
|
|
57
|
-
map.set(entityUseCase, ctx);
|
|
58
|
-
return ctx;
|
|
59
|
-
}),
|
|
60
|
-
_useState8 = (0, _slicedToArray2["default"])(_useState7, 1),
|
|
61
|
-
context = _useState8[0];
|
|
62
|
-
var _ref = (0, _react.useContext)(context) || [],
|
|
63
|
-
_ref2 = (0, _slicedToArray2["default"])(_ref, 3),
|
|
64
|
-
contextEntity = _ref2[0],
|
|
65
|
-
contextEntityReducers = _ref2[1],
|
|
66
|
-
contextCollectionReducers = _ref2[2];
|
|
67
|
-
var entity = (0, _react.useMemo)(function () {
|
|
68
|
-
if (!hasDefaultEntity) {
|
|
23
|
+
var hasInitialEntity = (0, _useConstant.useConstant)(typeof arg2 === 'function');
|
|
24
|
+
var options = (hasInitialEntity ? arg3 : arg2) || {};
|
|
25
|
+
var stateless = options.stateless;
|
|
26
|
+
var _useState = (0, _react.useState)(hasInitialEntity && !stateless ? arg1 : null),
|
|
27
|
+
_useState2 = (0, _slicedToArray2["default"])(_useState, 2),
|
|
28
|
+
entityState = _useState2[0],
|
|
29
|
+
setEntityState = _useState2[1];
|
|
30
|
+
var deps = (hasInitialEntity ? arg4 : arg3) || [];
|
|
31
|
+
var depsKey = (0, _useCompareDeps.useCompareDeps)(deps);
|
|
32
|
+
var usecase = (0, _useConstantFn.useConstantFn)(hasInitialEntity ? arg2 : arg1);
|
|
33
|
+
var entityUseCase = usecase;
|
|
34
|
+
var defaultContext = _defaultUseCaseContext.defaultUseCaseContext;
|
|
35
|
+
var context = (0, _useUseCaseContext.useUseCaseContext)(entityUseCase, hasInitialEntity ? null : defaultContext);
|
|
36
|
+
var _useContext = (0, _react.useContext)(context),
|
|
37
|
+
contextEntity = _useContext.entity,
|
|
38
|
+
contextEntityReducers = _useContext.reducers,
|
|
39
|
+
contextOptionsRefCollection = _useContext.optionsRefCollection;
|
|
40
|
+
// 只有 `contextOptionsRefCollection` 是可控的,是当前 `hook` 生成的,所以用其来判断最保险
|
|
41
|
+
var hasContextOptionsRefCollection = (0, _typeof2["default"])(contextOptionsRefCollection) === 'object';
|
|
42
|
+
// 是否需要初始化根 `redurcers`
|
|
43
|
+
var isRoot = hasInitialEntity || !hasContextOptionsRefCollection;
|
|
44
|
+
// 是否为上下文模式
|
|
45
|
+
var isContextMode = hasInitialEntity || hasContextOptionsRefCollection;
|
|
46
|
+
// 获取 `optionsRefCollection`
|
|
47
|
+
var optionsRefCollection = (0, _useOptionsRefCollection.useOptionsRefCollection)(isRoot, contextOptionsRefCollection || null, options);
|
|
48
|
+
var entity = (0, _ahooks.useCreation)(function () {
|
|
49
|
+
if (!hasInitialEntity) {
|
|
69
50
|
return contextEntity;
|
|
70
51
|
}
|
|
52
|
+
return (0, _getRootEntity.getRootEntity)(entityState, arg1, stateless);
|
|
53
|
+
}, [hasInitialEntity, contextEntity, stateless, entityState, arg1]);
|
|
54
|
+
var onEntityChange = (0, _ahooks.useMemoizedFn)(function (newEntity, prevEntity) {
|
|
71
55
|
if (!stateless) {
|
|
72
|
-
|
|
56
|
+
setEntityState(newEntity);
|
|
73
57
|
}
|
|
74
|
-
|
|
75
|
-
return arg1;
|
|
76
|
-
}
|
|
77
|
-
return arg1();
|
|
78
|
-
}, [hasDefaultEntity, contextEntity, stateless, entityState, arg1]);
|
|
79
|
-
var initReducers = (0, _ahooks.useMemoizedFn)(function () {
|
|
80
|
-
var mergedOptions = _objectSpread(_objectSpread({}, restUseCaseOptions), usecaseOptions);
|
|
81
|
-
if (!hasDefaultEntity) {
|
|
82
|
-
return contextEntityReducers || usecase(mergedOptions);
|
|
83
|
-
}
|
|
84
|
-
var _entityReducerUseCase = (0, _usecases.entityReducerUseCase)(),
|
|
85
|
-
createEntityReducers = _entityReducerUseCase.createEntityReducers;
|
|
86
|
-
return createEntityReducers(entity, usecase, _objectSpread(_objectSpread({}, mergedOptions), {}, {
|
|
87
|
-
onChange: function onChange(newEntity, prevEntity) {
|
|
88
|
-
if (hasDefaultEntity && !stateless) {
|
|
89
|
-
setEntityState(newEntity);
|
|
90
|
-
}
|
|
91
|
-
(0, _triggerCallbacks.triggerCallbacks)(optionsGetterListRef.current, newEntity, prevEntity);
|
|
92
|
-
},
|
|
93
|
-
onGenerate: function onGenerate(newEntity, result) {
|
|
94
|
-
return result;
|
|
95
|
-
}
|
|
96
|
-
}));
|
|
58
|
+
(0, _triggerCallbacks.triggerCallbacks)(optionsRefCollection, newEntity, prevEntity);
|
|
97
59
|
});
|
|
98
|
-
var
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
60
|
+
var createReducers = (0, _ahooks.useMemoizedFn)(function () {
|
|
61
|
+
var reducers = {};
|
|
62
|
+
var entityReducers = {};
|
|
63
|
+
if (hasInitialEntity) {
|
|
64
|
+
var initOptions = options;
|
|
65
|
+
entityReducers = (0, _initEntityReducers.initEntityReducers)(entity, entityUseCase, initOptions, onEntityChange);
|
|
66
|
+
} else if (contextEntityReducers) {
|
|
67
|
+
entityReducers = contextEntityReducers;
|
|
68
|
+
} else {
|
|
69
|
+
reducers = usecase(options);
|
|
102
70
|
}
|
|
103
|
-
return
|
|
104
|
-
}
|
|
105
|
-
var
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
if (hasDefaultEntity) {
|
|
122
|
-
return [entity, reducers, Provider];
|
|
123
|
-
}
|
|
124
|
-
return [entity, reducers];
|
|
125
|
-
}, [entity, reducers, hasDefaultEntity, Provider]);
|
|
126
|
-
var result = (0, _react.useMemo)(function () {
|
|
127
|
-
if (context === _defaultUseCaseContext.defaultUseCaseContext) {
|
|
128
|
-
return reducers;
|
|
71
|
+
return [reducers, entityReducers];
|
|
72
|
+
});
|
|
73
|
+
var createReducersDep = hasInitialEntity ? entity : contextEntityReducers;
|
|
74
|
+
var _useCreation = (0, _ahooks.useCreation)(function () {
|
|
75
|
+
void depsKey;
|
|
76
|
+
void createReducersDep;
|
|
77
|
+
return createReducers();
|
|
78
|
+
}, [createReducers, depsKey, createReducersDep]),
|
|
79
|
+
_useCreation2 = (0, _slicedToArray2["default"])(_useCreation, 2),
|
|
80
|
+
reducers = _useCreation2[0],
|
|
81
|
+
entityReducers = _useCreation2[1];
|
|
82
|
+
var Provider = (0, _useProvider.useProvider)(context, entity, entityReducers, optionsRefCollection);
|
|
83
|
+
var coreCollection = (0, _ahooks.useCreation)(function () {
|
|
84
|
+
return [entity, entityReducers, hasInitialEntity ? Provider : null];
|
|
85
|
+
}, [hasInitialEntity, entity, entityReducers, Provider]);
|
|
86
|
+
return (0, _ahooks.useCreation)(function () {
|
|
87
|
+
if (isContextMode) {
|
|
88
|
+
return coreCollection;
|
|
129
89
|
}
|
|
130
|
-
return
|
|
131
|
-
}, [
|
|
132
|
-
void (0, _useOptionsTransfer.useOptionsTransfer)(options, collectionReducers);
|
|
133
|
-
return result;
|
|
90
|
+
return reducers;
|
|
91
|
+
}, [isContextMode, reducers, coreCollection]);
|
|
134
92
|
};
|
|
135
93
|
exports.useUseCase = useUseCase;
|