@storybook/nextjs-vite
Version:
Storybook for Next.js and Vite: Develop, document, and test UI components in isolation
64 lines (62 loc) • 2.63 kB
JavaScript
import "../../_browser-chunks/chunk-SL3VIQZ3.js";
// src/export-mocks/router/index.ts
import { NextjsRouterMocksNotAvailable } from "storybook/internal/preview-errors";
import singletonRouter, * as originalRouter from "next/dist/client/router";
import { fn } from "storybook/test";
export * from "next/dist/client/router";
var defaultRouterState = {
route: "/",
asPath: "/",
basePath: "/",
pathname: "/",
query: {},
isFallback: !1,
isLocaleDomain: !1,
isReady: !0,
isPreview: !1
}, routerAPI, createRouter = (overrides) => {
let routerActions = {
push: fn((..._args) => Promise.resolve(!0)).mockName("next/router::useRouter().push"),
replace: fn((..._args) => Promise.resolve(!0)).mockName("next/router::useRouter().replace"),
reload: fn((..._args) => {
}).mockName("next/router::useRouter().reload"),
back: fn((..._args) => {
}).mockName("next/router::useRouter().back"),
forward: fn(() => {
}).mockName("next/router::useRouter().forward"),
prefetch: fn((..._args) => Promise.resolve()).mockName("next/router::useRouter().prefetch"),
beforePopState: fn((..._args) => {
}).mockName("next/router::useRouter().beforePopState")
}, routerEvents = {
on: fn((..._args) => {
}).mockName("next/router::useRouter().events.on"),
off: fn((..._args) => {
}).mockName("next/router::useRouter().events.off"),
emit: fn((..._args) => {
}).mockName("next/router::useRouter().events.emit")
};
return overrides && Object.keys(routerActions).forEach((key) => {
key in overrides && (routerActions[key] = fn((...args) => overrides[key](...args)).mockName(`useRouter().${key}`));
}), overrides?.events && Object.keys(routerEvents).forEach((key) => {
key in routerEvents && (routerEvents[key] = fn((...args) => overrides.events[key](...args)).mockName(`useRouter().events.${key}`));
}), routerAPI = {
...defaultRouterState,
...overrides,
...routerActions,
// @ts-expect-error TODO improve typings
events: routerEvents
}, singletonRouter.router = routerAPI, singletonRouter.readyCallbacks.forEach((cb) => cb()), singletonRouter.readyCallbacks = [], routerAPI;
}, getRouter = () => {
if (!routerAPI)
throw new NextjsRouterMocksNotAvailable({
importType: "next/router"
});
return routerAPI;
}, router_default = singletonRouter, useRouter2 = fn(originalRouter.useRouter).mockName("next/router::useRouter"), withRouter2 = fn(originalRouter.withRouter).mockName("next/router::withRouter");
export {
createRouter,
router_default as default,
getRouter,
useRouter2 as useRouter,
withRouter2 as withRouter
};