UNPKG

@suspensive/react

Version:

Suspensive interfaces for react

76 lines (73 loc) 2.65 kB
'use client'; Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); const require_DefaultPropsContexts = require('./contexts/DefaultPropsContexts.cjs'); const require_SuspensiveError = require('./models/SuspensiveError.cjs'); let react_jsx_runtime = require("react/jsx-runtime"); //#region src/DefaultProps.tsx /** * A class for configuring default props for Suspensive components. * * @example * ```tsx * const defaultProps = new DefaultProps({ * Delay: { * ms: 1200, * fallback: <LoadingMessage>Loading additional content...</LoadingMessage> * }, * Suspense: { * fallback: <Spinner>Fetching data...</Spinner>, * clientOnly: false, * }, * }) * ``` */ var DefaultProps = class { constructor(defaultProps = {}) { var _defaultProps$Delay; if (process.env.NODE_ENV === "development" && typeof ((_defaultProps$Delay = defaultProps.Delay) === null || _defaultProps$Delay === void 0 ? void 0 : _defaultProps$Delay.ms) === "number") require_SuspensiveError.SuspensiveError.assert(defaultProps.Delay.ms > 0, require_SuspensiveError.Message_DefaultProp_delay_ms_should_be_greater_than_0); this.Suspense = defaultProps.Suspense; this.Delay = defaultProps.Delay; } }; /** * A provider component that controls the default settings of Suspensive components. * Use this to configure default props for Suspense, Delay, and other Suspensive components globally. * * @example * ```tsx * const defaultProps = new DefaultProps({ * Delay: { * ms: 1000, * fallback: <LoadingSpinner /> * }, * Suspense: { * fallback: <Skeleton />, * clientOnly: false, * }, * }) * * function App() { * return ( * <DefaultPropsProvider defaultProps={defaultProps}> * <YourApp /> * </DefaultPropsProvider> * ) * } * ``` * * @see {@link https://suspensive.org/docs/react/DefaultPropsProvider Suspensive Docs} */ const DefaultPropsProvider = ({ defaultProps, children }) => { var _defaultProps$Delay2, _defaultProps$Suspens; return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_DefaultPropsContexts.DelayDefaultPropsContext.Provider, { value: (_defaultProps$Delay2 = defaultProps.Delay) !== null && _defaultProps$Delay2 !== void 0 ? _defaultProps$Delay2 : {}, children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_DefaultPropsContexts.SuspenseDefaultPropsContext.Provider, { value: (_defaultProps$Suspens = defaultProps.Suspense) !== null && _defaultProps$Suspens !== void 0 ? _defaultProps$Suspens : {}, children }) }); }; //#endregion exports.DefaultProps = DefaultProps; exports.DefaultPropsProvider = DefaultPropsProvider; //# sourceMappingURL=DefaultProps.cjs.map