reshow-return
Version:
reshow-return (simple connect component with reshow-flux)
51 lines (49 loc) • 2.05 kB
JavaScript
;
var _interopRequireDefault = require("reshow-runtime/helpers/interopRequireDefault");
var _interopRequireWildcard = require("reshow-runtime/helpers/interopRequireWildcard");
exports.__esModule = true;
exports["default"] = void 0;
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("reshow-runtime/helpers/objectWithoutPropertiesLoose"));
var React = _interopRequireWildcard(require("react"));
var _reshowBuild = _interopRequireDefault(require("reshow-build"));
var _reshowHooks = require("reshow-hooks");
var _reshowReturn = require("reshow-return");
var _hydrate = _interopRequireDefault(require("../../hydrate.js"));
var _excluded = ["isHydrate"],
_excluded2 = ["children", "backfillProps"]; // @ts-check
/**
* Example:
* https://github.com/react-atomic/reshow/blob/main/packages/reshow-url/src/ui/organisms/UrlReturn.jsx
* @param {React.ReactNode} comp
* @param {string[]} cleanProps
* @returns {React.ElementType}
*/
var ClientReturnHoc = function ClientReturnHoc(comp, cleanProps) {
/**
* @typedef {object} ClientReturnType
* @property {boolean} [isHydrate]
* @property {React.ReactNode} [children]
* @property {boolean} [backfillProps]
* @property {any} [props]
*/
/**
* @param {ClientReturnType} allprops
*/
var ClientReturn = function ClientReturn(_ref) {
var isHydrate = _ref.isHydrate,
props = (0, _objectWithoutPropertiesLoose2["default"])(_ref, _excluded);
if ((0, _hydrate["default"])() || isHydrate) {
var isLoad = (0, _reshowHooks.useLoaded)();
if (!isLoad) {
var children = props.children,
backfillProps = props.backfillProps,
restProps = (0, _objectWithoutPropertiesLoose2["default"])(props, _excluded2);
return (0, _reshowBuild["default"])(children)(_reshowReturn.connectOptions.reset(restProps, cleanProps));
}
}
return (0, _reshowBuild["default"])(comp)(props);
};
return ClientReturn;
};
var _default = exports["default"] = ClientReturnHoc;
module.exports = exports.default;