{"version":3,"file":"DefaultProps.mjs","names":[],"sources":["../src/DefaultProps.tsx"],"sourcesContent":["'use client'\nimport { type ContextType, type PropsWithChildren } from 'react'\nimport { DelayDefaultPropsContext, SuspenseDefaultPropsContext } from './contexts/DefaultPropsContexts'\nimport { Message_DefaultProp_delay_ms_should_be_greater_than_0, SuspensiveError } from './models/SuspensiveError'\n\n/**\n * A class for configuring default props for Suspensive components.\n *\n * @example\n * ```tsx\n * const defaultProps = new DefaultProps({\n *   Delay: {\n *     ms: 1200,\n *     fallback: <LoadingMessage>Loading additional content...</LoadingMessage>\n *   },\n *   Suspense: {\n *     fallback: <Spinner>Fetching data...</Spinner>,\n *     clientOnly: false,\n *   },\n * })\n * ```\n */\nexport class DefaultProps {\n  Suspense?: ContextType<typeof SuspenseDefaultPropsContext>\n  Delay?: ContextType<typeof DelayDefaultPropsContext>\n\n  constructor(defaultProps: DefaultProps = {}) {\n    if (process.env.NODE_ENV === 'development' && typeof defaultProps.Delay?.ms === 'number') {\n      SuspensiveError.assert(defaultProps.Delay.ms > 0, Message_DefaultProp_delay_ms_should_be_greater_than_0)\n    }\n    this.Suspense = defaultProps.Suspense\n    this.Delay = defaultProps.Delay\n  }\n}\n\ninterface DefaultPropsProviderProps extends PropsWithChildren {\n  defaultProps: DefaultProps\n}\n\n/**\n * A provider component that controls the default settings of Suspensive components.\n * Use this to configure default props for Suspense, Delay, and other Suspensive components globally.\n *\n * @example\n * ```tsx\n * const defaultProps = new DefaultProps({\n *   Delay: {\n *     ms: 1000,\n *     fallback: <LoadingSpinner />\n *   },\n *   Suspense: {\n *     fallback: <Skeleton />,\n *     clientOnly: false,\n *   },\n * })\n *\n * function App() {\n *   return (\n *     <DefaultPropsProvider defaultProps={defaultProps}>\n *       <YourApp />\n *     </DefaultPropsProvider>\n *   )\n * }\n * ```\n *\n * @see {@link https://suspensive.org/docs/react/DefaultPropsProvider Suspensive Docs}\n */\nexport const DefaultPropsProvider = ({ defaultProps, children }: DefaultPropsProviderProps) => (\n  <DelayDefaultPropsContext.Provider value={defaultProps.Delay ?? {}}>\n    <SuspenseDefaultPropsContext.Provider value={defaultProps.Suspense ?? {}}>\n      {children}\n    </SuspenseDefaultPropsContext.Provider>\n  </DelayDefaultPropsContext.Provider>\n)\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AAsBA,IAAa,eAAb,MAA0B;CAIxB,YAAY,eAA6B,CAAC,GAAG;;EAC3C,IAAI,QAAQ,IAAI,aAAa,iBAAiB,+BAAO,aAAa,iFAAO,QAAO,UAC9E,gBAAgB,OAAO,aAAa,MAAM,KAAK,GAAG,qDAAqD;EAEzG,KAAK,WAAW,aAAa;EAC7B,KAAK,QAAQ,aAAa;CAC5B;AACF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,wBAAwB,EAAE,cAAc,eAA0C;;QAC7F,oBAAC,yBAAyB,UAA1B;EAAmC,+BAAO,aAAa,4EAAS,CAAC;YAC/D,oBAAC,4BAA4B,UAA7B;GAAsC,gCAAO,aAAa,iFAAY,CAAC;GACpE;EACmC;CACL;AACrC"}