Spaces:
Sleeping
Sleeping
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| Object.defineProperty(exports, "default", { | |
| enumerable: true, | |
| get: function() { | |
| return _default; | |
| } | |
| }); | |
| const _jsxruntime = require("react/jsx-runtime"); | |
| const _react = require("react"); | |
| const _dynamicbailouttocsr = require("./dynamic-bailout-to-csr"); | |
| const _preloadchunks = require("./preload-chunks"); | |
| // Normalize loader to return the module as form { default: Component } for `React.lazy`. | |
| // Also for backward compatible since next/dynamic allows to resolve a component directly with loader | |
| // Client component reference proxy need to be converted to a module. | |
| function convertModule(mod) { | |
| // Check "default" prop before accessing it, as it could be client reference proxy that could break it reference. | |
| // Cases: | |
| // mod: { default: Component } | |
| // mod: Component | |
| // mod: { default: proxy(Component) } | |
| // mod: proxy(Component) | |
| const hasDefault = mod && 'default' in mod; | |
| return { | |
| default: hasDefault ? mod.default : mod | |
| }; | |
| } | |
| const defaultOptions = { | |
| loader: ()=>Promise.resolve(convertModule(()=>null)), | |
| loading: null, | |
| ssr: true | |
| }; | |
| function Loadable(options) { | |
| const opts = { | |
| ...defaultOptions, | |
| ...options | |
| }; | |
| const Lazy = /*#__PURE__*/ (0, _react.lazy)(()=>opts.loader().then(convertModule)); | |
| const Loading = opts.loading; | |
| function LoadableComponent(props) { | |
| const fallbackElement = Loading ? /*#__PURE__*/ (0, _jsxruntime.jsx)(Loading, { | |
| isLoading: true, | |
| pastDelay: true, | |
| error: null | |
| }) : null; | |
| // If it's non-SSR or provided a loading component, wrap it in a suspense boundary | |
| const hasSuspenseBoundary = !opts.ssr || !!opts.loading; | |
| const Wrap = hasSuspenseBoundary ? _react.Suspense : _react.Fragment; | |
| const wrapProps = hasSuspenseBoundary ? { | |
| fallback: fallbackElement | |
| } : {}; | |
| const children = opts.ssr ? /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, { | |
| children: [ | |
| typeof window === 'undefined' ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_preloadchunks.PreloadChunks, { | |
| moduleIds: opts.modules | |
| }) : null, | |
| /*#__PURE__*/ (0, _jsxruntime.jsx)(Lazy, { | |
| ...props | |
| }) | |
| ] | |
| }) : /*#__PURE__*/ (0, _jsxruntime.jsx)(_dynamicbailouttocsr.BailoutToCSR, { | |
| reason: "next/dynamic", | |
| children: /*#__PURE__*/ (0, _jsxruntime.jsx)(Lazy, { | |
| ...props | |
| }) | |
| }); | |
| return /*#__PURE__*/ (0, _jsxruntime.jsx)(Wrap, { | |
| ...wrapProps, | |
| children: children | |
| }); | |
| } | |
| LoadableComponent.displayName = 'LoadableComponent'; | |
| return LoadableComponent; | |
| } | |
| const _default = Loadable; | |
| //# sourceMappingURL=loadable.js.map |