reshow-return
Version:
reshow-return (simple connect component with reshow-flux)
74 lines (69 loc) • 2.46 kB
JavaScript
;
var _interopRequireDefault = require("reshow-runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("reshow-runtime/helpers/interopRequireWildcard");
exports.__esModule = true;
exports["default"] = void 0;
var _react = _interopRequireWildcard(require("react"));
var React = _react;
var _reshowFlux = require("reshow-flux");
var _reshowBuild = _interopRequireDefault(require("reshow-build"));
var _callFunc = _interopRequireDefault(require("call-func"));
var _Return = _interopRequireDefault(require("./ui/organisms/Return.js"));
// @ts-check
/**
* @template StateType
* @template ActionType
* @typedef {import('reshow-flux-base').DispatchFunction<StateType, ActionType>} DispatchType
*/
/**
* @typedef {string[]|Immutable.Seq} RenderKeysType
*/
/**
* @template ChildrenType
* @param {RenderKeysType} [initRenderKeys]
* @param {{[key: string]: React.ReactElement}|Immutable.Map<string,React.ReactElement>} [initChildren]
* @returns {[React.ReactElement[], DispatchType<any, ChildrenType>, DispatchType<any, RenderKeysType>]}
*/
var usePartialRender = function usePartialRender(initRenderKeys, initChildren) {
var _useReduceStore = (0, _reshowFlux.useReduceStore)(function (state, action) {
return (0, _reshowFlux.mergeMap)(state, action);
}, function () {
return (0, _reshowFlux.Map)((0, _callFunc["default"])(initChildren));
}),
renderStore = _useReduceStore[0],
setPartialRender = _useReduceStore[1];
var _useState = (0, _react.useState)(function () {
return (0, _callFunc["default"])(initRenderKeys);
}),
renderKeys = _useState[0],
setRenderKeys = _useState[1];
var renderItems = (0, _react.useMemo)(function () {
var buildReturn = (0, _reshowBuild["default"])((0, _reshowBuild["default"])(_Return["default"])({
store: renderStore
}));
/**
* renderKeys could use array like data structure.
* such as immutable.js
*/
return (renderKeys || []).map(
/**
* @param {string} name
*/
function (name) {
return buildReturn({
key: name,
name: name,
initStates: [name]
},
/**
* @param {any} props
*/
function (props) {
return props[props.name] || null;
});
});
}, [renderKeys]);
return [renderItems, setPartialRender, setRenderKeys];
};
var _default = exports["default"] = usePartialRender;
module.exports = exports.default;