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
JavaScript
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 };