UNPKG

@suspensive/react

Version:

Suspensive interfaces for react

74 lines (71 loc) 2.44 kB
'use client'; import { DelayDefaultPropsContext, SuspenseDefaultPropsContext } from "./contexts/DefaultPropsContexts.mjs"; import { Message_DefaultProp_delay_ms_should_be_greater_than_0, SuspensiveError } from "./models/SuspensiveError.mjs"; import { jsx } from "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") SuspensiveError.assert(defaultProps.Delay.ms > 0, 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__ */ jsx(DelayDefaultPropsContext.Provider, { value: (_defaultProps$Delay2 = defaultProps.Delay) !== null && _defaultProps$Delay2 !== void 0 ? _defaultProps$Delay2 : {}, children: /* @__PURE__ */ jsx(SuspenseDefaultPropsContext.Provider, { value: (_defaultProps$Suspens = defaultProps.Suspense) !== null && _defaultProps$Suspens !== void 0 ? _defaultProps$Suspens : {}, children }) }); }; //#endregion export { DefaultProps, DefaultPropsProvider }; //# sourceMappingURL=DefaultProps.mjs.map