@suspensive/react
Version:
Suspensive interfaces for react
37 lines (34 loc) • 2.57 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_SuspensiveError = require('./models/SuspensiveError.cjs');
const require_useTimeout = require('./hooks/useTimeout.cjs');
let react = require("react");
let react_jsx_runtime = require("react/jsx-runtime");
//#region src/Delay.tsx
/**
* This component delays the rendering of its children for a specified duration.
*
* The Delay component provides a way to introduce intentional delays in rendering,
* which can be useful for loading states or animations.
* @see {@link https://suspensive.org/docs/react/Delay Suspensive Docs}
*/
const Delay = Object.assign((props) => {
var _ref, _props$ms;
if (process.env.NODE_ENV === "development" && typeof props.ms === "number") require_SuspensiveError.SuspensiveError.assert(props.ms >= 0, require_SuspensiveError.Message_Delay_ms_prop_should_be_greater_than_or_equal_to_0);
const defaultProps = (0, react.useContext)(require_DefaultPropsContexts.DelayDefaultPropsContext);
const ms = (_ref = (_props$ms = props.ms) !== null && _props$ms !== void 0 ? _props$ms : defaultProps.ms) !== null && _ref !== void 0 ? _ref : 0;
const [isDelayed, setIsDelayed] = (0, react.useState)(ms <= 0);
require_useTimeout.useTimeout(() => setIsDelayed(true), ms);
if (typeof props.children === "function") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: props.children({ isDelayed }) });
if (isDelayed) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: props.children });
if (props.fallback === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: defaultProps.fallback });
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(react_jsx_runtime.Fragment, { children: props.fallback });
}, {
displayName: "Delay",
with: (delayProps, Component) => Object.assign((props) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Delay, require_objectSpread2._objectSpread2(require_objectSpread2._objectSpread2({}, delayProps), {}, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Component, require_objectSpread2._objectSpread2({}, props)) })), { displayName: `${Delay.displayName}.with(${Component.displayName || Component.name || "Component"})` })
});
//#endregion
exports.Delay = Delay;
//# sourceMappingURL=Delay.cjs.map