@suspensive/react
Version:
Suspensive interfaces for react
76 lines (73 loc) • 2.65 kB
JavaScript
'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