@suspensive/react
Version:
Suspensive interfaces for react
40 lines (37 loc) • 2.08 kB
JavaScript
'use client';
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
const require_objectSpread2 = require('./_virtual/_@oxc-project_runtime@0.130.0/helpers/objectSpread2.cjs');
const require_DefaultPropsContexts = require('./contexts/DefaultPropsContexts.cjs');
const require_defineSuspense = require('./utils/defineSuspense.cjs');
const require_objectWithoutProperties = require('./_virtual/_@oxc-project_runtime@0.130.0/helpers/objectWithoutProperties.cjs');
let react = require("react");
let react_jsx_runtime = require("react/jsx-runtime");
//#region src/Suspense.tsx
const _excluded = [
"clientOnly",
"fallback",
"children",
"name"
];
/**
* This component is just wrapping React's Suspense. to use Suspense easily in Server-side rendering environment like Next.js
* @see {@link https://suspensive.org/docs/react/Suspense Suspensive Docs}
*/
const Suspense = Object.assign((_ref) => {
let { clientOnly, fallback, children, name } = _ref, rest = require_objectWithoutProperties._objectWithoutProperties(_ref, _excluded);
const defaultProps = (0, react.useContext)(require_DefaultPropsContexts.SuspenseDefaultPropsContext);
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_defineSuspense.defineSuspense({
defaultPropsClientOnly: defaultProps.clientOnly,
componentPropsClientOnly: clientOnly
}), require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, rest), {}, {
fallback: fallback === void 0 ? defaultProps.fallback : fallback,
name,
children
}));
}, {
displayName: "Suspense",
with: (suspenseProps, Component) => Object.assign((props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Suspense, require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, suspenseProps), {}, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, require_objectSpread2._objectSpread2({}, props)) })), { displayName: `${Suspense.displayName}.with(${Component.displayName || Component.name || "Component"})` })
});
//#endregion
exports.Suspense = Suspense;
//# sourceMappingURL=Suspense.cjs.map