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.

75 lines (72 loc) 3 kB
import * as actual from 'next/dist/client/components/navigation.js'; export * from 'next/dist/client/components/navigation.js'; import { RedirectStatusCode } from 'next/dist/client/components/redirect-status-code.js'; import { getRedirectError } from 'next/dist/client/components/redirect.js'; import { NextjsRouterMocksNotAvailable } from 'storybook/internal/preview-errors'; import { fn } from 'storybook/test'; // src/plugins/next-mocks/alias/navigation/index.ts var navigationAPI; var createNavigation = (overrides) => { const navigationActions = { push: fn().mockName("next/navigation::useRouter().push"), replace: fn().mockName("next/navigation::useRouter().replace"), forward: fn().mockName("next/navigation::useRouter().forward"), back: fn().mockName("next/navigation::useRouter().back"), prefetch: fn().mockName("next/navigation::useRouter().prefetch"), refresh: fn().mockName("next/navigation::useRouter().refresh") }; if (overrides) { for (const key of Object.keys(navigationActions)) { if (key in overrides) { navigationActions[key] = fn((...args) => { return overrides[key](...args); }).mockName(`useRouter().${key}`); } } } navigationAPI = navigationActions; return navigationAPI; }; var getRouter = () => { if (!navigationAPI) { throw new NextjsRouterMocksNotAvailable({ importType: "next/navigation" }); } return navigationAPI; }; var redirect = fn( (url, type = actual.RedirectType.push) => { throw getRedirectError(url, type, RedirectStatusCode.SeeOther); } ).mockName("next/navigation::redirect"); var permanentRedirect = fn( (url, type = actual.RedirectType.push) => { throw getRedirectError(url, type, RedirectStatusCode.SeeOther); } ).mockName("next/navigation::permanentRedirect"); var useSearchParams2 = fn( actual.useSearchParams ).mockName("next/navigation::useSearchParams"); var usePathname2 = fn(actual.usePathname).mockName( "next/navigation::usePathname" ); var useSelectedLayoutSegment2 = fn(actual.useSelectedLayoutSegment).mockName( "next/navigation::useSelectedLayoutSegment" ); var useSelectedLayoutSegments2 = fn(actual.useSelectedLayoutSegments).mockName( "next/navigation::useSelectedLayoutSegments" ); var useRouter2 = fn( actual.useRouter ).mockName("next/navigation::useRouter"); var useServerInsertedHTML2 = fn(actual.useServerInsertedHTML).mockName( "next/navigation::useServerInsertedHTML" ); var notFound2 = fn(actual.notFound).mockName( "next/navigation::notFound" ); var useParams2 = fn( actual.useParams ).mockName("next/navigation::useParams"); export { createNavigation, getRouter, notFound2 as notFound, permanentRedirect, redirect, useParams2 as useParams, usePathname2 as usePathname, useRouter2 as useRouter, useSearchParams2 as useSearchParams, useSelectedLayoutSegment2 as useSelectedLayoutSegment, useSelectedLayoutSegments2 as useSelectedLayoutSegments, useServerInsertedHTML2 as useServerInsertedHTML };