"use strict"; 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 _preloadcss = require("./preload-css"); // 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: { $$typeof, 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; const children = opts.ssr ? /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, { children: [ typeof window === "undefined" ? /*#__PURE__*/ (0, _jsxruntime.jsx)(_preloadcss.PreloadCss, { 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)(_react.Suspense, { fallback: fallbackElement, children: children }); } LoadableComponent.displayName = "LoadableComponent"; return LoadableComponent; } const _default = Loadable; //# sourceMappingURL=loadable.js.map