UNPKG

reshow-return

Version:

reshow-return (simple connect component with reshow-flux)

74 lines (69 loc) 2.46 kB
"use strict"; 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;