UNPKG

vite-plugin-storybook-nextjs

Version:

This is a Vite plugin that allows you to use Next.js features in Vite. It is the basis for `@storybook/experimental-nextjs-vite` and should be used when running portable stories in Vitest.

64 lines (57 loc) 2.23 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var Loadable = require('next/dist/shared/lib/loadable.shared-runtime.js'); var React = require('react'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var Loadable__default = /*#__PURE__*/_interopDefault(Loadable); var React__default = /*#__PURE__*/_interopDefault(React); // src/plugins/next-mocks/alias/dynamic/index.tsx function convertModule(mod) { return { default: mod?.default || mod }; } function noSSR() { throw new Error("noSSR is not implemented in Storybook"); } function dynamic(dynamicOptions, options) { const loadableFn = Loadable__default.default; let loadableOptions = { // A loading component is not required, so we default it loading: ({ error, isLoading, pastDelay }) => { if (!pastDelay) return null; if (process.env.NODE_ENV !== "production") { if (isLoading) { return null; } if (error) { return /* @__PURE__ */ React__default.default.createElement("p", null, error.message, /* @__PURE__ */ React__default.default.createElement("br", null), error.stack); } } return null; } }; if (dynamicOptions instanceof Promise) { loadableOptions.loader = () => dynamicOptions; } else if (typeof dynamicOptions === "function") { loadableOptions.loader = dynamicOptions; } else if (typeof dynamicOptions === "object") { loadableOptions = { ...loadableOptions, ...dynamicOptions }; } loadableOptions = { ...loadableOptions, ...options }; const loaderFn = loadableOptions.loader; const loader = () => loaderFn != null ? loaderFn().then(convertModule) : Promise.resolve(convertModule(() => null)); if (loadableOptions.loadableGenerated) { loadableOptions = { ...loadableOptions, ...loadableOptions.loadableGenerated }; delete loadableOptions.loadableGenerated; } if (typeof loadableOptions.ssr === "boolean" && !loadableOptions.ssr) { delete loadableOptions.ssr; delete loadableOptions.webpack; delete loadableOptions.modules; } return loadableFn({ ...loadableOptions, loader }); } exports.default = dynamic; exports.noSSR = noSSR;