@storybook/nextjs 9.0.0-alpha.6 → 9.0.0-alpha.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- import { M as Mock } from '../../index.d-5a935e77.js';
1
+ import { M as Mock } from '../../index.d-98b9eb06.js';
2
2
  import { unstable_cache } from 'next/dist/server/web/spec-extension/unstable-cache';
3
3
  export { unstable_cache } from 'next/dist/server/web/spec-extension/unstable-cache';
4
4
  import { unstable_noStore } from 'next/dist/server/web/spec-extension/unstable-no-store';
@@ -1,4 +1,4 @@
1
- import { M as Mock } from '../../index.d-5a935e77.js';
1
+ import { M as Mock } from '../../index.d-98b9eb06.js';
2
2
  import { draftMode as draftMode$1 } from 'next/dist/server/request/draft-mode';
3
3
  export * from 'next/dist/server/request/headers';
4
4
  import { HeadersAdapter } from 'next/dist/server/web/spec-extension/adapters/headers';
@@ -1,4 +1,4 @@
1
- import { M as Mock$1 } from '../../index.d-5a935e77.js';
1
+ import { M as Mock$1 } from '../../index.d-98b9eb06.js';
2
2
  import * as actual from 'next/dist/client/components/navigation';
3
3
  export * from 'next/dist/client/components/navigation';
4
4
  import { Mock } from 'storybook/test';
@@ -1,7 +1,7 @@
1
1
  import * as React from 'react';
2
2
  import * as next_dist_client_with_router from 'next/dist/client/with-router';
3
3
  import * as next from 'next';
4
- import { M as Mock$1 } from '../../index.d-5a935e77.js';
4
+ import { M as Mock$1 } from '../../index.d-98b9eb06.js';
5
5
  import * as singletonRouter from 'next/dist/client/router';
6
6
  import singletonRouter__default from 'next/dist/client/router';
7
7
  export * from 'next/dist/client/router';
@@ -0,0 +1,296 @@
1
+ interface MockResultReturn<T> {
2
+ type: "return";
3
+ /**
4
+ * The value that was returned from the function. If function returned a Promise, then this will be a resolved value.
5
+ */
6
+ value: T;
7
+ }
8
+ interface MockResultIncomplete {
9
+ type: "incomplete";
10
+ value: undefined;
11
+ }
12
+ interface MockResultThrow {
13
+ type: "throw";
14
+ /**
15
+ * An error that was thrown during function execution.
16
+ */
17
+ value: any;
18
+ }
19
+ interface MockSettledResultFulfilled<T> {
20
+ type: "fulfilled";
21
+ value: T;
22
+ }
23
+ interface MockSettledResultRejected {
24
+ type: "rejected";
25
+ value: any;
26
+ }
27
+ type MockResult<T> = MockResultReturn<T> | MockResultThrow | MockResultIncomplete;
28
+ type MockSettledResult<T> = MockSettledResultFulfilled<T> | MockSettledResultRejected;
29
+ interface MockContext<T extends Procedure> {
30
+ /**
31
+ * This is an array containing all arguments for each call. One item of the array is the arguments of that call.
32
+ *
33
+ * @see https://vitest.dev/api/mock#mock-calls
34
+ * @example
35
+ * const fn = vi.fn()
36
+ *
37
+ * fn('arg1', 'arg2')
38
+ * fn('arg3')
39
+ *
40
+ * fn.mock.calls === [
41
+ * ['arg1', 'arg2'], // first call
42
+ * ['arg3'], // second call
43
+ * ]
44
+ */
45
+ calls: Parameters<T>[];
46
+ /**
47
+ * This is an array containing all instances that were instantiated when mock was called with a `new` keyword. Note that this is an actual context (`this`) of the function, not a return value.
48
+ * @see https://vitest.dev/api/mock#mock-instances
49
+ */
50
+ instances: ReturnType<T>[];
51
+ /**
52
+ * An array of `this` values that were used during each call to the mock function.
53
+ * @see https://vitest.dev/api/mock#mock-contexts
54
+ */
55
+ contexts: ThisParameterType<T>[];
56
+ /**
57
+ * The order of mock's execution. This returns an array of numbers which are shared between all defined mocks.
58
+ *
59
+ * @see https://vitest.dev/api/mock#mock-invocationcallorder
60
+ * @example
61
+ * const fn1 = vi.fn()
62
+ * const fn2 = vi.fn()
63
+ *
64
+ * fn1()
65
+ * fn2()
66
+ * fn1()
67
+ *
68
+ * fn1.mock.invocationCallOrder === [1, 3]
69
+ * fn2.mock.invocationCallOrder === [2]
70
+ */
71
+ invocationCallOrder: number[];
72
+ /**
73
+ * This is an array containing all values that were `returned` from the function.
74
+ *
75
+ * The `value` property contains the returned value or thrown error. If the function returned a `Promise`, then `result` will always be `'return'` even if the promise was rejected.
76
+ *
77
+ * @see https://vitest.dev/api/mock#mock-results
78
+ * @example
79
+ * const fn = vi.fn()
80
+ * .mockReturnValueOnce('result')
81
+ * .mockImplementationOnce(() => { throw new Error('thrown error') })
82
+ *
83
+ * const result = fn()
84
+ *
85
+ * try {
86
+ * fn()
87
+ * }
88
+ * catch {}
89
+ *
90
+ * fn.mock.results === [
91
+ * {
92
+ * type: 'return',
93
+ * value: 'result',
94
+ * },
95
+ * {
96
+ * type: 'throw',
97
+ * value: Error,
98
+ * },
99
+ * ]
100
+ */
101
+ results: MockResult<ReturnType<T>>[];
102
+ /**
103
+ * An array containing all values that were `resolved` or `rejected` from the function.
104
+ *
105
+ * This array will be empty if the function was never resolved or rejected.
106
+ *
107
+ * @see https://vitest.dev/api/mock#mock-settledresults
108
+ * @example
109
+ * const fn = vi.fn().mockResolvedValueOnce('result')
110
+ *
111
+ * const result = fn()
112
+ *
113
+ * fn.mock.settledResults === []
114
+ * fn.mock.results === [
115
+ * {
116
+ * type: 'return',
117
+ * value: Promise<'result'>,
118
+ * },
119
+ * ]
120
+ *
121
+ * await result
122
+ *
123
+ * fn.mock.settledResults === [
124
+ * {
125
+ * type: 'fulfilled',
126
+ * value: 'result',
127
+ * },
128
+ * ]
129
+ */
130
+ settledResults: MockSettledResult<Awaited<ReturnType<T>>>[];
131
+ /**
132
+ * This contains the arguments of the last call. If spy wasn't called, will return `undefined`.
133
+ * @see https://vitest.dev/api/mock#mock-lastcall
134
+ */
135
+ lastCall: Parameters<T> | undefined;
136
+ }
137
+ type Procedure = (...args: any[]) => any;
138
+ type NormalizedProcedure<T extends Procedure> = (...args: Parameters<T>) => ReturnType<T>;
139
+ interface MockInstance<T extends Procedure = Procedure> {
140
+ /**
141
+ * Use it to return the name assigned to the mock with the `.mockName(name)` method. By default, it will return `vi.fn()`.
142
+ * @see https://vitest.dev/api/mock#getmockname
143
+ */
144
+ getMockName(): string;
145
+ /**
146
+ * Sets the internal mock name. This is useful for identifying the mock when an assertion fails.
147
+ * @see https://vitest.dev/api/mock#mockname
148
+ */
149
+ mockName(name: string): this;
150
+ /**
151
+ * Current context of the mock. It stores information about all invocation calls, instances, and results.
152
+ */
153
+ mock: MockContext<T>;
154
+ /**
155
+ * Clears all information about every call. After calling it, all properties on `.mock` will return to their initial state. This method does not reset implementations. It is useful for cleaning up mocks between different assertions.
156
+ *
157
+ * To automatically call this method before each test, enable the [`clearMocks`](https://vitest.dev/config/#clearmocks) setting in the configuration.
158
+ * @see https://vitest.dev/api/mock#mockclear
159
+ */
160
+ mockClear(): this;
161
+ /**
162
+ * Does what `mockClear` does and resets inner implementation to the original function. This also resets all "once" implementations.
163
+ *
164
+ * Note that resetting a mock from `vi.fn()` will set implementation to an empty function that returns `undefined`.
165
+ * Resetting a mock from `vi.fn(impl)` will set implementation to `impl`. It is useful for completely resetting a mock to its default state.
166
+ *
167
+ * To automatically call this method before each test, enable the [`mockReset`](https://vitest.dev/config/#mockreset) setting in the configuration.
168
+ * @see https://vitest.dev/api/mock#mockreset
169
+ */
170
+ mockReset(): this;
171
+ /**
172
+ * Does what `mockReset` does and restores original descriptors of spied-on objects.
173
+ *
174
+ * Note that restoring mock from `vi.fn()` will set implementation to an empty function that returns `undefined`. Restoring a `vi.fn(impl)` will restore implementation to `impl`.
175
+ * @see https://vitest.dev/api/mock#mockrestore
176
+ */
177
+ mockRestore(): void;
178
+ /**
179
+ * Returns current permanent mock implementation if there is one.
180
+ *
181
+ * If mock was created with `vi.fn`, it will consider passed down method as a mock implementation.
182
+ *
183
+ * If mock was created with `vi.spyOn`, it will return `undefined` unless a custom implementation was provided.
184
+ */
185
+ getMockImplementation(): NormalizedProcedure<T> | undefined;
186
+ /**
187
+ * Accepts a function to be used as the mock implementation. TypeScript expects the arguments and return type to match those of the original function.
188
+ * @see https://vitest.dev/api/mock#mockimplementation
189
+ * @example
190
+ * const increment = vi.fn().mockImplementation(count => count + 1);
191
+ * expect(increment(3)).toBe(4);
192
+ */
193
+ mockImplementation(fn: NormalizedProcedure<T>): this;
194
+ /**
195
+ * Accepts a function to be used as the mock implementation. TypeScript expects the arguments and return type to match those of the original function. This method can be chained to produce different results for multiple function calls.
196
+ *
197
+ * When the mocked function runs out of implementations, it will invoke the default implementation set with `vi.fn(() => defaultValue)` or `.mockImplementation(() => defaultValue)` if they were called.
198
+ * @see https://vitest.dev/api/mock#mockimplementationonce
199
+ * @example
200
+ * const fn = vi.fn(count => count).mockImplementationOnce(count => count + 1);
201
+ * expect(fn(3)).toBe(4);
202
+ * expect(fn(3)).toBe(3);
203
+ */
204
+ mockImplementationOnce(fn: NormalizedProcedure<T>): this;
205
+ /**
206
+ * Overrides the original mock implementation temporarily while the callback is being executed.
207
+ *
208
+ * Note that this method takes precedence over the [`mockImplementationOnce`](https://vitest.dev/api/mock#mockimplementationonce).
209
+ * @see https://vitest.dev/api/mock#withimplementation
210
+ * @example
211
+ * const myMockFn = vi.fn(() => 'original')
212
+ *
213
+ * myMockFn.withImplementation(() => 'temp', () => {
214
+ * myMockFn() // 'temp'
215
+ * })
216
+ *
217
+ * myMockFn() // 'original'
218
+ */
219
+ withImplementation<T2>(fn: NormalizedProcedure<T>, cb: () => T2): T2 extends Promise<unknown> ? Promise<this> : this;
220
+ /**
221
+ * Use this if you need to return the `this` context from the method without invoking the actual implementation.
222
+ * @see https://vitest.dev/api/mock#mockreturnthis
223
+ */
224
+ mockReturnThis(): this;
225
+ /**
226
+ * Accepts a value that will be returned whenever the mock function is called. TypeScript will only accept values that match the return type of the original function.
227
+ * @see https://vitest.dev/api/mock#mockreturnvalue
228
+ * @example
229
+ * const mock = vi.fn()
230
+ * mock.mockReturnValue(42)
231
+ * mock() // 42
232
+ * mock.mockReturnValue(43)
233
+ * mock() // 43
234
+ */
235
+ mockReturnValue(value: ReturnType<T>): this;
236
+ /**
237
+ * Accepts a value that will be returned whenever the mock function is called. TypeScript will only accept values that match the return type of the original function.
238
+ *
239
+ * When the mocked function runs out of implementations, it will invoke the default implementation set with `vi.fn(() => defaultValue)` or `.mockImplementation(() => defaultValue)` if they were called.
240
+ * @example
241
+ * const myMockFn = vi
242
+ * .fn()
243
+ * .mockReturnValue('default')
244
+ * .mockReturnValueOnce('first call')
245
+ * .mockReturnValueOnce('second call')
246
+ *
247
+ * // 'first call', 'second call', 'default'
248
+ * console.log(myMockFn(), myMockFn(), myMockFn())
249
+ */
250
+ mockReturnValueOnce(value: ReturnType<T>): this;
251
+ /**
252
+ * Accepts a value that will be resolved when the async function is called. TypeScript will only accept values that match the return type of the original function.
253
+ * @example
254
+ * const asyncMock = vi.fn().mockResolvedValue(42)
255
+ * asyncMock() // Promise<42>
256
+ */
257
+ mockResolvedValue(value: Awaited<ReturnType<T>>): this;
258
+ /**
259
+ * Accepts a value that will be resolved during the next function call. TypeScript will only accept values that match the return type of the original function. If chained, each consecutive call will resolve the specified value.
260
+ * @example
261
+ * const myMockFn = vi
262
+ * .fn()
263
+ * .mockResolvedValue('default')
264
+ * .mockResolvedValueOnce('first call')
265
+ * .mockResolvedValueOnce('second call')
266
+ *
267
+ * // Promise<'first call'>, Promise<'second call'>, Promise<'default'>
268
+ * console.log(myMockFn(), myMockFn(), myMockFn())
269
+ */
270
+ mockResolvedValueOnce(value: Awaited<ReturnType<T>>): this;
271
+ /**
272
+ * Accepts an error that will be rejected when async function is called.
273
+ * @example
274
+ * const asyncMock = vi.fn().mockRejectedValue(new Error('Async error'))
275
+ * await asyncMock() // throws Error<'Async error'>
276
+ */
277
+ mockRejectedValue(error: unknown): this;
278
+ /**
279
+ * Accepts a value that will be rejected during the next function call. If chained, each consecutive call will reject the specified value.
280
+ * @example
281
+ * const asyncMock = vi
282
+ * .fn()
283
+ * .mockResolvedValueOnce('first call')
284
+ * .mockRejectedValueOnce(new Error('Async error'))
285
+ *
286
+ * await asyncMock() // first call
287
+ * await asyncMock() // throws Error<'Async error'>
288
+ */
289
+ mockRejectedValueOnce(error: unknown): this;
290
+ }
291
+ interface Mock<T extends Procedure = Procedure> extends MockInstance<T> {
292
+ new (...args: Parameters<T>): ReturnType<T>;
293
+ (...args: Parameters<T>): ReturnType<T>;
294
+ }
295
+
296
+ export { Mock as M };
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default")),__toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var react_18_exports={};__export(react_18_exports,{renderElement:()=>renderElement,unmountElement:()=>unmountElement});function getIsReactActEnvironment(){return globalThis.IS_REACT_ACT_ENVIRONMENT}var React10,ReactDOM,nodes,WithCallback,renderElement,unmountElement,getReactRoot,init_react_18=__esm({"../../lib/react-dom-shim/dist/react-18.mjs"(){"use strict";React10=__toESM(require("react"),1),ReactDOM=__toESM(require("react-dom/client"),1),nodes=new Map;WithCallback=({callback,children})=>{let once=React10.useRef();return React10.useLayoutEffect(()=>{once.current!==callback&&(once.current=callback,callback())},[callback]),children};typeof Promise.withResolvers>"u"&&(Promise.withResolvers=()=>{let resolve=null,reject=null;return{promise:new Promise((res,rej)=>{resolve=res,reject=rej}),resolve,reject}});renderElement=async(node,el,rootOptions)=>{let root=await getReactRoot(el,rootOptions);if(getIsReactActEnvironment()){root.render(node);return}let{promise,resolve}=Promise.withResolvers();return root.render(React10.createElement(WithCallback,{callback:resolve},node)),promise},unmountElement=(el,shouldUseNewRootApi)=>{let root=nodes.get(el);root&&(root.unmount(),nodes.delete(el))},getReactRoot=async(el,rootOptions)=>{let root=nodes.get(el);return root||(root=ReactDOM.createRoot(el,rootOptions),nodes.set(el,root)),root}}});var index_exports={};__export(index_exports,{composeStories:()=>composeStories,composeStory:()=>composeStory,definePreview:()=>definePreview,setProjectAnnotations:()=>setProjectAnnotations});module.exports=__toCommonJS(index_exports);var import_react6=require("@storybook/react");var preview_exports={};__export(preview_exports,{decorators:()=>decorators,loaders:()=>loaders,parameters:()=>parameters});var import_navigation2=require("@storybook/nextjs/navigation.mock"),import_router2=require("@storybook/nextjs/router.mock"),import_is_next_router_error=require("next/dist/client/components/is-next-router-error");var import_config=require("next/config");(0,import_config.setConfig)(process.env.__NEXT_RUNTIME_CONFIG);var React2=__toESM(require("react"));var import_react=__toESM(require("react")),import_head_manager=__toESM(require("next/dist/client/head-manager")),import_head_manager_context=require("next/dist/shared/lib/head-manager-context.shared-runtime"),HeadManagerProvider=({children})=>{let headManager=(0,import_react.useMemo)(import_head_manager.default,[]);return headManager.getIsSsr=()=>!1,import_react.default.createElement(import_head_manager_context.HeadManagerContext.Provider,{value:headManager},children)},head_manager_provider_default=HeadManagerProvider;var HeadManagerDecorator=Story=>React2.createElement(head_manager_provider_default,null,React2.createElement(Story,null));var React3=__toESM(require("react")),import_image_context=require("@storybook/nextjs/dist/image-context"),ImageContext=import_image_context.ImageContext,ImageDecorator=(Story,{parameters:parameters3})=>parameters3.nextjs?.image?React3.createElement(ImageContext.Provider,{value:parameters3.nextjs.image},React3.createElement(Story,null)):React3.createElement(Story,null);var React6=__toESM(require("react")),import_redirect_boundary=require("next/dist/client/components/redirect-boundary");var import_react2=__toESM(require("react")),import_navigation=require("@storybook/nextjs/navigation.mock"),import_app_router_context=require("next/dist/shared/lib/app-router-context.shared-runtime"),import_hooks_client_context=require("next/dist/shared/lib/hooks-client-context.shared-runtime"),import_segment=require("next/dist/shared/lib/segment");function getSelectedParams(currentTree,params={}){let parallelRoutes=currentTree[1];for(let parallelRoute of Object.values(parallelRoutes)){let segment=parallelRoute[0],isDynamicParameter=Array.isArray(segment),segmentValue=isDynamicParameter?segment[1]:segment;if(!segmentValue||segmentValue.startsWith(import_segment.PAGE_SEGMENT_KEY))continue;isDynamicParameter&&(segment[2]==="c"||segment[2]==="oc")?params[segment[0]]=segment[1].split("/"):isDynamicParameter&&(params[segment[0]]=segment[1]),params=getSelectedParams(parallelRoute,params)}return params}var getParallelRoutes=segmentsList=>{let segment=segmentsList.shift();return segment?[segment,{children:getParallelRoutes(segmentsList)}]:[]},AppRouterProvider=({children,routeParams})=>{let{pathname,query,segments=[]}=routeParams,tree=[pathname,{children:getParallelRoutes([...segments])}],pathParams=(0,import_react2.useMemo)(()=>getSelectedParams(tree),[tree]),newLazyCacheNode={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null};return import_react2.default.createElement(import_hooks_client_context.PathParamsContext.Provider,{value:pathParams},import_react2.default.createElement(import_hooks_client_context.PathnameContext.Provider,{value:pathname},import_react2.default.createElement(import_hooks_client_context.SearchParamsContext.Provider,{value:new URLSearchParams(query)},import_react2.default.createElement(import_app_router_context.GlobalLayoutRouterContext.Provider,{value:{changeByServerResponse(){},buildId:"storybook",tree,focusAndScrollRef:{apply:!1,hashFragment:null,segmentPaths:[tree],onlyHashChange:!1},nextUrl:pathname}},import_react2.default.createElement(import_app_router_context.AppRouterContext.Provider,{value:(0,import_navigation.getRouter)()},import_react2.default.createElement(import_app_router_context.LayoutRouterContext.Provider,{value:{childNodes:new Map,tree,parentTree:tree,parentCacheNode:newLazyCacheNode,url:pathname,loading:null}},children))))))};var import_react3=__toESM(require("react")),import_router=require("@storybook/nextjs/router.mock"),import_router_context=require("next/dist/shared/lib/router-context.shared-runtime"),PageRouterProvider=({children})=>import_react3.default.createElement(import_router_context.RouterContext.Provider,{value:(0,import_router.getRouter)()},children);var defaultRouterParams={pathname:"/",query:{}},RouterDecorator=(Story,{parameters:parameters3})=>parameters3.nextjs?.appDirectory??!1?AppRouterProvider?React6.createElement(AppRouterProvider,{routeParams:{...defaultRouterParams,...parameters3.nextjs?.navigation}},React6.createElement(import_redirect_boundary.RedirectBoundary,null,React6.createElement(Story,null))):null:React6.createElement(PageRouterProvider,null,React6.createElement(Story,null));var React7=__toESM(require("react")),import_styled_jsx=require("styled-jsx"),StyledJsxDecorator=Story=>React7.createElement(import_styled_jsx.StyleRegistry,null,React7.createElement(Story,null));function addNextHeadCount(){let meta=document.createElement("meta");meta.name="next-head-count",meta.content="0",document.head.appendChild(meta)}function isAsyncClientComponentError(error){return typeof error=="string"&&(error.includes("Only Server Components can be async at the moment.")||error.includes("A component was suspended by an uncached promise.")||error.includes("async/await is not yet supported in Client Components"))}addNextHeadCount();var origConsoleError=globalThis.console.error;globalThis.console.error=(...args)=>{let error=args[0];(0,import_is_next_router_error.isNextRouterError)(error)||isAsyncClientComponentError(error)||origConsoleError.apply(globalThis.console,args)};globalThis.addEventListener("error",ev=>{if((0,import_is_next_router_error.isNextRouterError)(ev.error)||isAsyncClientComponentError(ev.error)){ev.preventDefault();return}});var decorators=[StyledJsxDecorator,ImageDecorator,RouterDecorator,HeadManagerDecorator],loaders=async({globals,parameters:parameters3})=>{let{router,appDirectory}=parameters3.nextjs??{};appDirectory?(0,import_navigation2.createNavigation)(router):(0,import_router2.createRouter)({locale:globals.locale,...router})},parameters={docs:{source:{excludeDecorators:!0}},react:{rootOptions:{onCaughtError(error){(0,import_is_next_router_error.isNextRouterError)(error)||console.error(error)}}}};__reExport(index_exports,require("@storybook/react"),module.exports);var import_preview_api2=require("storybook/preview-api");var React13=__toESM(require("react")),import_preview_api=require("storybook/preview-api");var entry_preview_exports={};__export(entry_preview_exports,{beforeAll:()=>beforeAll,decorators:()=>decorators2,mount:()=>mount,parameters:()=>parameters2,render:()=>render,renderToCanvas:()=>renderToCanvas});var React12=__toESM(require("react")),import_semver=__toESM(require("semver"));var React8=__toESM(require("react")),DeprecatedReactTestUtils=__toESM(require("react-dom/test-utils")),clonedReact={...React8},reactAct=typeof clonedReact.act=="function"?clonedReact.act:DeprecatedReactTestUtils.act;function setReactActEnvironment(isReactActEnvironment){globalThis.IS_REACT_ACT_ENVIRONMENT=isReactActEnvironment}function getReactActEnvironment(){return globalThis.IS_REACT_ACT_ENVIRONMENT}function withGlobalActEnvironment(actImplementation){return callback=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!0);try{let callbackNeedsToBeAwaited=!1,actResult=actImplementation(()=>{let result=callback();return result!==null&&typeof result=="object"&&typeof result.then=="function"&&(callbackNeedsToBeAwaited=!0),result});if(callbackNeedsToBeAwaited){let thenable=actResult;return{then:(resolve,reject)=>{thenable.then(returnValue=>{setReactActEnvironment(previousActEnvironment),resolve(returnValue)},error=>{setReactActEnvironment(previousActEnvironment),reject(error)})}}}else return setReactActEnvironment(previousActEnvironment),actResult}catch(error){throw setReactActEnvironment(previousActEnvironment),error}}}var act2=process.env.NODE_ENV==="production"?cb=>cb():withGlobalActEnvironment(reactAct);var import_react4=__toESM(require("react")),render=(args,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return import_react4.default.createElement(Component,{...args})};var import_react5=__toESM(require("react"));var scope=(()=>{let win;return typeof window<"u"?win=window:typeof globalThis<"u"?win=globalThis:typeof global<"u"?win=global:typeof self<"u"?win=self:win={},win})();var{FRAMEWORK_OPTIONS}=scope,ErrorBoundary=class extends import_react5.Component{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidMount(){let{hasError}=this.state,{showMain}=this.props;hasError||showMain()}componentDidCatch(err){let{showException}=this.props;showException(err)}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:children}},Wrapper=FRAMEWORK_OPTIONS?.strictMode?import_react5.StrictMode:import_react5.Fragment,actQueue=[],isActing=!1,processActQueue=async()=>{if(isActing||actQueue.length===0)return;isActing=!0;let actTask=actQueue.shift();actTask&&await actTask(),isActing=!1,processActQueue()};async function renderToCanvas({storyContext,unboundStoryFn,showMain,showException,forceRemount},canvasElement){let{renderElement:renderElement2,unmountElement:unmountElement2}=await Promise.resolve().then(()=>(init_react_18(),react_18_exports)),Story=unboundStoryFn,content=storyContext.parameters.__isPortableStory?import_react5.default.createElement(Story,{...storyContext}):import_react5.default.createElement(ErrorBoundary,{showMain,showException},import_react5.default.createElement(Story,{...storyContext})),element=Wrapper?import_react5.default.createElement(Wrapper,null,content):content;return forceRemount&&unmountElement2(canvasElement),await new Promise(async(resolve,reject)=>{actQueue.push(async()=>{try{await act2(async()=>{await renderElement2(element,canvasElement,storyContext?.parameters?.react?.rootOptions)}),resolve()}catch(e){reject(e)}}),processActQueue()}),async()=>{await act2(()=>{unmountElement2(canvasElement)})}}var mount=context=>async ui=>(ui!=null&&(context.originalStoryFn=()=>ui),await context.renderToCanvas(),context.canvas);var parameters2={renderer:"react"},decorators2=[(story,context)=>{if(!context.parameters?.react?.rsc)return story();let major=import_semver.default.major(React12.version),minor=import_semver.default.minor(React12.version);if(major<18||major===18&&minor<3)throw new Error("React Server Components require React >= 18.3");return React12.createElement(React12.Suspense,null,story())}],beforeAll=async()=>{try{let{configure}=await import("storybook/test");configure({unstable_advanceTimersWrapper:cb=>act2(cb),asyncWrapper:async cb=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!1);try{let result=await cb();return await new Promise(resolve=>{setTimeout(()=>{resolve()},0),jestFakeTimersAreEnabled()&&jest.advanceTimersByTime(0)}),result}finally{setReactActEnvironment(previousActEnvironment)}},eventWrapper:cb=>{let result;return act2(()=>(result=cb(),result)),result}})}catch{}};function jestFakeTimersAreEnabled(){return typeof jest<"u"&&jest!==null?setTimeout._isMockFunction===!0||Object.prototype.hasOwnProperty.call(setTimeout,"clock"):!1}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS={...entry_preview_exports,renderToCanvas:async(renderContext,canvasElement)=>{if(renderContext.storyContext.testingLibraryRender==null)return renderToCanvas(renderContext,canvasElement);let{storyContext:{context,unboundStoryFn:Story,testingLibraryRender:render2}}=renderContext,{unmount}=render2(React13.createElement(Story,{...context}),{container:context.canvasElement});return unmount}};function setProjectAnnotations(projectAnnotations){return(0,import_preview_api2.setDefaultProjectAnnotations)(INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2),(0,import_preview_api2.setProjectAnnotations)(projectAnnotations)}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2=(0,import_preview_api2.composeConfigs)([INTERNAL_DEFAULT_PROJECT_ANNOTATIONS,preview_exports]);function composeStory(story,componentAnnotations,projectAnnotations,exportsName){return(0,import_preview_api2.composeStory)(story,componentAnnotations,projectAnnotations,globalThis.globalProjectAnnotations??INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2,exportsName)}function composeStories(csfExports,projectAnnotations){return(0,import_preview_api2.composeStories)(csfExports,projectAnnotations,composeStory)}function definePreview(preview){return(0,import_react6.__definePreview)({...preview,addons:[preview_exports,...preview.addons??[]]})}0&&(module.exports={composeStories,composeStory,definePreview,setProjectAnnotations,...require("@storybook/react")});
1
+ "use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __esm=(fn,res)=>function(){return fn&&(res=(0,fn[__getOwnPropNames(fn)[0]])(fn=0)),res};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to},__reExport=(target,mod,secondTarget)=>(__copyProps(target,mod,"default"),secondTarget&&__copyProps(secondTarget,mod,"default")),__toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var react_18_exports={};__export(react_18_exports,{renderElement:()=>renderElement,unmountElement:()=>unmountElement});function getIsReactActEnvironment(){return globalThis.IS_REACT_ACT_ENVIRONMENT}var React10,ReactDOM,nodes,WithCallback,renderElement,unmountElement,getReactRoot,init_react_18=__esm({"../../lib/react-dom-shim/dist/react-18.mjs"(){"use strict";React10=__toESM(require("react"),1),ReactDOM=__toESM(require("react-dom/client"),1),nodes=new Map;WithCallback=({callback,children})=>{let once=React10.useRef();return React10.useLayoutEffect(()=>{once.current!==callback&&(once.current=callback,callback())},[callback]),children};typeof Promise.withResolvers>"u"&&(Promise.withResolvers=()=>{let resolve=null,reject=null;return{promise:new Promise((res,rej)=>{resolve=res,reject=rej}),resolve,reject}});renderElement=async(node,el,rootOptions)=>{let root=await getReactRoot(el,rootOptions);if(getIsReactActEnvironment()){root.render(node);return}let{promise,resolve}=Promise.withResolvers();return root.render(React10.createElement(WithCallback,{callback:resolve},node)),promise},unmountElement=(el,shouldUseNewRootApi)=>{let root=nodes.get(el);root&&(root.unmount(),nodes.delete(el))},getReactRoot=async(el,rootOptions)=>{let root=nodes.get(el);return root||(root=ReactDOM.createRoot(el,rootOptions),nodes.set(el,root)),root}}});var index_exports={};__export(index_exports,{composeStories:()=>composeStories,composeStory:()=>composeStory,definePreview:()=>definePreview,setProjectAnnotations:()=>setProjectAnnotations});module.exports=__toCommonJS(index_exports);var import_react6=require("@storybook/react");var preview_exports={};__export(preview_exports,{decorators:()=>decorators,loaders:()=>loaders,parameters:()=>parameters});var import_navigation2=require("@storybook/nextjs/navigation.mock"),import_router2=require("@storybook/nextjs/router.mock"),import_is_next_router_error=require("next/dist/client/components/is-next-router-error");var import_config=require("next/config");(0,import_config.setConfig)(process.env.__NEXT_RUNTIME_CONFIG);var React2=__toESM(require("react"));var import_react=__toESM(require("react")),import_head_manager=__toESM(require("next/dist/client/head-manager")),import_head_manager_context=require("next/dist/shared/lib/head-manager-context.shared-runtime"),HeadManagerProvider=({children})=>{let headManager=(0,import_react.useMemo)(import_head_manager.default,[]);return headManager.getIsSsr=()=>!1,import_react.default.createElement(import_head_manager_context.HeadManagerContext.Provider,{value:headManager},children)},head_manager_provider_default=HeadManagerProvider;var HeadManagerDecorator=Story=>React2.createElement(head_manager_provider_default,null,React2.createElement(Story,null));var React3=__toESM(require("react")),import_image_context=require("@storybook/nextjs/dist/image-context"),ImageContext=import_image_context.ImageContext,ImageDecorator=(Story,{parameters:parameters3})=>parameters3.nextjs?.image?React3.createElement(ImageContext.Provider,{value:parameters3.nextjs.image},React3.createElement(Story,null)):React3.createElement(Story,null);var React6=__toESM(require("react")),import_redirect_boundary=require("next/dist/client/components/redirect-boundary");var import_react2=__toESM(require("react")),import_navigation=require("@storybook/nextjs/navigation.mock"),import_app_router_context=require("next/dist/shared/lib/app-router-context.shared-runtime"),import_hooks_client_context=require("next/dist/shared/lib/hooks-client-context.shared-runtime"),import_segment=require("next/dist/shared/lib/segment");function getSelectedParams(currentTree,params={}){let parallelRoutes=currentTree[1];for(let parallelRoute of Object.values(parallelRoutes)){let segment=parallelRoute[0],isDynamicParameter=Array.isArray(segment),segmentValue=isDynamicParameter?segment[1]:segment;if(!segmentValue||segmentValue.startsWith(import_segment.PAGE_SEGMENT_KEY))continue;isDynamicParameter&&(segment[2]==="c"||segment[2]==="oc")?params[segment[0]]=segment[1].split("/"):isDynamicParameter&&(params[segment[0]]=segment[1]),params=getSelectedParams(parallelRoute,params)}return params}var getParallelRoutes=segmentsList=>{let segment=segmentsList.shift();return segment?[segment,{children:getParallelRoutes(segmentsList)}]:[]},AppRouterProvider=({children,routeParams})=>{let{pathname,query,segments=[]}=routeParams,tree=[pathname,{children:getParallelRoutes([...segments])}],pathParams=(0,import_react2.useMemo)(()=>getSelectedParams(tree),[tree]),newLazyCacheNode={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null};return import_react2.default.createElement(import_hooks_client_context.PathParamsContext.Provider,{value:pathParams},import_react2.default.createElement(import_hooks_client_context.PathnameContext.Provider,{value:pathname},import_react2.default.createElement(import_hooks_client_context.SearchParamsContext.Provider,{value:new URLSearchParams(query)},import_react2.default.createElement(import_app_router_context.GlobalLayoutRouterContext.Provider,{value:{changeByServerResponse(){},buildId:"storybook",tree,focusAndScrollRef:{apply:!1,hashFragment:null,segmentPaths:[tree],onlyHashChange:!1},nextUrl:pathname}},import_react2.default.createElement(import_app_router_context.AppRouterContext.Provider,{value:(0,import_navigation.getRouter)()},import_react2.default.createElement(import_app_router_context.LayoutRouterContext.Provider,{value:{childNodes:new Map,tree,parentTree:tree,parentCacheNode:newLazyCacheNode,url:pathname,loading:null}},children))))))};var import_react3=__toESM(require("react")),import_router=require("@storybook/nextjs/router.mock"),import_router_context=require("next/dist/shared/lib/router-context.shared-runtime"),PageRouterProvider=({children})=>import_react3.default.createElement(import_router_context.RouterContext.Provider,{value:(0,import_router.getRouter)()},children);var defaultRouterParams={pathname:"/",query:{}},RouterDecorator=(Story,{parameters:parameters3})=>parameters3.nextjs?.appDirectory??!1?AppRouterProvider?React6.createElement(AppRouterProvider,{routeParams:{...defaultRouterParams,...parameters3.nextjs?.navigation}},React6.createElement(import_redirect_boundary.RedirectBoundary,null,React6.createElement(Story,null))):null:React6.createElement(PageRouterProvider,null,React6.createElement(Story,null));var React7=__toESM(require("react")),import_styled_jsx=require("styled-jsx"),StyledJsxDecorator=Story=>React7.createElement(import_styled_jsx.StyleRegistry,null,React7.createElement(Story,null));function addNextHeadCount(){let meta=document.createElement("meta");meta.name="next-head-count",meta.content="0",document.head.appendChild(meta)}function isAsyncClientComponentError(error){return typeof error=="string"&&(error.includes("Only Server Components can be async at the moment.")||error.includes("A component was suspended by an uncached promise.")||error.includes("async/await is not yet supported in Client Components"))}addNextHeadCount();var origConsoleError=globalThis.console.error;globalThis.console.error=(...args)=>{let error=args[0];(0,import_is_next_router_error.isNextRouterError)(error)||isAsyncClientComponentError(error)||origConsoleError.apply(globalThis.console,args)};globalThis.addEventListener("error",ev=>{if((0,import_is_next_router_error.isNextRouterError)(ev.error)||isAsyncClientComponentError(ev.error)){ev.preventDefault();return}});var decorators=[StyledJsxDecorator,ImageDecorator,RouterDecorator,HeadManagerDecorator],loaders=async({globals,parameters:parameters3})=>{let{router,appDirectory}=parameters3.nextjs??{};appDirectory?(0,import_navigation2.createNavigation)(router):(0,import_router2.createRouter)({locale:globals.locale,...router})},parameters={docs:{source:{excludeDecorators:!0}},react:{rootOptions:{onCaughtError(error){(0,import_is_next_router_error.isNextRouterError)(error)||console.error(error)}}}};__reExport(index_exports,require("@storybook/react"),module.exports);var import_preview_api2=require("storybook/preview-api");var React13=__toESM(require("react")),import_preview_api=require("storybook/preview-api");var entry_preview_exports={};__export(entry_preview_exports,{beforeAll:()=>beforeAll,decorators:()=>decorators2,mount:()=>mount,parameters:()=>parameters2,render:()=>render,renderToCanvas:()=>renderToCanvas});var React12=__toESM(require("react")),import_semver=__toESM(require("semver"));var React8=__toESM(require("react")),clonedReact={...React8};function setReactActEnvironment(isReactActEnvironment){globalThis.IS_REACT_ACT_ENVIRONMENT=isReactActEnvironment}function getReactActEnvironment(){return globalThis.IS_REACT_ACT_ENVIRONMENT}function withGlobalActEnvironment(actImplementation){return callback=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!0);try{let callbackNeedsToBeAwaited=!1,actResult=actImplementation(()=>{let result=callback();return result!==null&&typeof result=="object"&&typeof result.then=="function"&&(callbackNeedsToBeAwaited=!0),result});if(callbackNeedsToBeAwaited){let thenable=actResult;return{then:(resolve,reject)=>{thenable.then(returnValue=>{setReactActEnvironment(previousActEnvironment),resolve(returnValue)},error=>{setReactActEnvironment(previousActEnvironment),reject(error)})}}}else return setReactActEnvironment(previousActEnvironment),actResult}catch(error){throw setReactActEnvironment(previousActEnvironment),error}}}var getAct=async()=>{let reactAct=typeof clonedReact.act=="function"?clonedReact.act:(await import("react-dom/test-utils")).act;return process.env.NODE_ENV==="production"?cb=>cb():withGlobalActEnvironment(reactAct)};var import_react4=__toESM(require("react")),render=(args,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return import_react4.default.createElement(Component,{...args})};var import_react5=__toESM(require("react"));var scope=(()=>{let win;return typeof window<"u"?win=window:typeof globalThis<"u"?win=globalThis:typeof global<"u"?win=global:typeof self<"u"?win=self:win={},win})();var{FRAMEWORK_OPTIONS}=scope,ErrorBoundary=class extends import_react5.Component{constructor(){super(...arguments);this.state={hasError:!1}}static getDerivedStateFromError(){return{hasError:!0}}componentDidMount(){let{hasError}=this.state,{showMain}=this.props;hasError||showMain()}componentDidCatch(err){let{showException}=this.props;showException(err)}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:children}},Wrapper=FRAMEWORK_OPTIONS?.strictMode?import_react5.StrictMode:import_react5.Fragment,actQueue=[],isActing=!1,processActQueue=async()=>{if(isActing||actQueue.length===0)return;isActing=!0;let actTask=actQueue.shift();actTask&&await actTask(),isActing=!1,processActQueue()};async function renderToCanvas({storyContext,unboundStoryFn,showMain,showException,forceRemount},canvasElement){let{renderElement:renderElement2,unmountElement:unmountElement2}=await Promise.resolve().then(()=>(init_react_18(),react_18_exports)),Story=unboundStoryFn,content=storyContext.parameters.__isPortableStory?import_react5.default.createElement(Story,{...storyContext}):import_react5.default.createElement(ErrorBoundary,{showMain,showException},import_react5.default.createElement(Story,{...storyContext})),element=Wrapper?import_react5.default.createElement(Wrapper,null,content):content;forceRemount&&unmountElement2(canvasElement);let act=await getAct();return await new Promise(async(resolve,reject)=>{actQueue.push(async()=>{try{await act(async()=>{await renderElement2(element,canvasElement,storyContext?.parameters?.react?.rootOptions)}),resolve()}catch(e){reject(e)}}),processActQueue()}),async()=>{await act(()=>{unmountElement2(canvasElement)})}}var mount=context=>async ui=>(ui!=null&&(context.originalStoryFn=()=>ui),await context.renderToCanvas(),context.canvas);var parameters2={renderer:"react"},decorators2=[(story,context)=>{if(!context.parameters?.react?.rsc)return story();let major=import_semver.default.major(React12.version),minor=import_semver.default.minor(React12.version);if(major<18||major===18&&minor<3)throw new Error("React Server Components require React >= 18.3");return React12.createElement(React12.Suspense,null,story())}],beforeAll=async()=>{try{let{configure}=await import("storybook/test"),act=await getAct();configure({unstable_advanceTimersWrapper:cb=>act(cb),asyncWrapper:async cb=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!1);try{let result=await cb();return await new Promise(resolve=>{setTimeout(()=>{resolve()},0),jestFakeTimersAreEnabled()&&jest.advanceTimersByTime(0)}),result}finally{setReactActEnvironment(previousActEnvironment)}},eventWrapper:cb=>{let result;return act(()=>(result=cb(),result)),result}})}catch{}};function jestFakeTimersAreEnabled(){return typeof jest<"u"&&jest!==null?setTimeout._isMockFunction===!0||Object.prototype.hasOwnProperty.call(setTimeout,"clock"):!1}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS={...entry_preview_exports,renderToCanvas:async(renderContext,canvasElement)=>{if(renderContext.storyContext.testingLibraryRender==null)return renderToCanvas(renderContext,canvasElement);let{storyContext:{context,unboundStoryFn:Story,testingLibraryRender:render2}}=renderContext,{unmount}=render2(React13.createElement(Story,{...context}),{container:context.canvasElement});return unmount}};function setProjectAnnotations(projectAnnotations){return(0,import_preview_api2.setDefaultProjectAnnotations)(INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2),(0,import_preview_api2.setProjectAnnotations)(projectAnnotations)}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2=(0,import_preview_api2.composeConfigs)([INTERNAL_DEFAULT_PROJECT_ANNOTATIONS,preview_exports]);function composeStory(story,componentAnnotations,projectAnnotations,exportsName){return(0,import_preview_api2.composeStory)(story,componentAnnotations,projectAnnotations,globalThis.globalProjectAnnotations??INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2,exportsName)}function composeStories(csfExports,projectAnnotations){return(0,import_preview_api2.composeStories)(csfExports,projectAnnotations,composeStory)}function definePreview(preview){return(0,import_react6.__definePreview)({...preview,addons:[preview_exports,...preview.addons??[]]})}0&&(module.exports={composeStories,composeStory,definePreview,setProjectAnnotations,...require("@storybook/react")});
package/dist/index.mjs CHANGED
@@ -7,8 +7,7 @@ import { composeConfigs, setDefaultProjectAnnotations, setProjectAnnotations as
7
7
  import * as React3 from 'react';
8
8
  import React3__default, { StrictMode, Fragment, Component } from 'react';
9
9
  import semver from 'semver';
10
- import * as DeprecatedReactTestUtils from 'react-dom/test-utils';
11
10
 
12
- var entry_preview_exports={};__export(entry_preview_exports,{beforeAll:()=>beforeAll,decorators:()=>decorators,mount:()=>mount,parameters:()=>parameters,render:()=>render,renderToCanvas:()=>renderToCanvas});var clonedReact={...React3},reactAct=typeof clonedReact.act=="function"?clonedReact.act:DeprecatedReactTestUtils.act;function setReactActEnvironment(isReactActEnvironment){globalThis.IS_REACT_ACT_ENVIRONMENT=isReactActEnvironment;}function getReactActEnvironment(){return globalThis.IS_REACT_ACT_ENVIRONMENT}function withGlobalActEnvironment(actImplementation){return callback=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!0);try{let callbackNeedsToBeAwaited=!1,actResult=actImplementation(()=>{let result=callback();return result!==null&&typeof result=="object"&&typeof result.then=="function"&&(callbackNeedsToBeAwaited=!0),result});if(callbackNeedsToBeAwaited){let thenable=actResult;return {then:(resolve,reject)=>{thenable.then(returnValue=>{setReactActEnvironment(previousActEnvironment),resolve(returnValue);},error=>{setReactActEnvironment(previousActEnvironment),reject(error);});}}}else return setReactActEnvironment(previousActEnvironment),actResult}catch(error){throw setReactActEnvironment(previousActEnvironment),error}}}var act2=process.env.NODE_ENV==="production"?cb=>cb():withGlobalActEnvironment(reactAct);var render=(args,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return React3__default.createElement(Component,{...args})};var scope=(()=>{let win;return typeof window<"u"?win=window:typeof globalThis<"u"?win=globalThis:typeof global<"u"?win=global:typeof self<"u"?win=self:win={},win})();var{FRAMEWORK_OPTIONS}=scope,ErrorBoundary=class extends Component{constructor(){super(...arguments);this.state={hasError:!1};}static getDerivedStateFromError(){return {hasError:!0}}componentDidMount(){let{hasError}=this.state,{showMain}=this.props;hasError||showMain();}componentDidCatch(err){let{showException}=this.props;showException(err);}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:children}},Wrapper=FRAMEWORK_OPTIONS?.strictMode?StrictMode:Fragment,actQueue=[],isActing=!1,processActQueue=async()=>{if(isActing||actQueue.length===0)return;isActing=!0;let actTask=actQueue.shift();actTask&&await actTask(),isActing=!1,processActQueue();};async function renderToCanvas({storyContext,unboundStoryFn,showMain,showException,forceRemount},canvasElement){let{renderElement,unmountElement}=await import('./react-18-T4ABSJCR.mjs'),Story=unboundStoryFn,content=storyContext.parameters.__isPortableStory?React3__default.createElement(Story,{...storyContext}):React3__default.createElement(ErrorBoundary,{showMain,showException},React3__default.createElement(Story,{...storyContext})),element=Wrapper?React3__default.createElement(Wrapper,null,content):content;return forceRemount&&unmountElement(canvasElement),await new Promise(async(resolve,reject)=>{actQueue.push(async()=>{try{await act2(async()=>{await renderElement(element,canvasElement,storyContext?.parameters?.react?.rootOptions);}),resolve();}catch(e){reject(e);}}),processActQueue();}),async()=>{await act2(()=>{unmountElement(canvasElement);});}}var mount=context=>async ui=>(ui!=null&&(context.originalStoryFn=()=>ui),await context.renderToCanvas(),context.canvas);var parameters={renderer:"react"},decorators=[(story,context)=>{if(!context.parameters?.react?.rsc)return story();let major=semver.major(React3.version),minor=semver.minor(React3.version);if(major<18||major===18&&minor<3)throw new Error("React Server Components require React >= 18.3");return React3.createElement(React3.Suspense,null,story())}],beforeAll=async()=>{try{let{configure}=await import('storybook/test');configure({unstable_advanceTimersWrapper:cb=>act2(cb),asyncWrapper:async cb=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!1);try{let result=await cb();return await new Promise(resolve=>{setTimeout(()=>{resolve();},0),jestFakeTimersAreEnabled()&&jest.advanceTimersByTime(0);}),result}finally{setReactActEnvironment(previousActEnvironment);}},eventWrapper:cb=>{let result;return act2(()=>(result=cb(),result)),result}});}catch{}};function jestFakeTimersAreEnabled(){return typeof jest<"u"&&jest!==null?setTimeout._isMockFunction===!0||Object.prototype.hasOwnProperty.call(setTimeout,"clock"):!1}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS={...entry_preview_exports,renderToCanvas:async(renderContext,canvasElement)=>{if(renderContext.storyContext.testingLibraryRender==null)return renderToCanvas(renderContext,canvasElement);let{storyContext:{context,unboundStoryFn:Story,testingLibraryRender:render2}}=renderContext,{unmount}=render2(React3.createElement(Story,{...context}),{container:context.canvasElement});return unmount}};function setProjectAnnotations(projectAnnotations){return setDefaultProjectAnnotations(INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2),setProjectAnnotations$1(projectAnnotations)}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2=composeConfigs([INTERNAL_DEFAULT_PROJECT_ANNOTATIONS,preview_exports]);function composeStory(story,componentAnnotations,projectAnnotations,exportsName){return composeStory$1(story,componentAnnotations,projectAnnotations,globalThis.globalProjectAnnotations??INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2,exportsName)}function composeStories(csfExports,projectAnnotations){return composeStories$1(csfExports,projectAnnotations,composeStory)}function definePreview(preview){return __definePreview({...preview,addons:[preview_exports,...preview.addons??[]]})}
11
+ var entry_preview_exports={};__export(entry_preview_exports,{beforeAll:()=>beforeAll,decorators:()=>decorators,mount:()=>mount,parameters:()=>parameters,render:()=>render,renderToCanvas:()=>renderToCanvas});var clonedReact={...React3};function setReactActEnvironment(isReactActEnvironment){globalThis.IS_REACT_ACT_ENVIRONMENT=isReactActEnvironment;}function getReactActEnvironment(){return globalThis.IS_REACT_ACT_ENVIRONMENT}function withGlobalActEnvironment(actImplementation){return callback=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!0);try{let callbackNeedsToBeAwaited=!1,actResult=actImplementation(()=>{let result=callback();return result!==null&&typeof result=="object"&&typeof result.then=="function"&&(callbackNeedsToBeAwaited=!0),result});if(callbackNeedsToBeAwaited){let thenable=actResult;return {then:(resolve,reject)=>{thenable.then(returnValue=>{setReactActEnvironment(previousActEnvironment),resolve(returnValue);},error=>{setReactActEnvironment(previousActEnvironment),reject(error);});}}}else return setReactActEnvironment(previousActEnvironment),actResult}catch(error){throw setReactActEnvironment(previousActEnvironment),error}}}var getAct=async()=>{let reactAct=typeof clonedReact.act=="function"?clonedReact.act:(await import('react-dom/test-utils')).act;return process.env.NODE_ENV==="production"?cb=>cb():withGlobalActEnvironment(reactAct)};var render=(args,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return React3__default.createElement(Component,{...args})};var scope=(()=>{let win;return typeof window<"u"?win=window:typeof globalThis<"u"?win=globalThis:typeof global<"u"?win=global:typeof self<"u"?win=self:win={},win})();var{FRAMEWORK_OPTIONS}=scope,ErrorBoundary=class extends Component{constructor(){super(...arguments);this.state={hasError:!1};}static getDerivedStateFromError(){return {hasError:!0}}componentDidMount(){let{hasError}=this.state,{showMain}=this.props;hasError||showMain();}componentDidCatch(err){let{showException}=this.props;showException(err);}render(){let{hasError}=this.state,{children}=this.props;return hasError?null:children}},Wrapper=FRAMEWORK_OPTIONS?.strictMode?StrictMode:Fragment,actQueue=[],isActing=!1,processActQueue=async()=>{if(isActing||actQueue.length===0)return;isActing=!0;let actTask=actQueue.shift();actTask&&await actTask(),isActing=!1,processActQueue();};async function renderToCanvas({storyContext,unboundStoryFn,showMain,showException,forceRemount},canvasElement){let{renderElement,unmountElement}=await import('./react-18-T4ABSJCR.mjs'),Story=unboundStoryFn,content=storyContext.parameters.__isPortableStory?React3__default.createElement(Story,{...storyContext}):React3__default.createElement(ErrorBoundary,{showMain,showException},React3__default.createElement(Story,{...storyContext})),element=Wrapper?React3__default.createElement(Wrapper,null,content):content;forceRemount&&unmountElement(canvasElement);let act=await getAct();return await new Promise(async(resolve,reject)=>{actQueue.push(async()=>{try{await act(async()=>{await renderElement(element,canvasElement,storyContext?.parameters?.react?.rootOptions);}),resolve();}catch(e){reject(e);}}),processActQueue();}),async()=>{await act(()=>{unmountElement(canvasElement);});}}var mount=context=>async ui=>(ui!=null&&(context.originalStoryFn=()=>ui),await context.renderToCanvas(),context.canvas);var parameters={renderer:"react"},decorators=[(story,context)=>{if(!context.parameters?.react?.rsc)return story();let major=semver.major(React3.version),minor=semver.minor(React3.version);if(major<18||major===18&&minor<3)throw new Error("React Server Components require React >= 18.3");return React3.createElement(React3.Suspense,null,story())}],beforeAll=async()=>{try{let{configure}=await import('storybook/test'),act=await getAct();configure({unstable_advanceTimersWrapper:cb=>act(cb),asyncWrapper:async cb=>{let previousActEnvironment=getReactActEnvironment();setReactActEnvironment(!1);try{let result=await cb();return await new Promise(resolve=>{setTimeout(()=>{resolve();},0),jestFakeTimersAreEnabled()&&jest.advanceTimersByTime(0);}),result}finally{setReactActEnvironment(previousActEnvironment);}},eventWrapper:cb=>{let result;return act(()=>(result=cb(),result)),result}});}catch{}};function jestFakeTimersAreEnabled(){return typeof jest<"u"&&jest!==null?setTimeout._isMockFunction===!0||Object.prototype.hasOwnProperty.call(setTimeout,"clock"):!1}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS={...entry_preview_exports,renderToCanvas:async(renderContext,canvasElement)=>{if(renderContext.storyContext.testingLibraryRender==null)return renderToCanvas(renderContext,canvasElement);let{storyContext:{context,unboundStoryFn:Story,testingLibraryRender:render2}}=renderContext,{unmount}=render2(React3.createElement(Story,{...context}),{container:context.canvasElement});return unmount}};function setProjectAnnotations(projectAnnotations){return setDefaultProjectAnnotations(INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2),setProjectAnnotations$1(projectAnnotations)}var INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2=composeConfigs([INTERNAL_DEFAULT_PROJECT_ANNOTATIONS,preview_exports]);function composeStory(story,componentAnnotations,projectAnnotations,exportsName){return composeStory$1(story,componentAnnotations,projectAnnotations,globalThis.globalProjectAnnotations??INTERNAL_DEFAULT_PROJECT_ANNOTATIONS2,exportsName)}function composeStories(csfExports,projectAnnotations){return composeStories$1(csfExports,projectAnnotations,composeStory)}function definePreview(preview){return __definePreview({...preview,addons:[preview_exports,...preview.addons??[]]})}
13
12
 
14
13
  export { composeStories, composeStory, definePreview, setProjectAnnotations };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/nextjs",
3
- "version": "9.0.0-alpha.6",
3
+ "version": "9.0.0-alpha.8",
4
4
  "description": "Storybook for Next.js",
5
5
  "keywords": [
6
6
  "storybook",
@@ -153,9 +153,9 @@
153
153
  "@babel/preset-typescript": "^7.24.1",
154
154
  "@babel/runtime": "^7.24.4",
155
155
  "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11",
156
- "@storybook/builder-webpack5": "9.0.0-alpha.6",
157
- "@storybook/preset-react-webpack": "9.0.0-alpha.6",
158
- "@storybook/react": "9.0.0-alpha.6",
156
+ "@storybook/builder-webpack5": "9.0.0-alpha.8",
157
+ "@storybook/preset-react-webpack": "9.0.0-alpha.8",
158
+ "@storybook/react": "9.0.0-alpha.8",
159
159
  "@types/semver": "^7.3.4",
160
160
  "babel-loader": "^9.1.3",
161
161
  "css-loader": "^6.7.3",
@@ -192,7 +192,7 @@
192
192
  "next": "^13.5.0 || ^14.0.0 || ^15.0.0",
193
193
  "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
194
194
  "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta",
195
- "storybook": "^9.0.0-alpha.6",
195
+ "storybook": "^9.0.0-alpha.8",
196
196
  "webpack": "^5.0.0"
197
197
  },
198
198
  "peerDependenciesMeta": {
@@ -1,266 +0,0 @@
1
- interface MockResultReturn<T> {
2
- type: 'return';
3
- /**
4
- * The value that was returned from the function. If function returned a Promise, then this will be a resolved value.
5
- */
6
- value: T;
7
- }
8
- interface MockResultIncomplete {
9
- type: 'incomplete';
10
- value: undefined;
11
- }
12
- interface MockResultThrow {
13
- type: 'throw';
14
- /**
15
- * An error that was thrown during function execution.
16
- */
17
- value: any;
18
- }
19
- interface MockSettledResultFulfilled<T> {
20
- type: 'fulfilled';
21
- value: T;
22
- }
23
- interface MockSettledResultRejected {
24
- type: 'rejected';
25
- value: any;
26
- }
27
- type MockResult<T> = MockResultReturn<T> | MockResultThrow | MockResultIncomplete;
28
- type MockSettledResult<T> = MockSettledResultFulfilled<T> | MockSettledResultRejected;
29
- interface MockContext<T extends Procedure> {
30
- /**
31
- * This is an array containing all arguments for each call. One item of the array is the arguments of that call.
32
- *
33
- * @example
34
- * const fn = vi.fn()
35
- *
36
- * fn('arg1', 'arg2')
37
- * fn('arg3')
38
- *
39
- * fn.mock.calls === [
40
- * ['arg1', 'arg2'], // first call
41
- * ['arg3'], // second call
42
- * ]
43
- */
44
- calls: Parameters<T>[];
45
- /**
46
- * This is an array containing all instances that were instantiated when mock was called with a `new` keyword. Note that this is an actual context (`this`) of the function, not a return value.
47
- */
48
- instances: ReturnType<T>[];
49
- /**
50
- * An array of `this` values that were used during each call to the mock function.
51
- */
52
- contexts: ThisParameterType<T>[];
53
- /**
54
- * The order of mock's execution. This returns an array of numbers which are shared between all defined mocks.
55
- *
56
- * @example
57
- * const fn1 = vi.fn()
58
- * const fn2 = vi.fn()
59
- *
60
- * fn1()
61
- * fn2()
62
- * fn1()
63
- *
64
- * fn1.mock.invocationCallOrder === [1, 3]
65
- * fn2.mock.invocationCallOrder === [2]
66
- */
67
- invocationCallOrder: number[];
68
- /**
69
- * This is an array containing all values that were `returned` from the function.
70
- *
71
- * The `value` property contains the returned value or thrown error. If the function returned a `Promise`, then `result` will always be `'return'` even if the promise was rejected.
72
- *
73
- * @example
74
- * const fn = vi.fn()
75
- * .mockReturnValueOnce('result')
76
- * .mockImplementationOnce(() => { throw new Error('thrown error') })
77
- *
78
- * const result = fn()
79
- *
80
- * try {
81
- * fn()
82
- * }
83
- * catch {}
84
- *
85
- * fn.mock.results === [
86
- * {
87
- * type: 'return',
88
- * value: 'result',
89
- * },
90
- * {
91
- * type: 'throw',
92
- * value: Error,
93
- * },
94
- * ]
95
- */
96
- results: MockResult<ReturnType<T>>[];
97
- /**
98
- * An array containing all values that were `resolved` or `rejected` from the function.
99
- *
100
- * This array will be empty if the function was never resolved or rejected.
101
- *
102
- * @example
103
- * const fn = vi.fn().mockResolvedValueOnce('result')
104
- *
105
- * const result = fn()
106
- *
107
- * fn.mock.settledResults === []
108
- * fn.mock.results === [
109
- * {
110
- * type: 'return',
111
- * value: Promise<'result'>,
112
- * },
113
- * ]
114
- *
115
- * await result
116
- *
117
- * fn.mock.settledResults === [
118
- * {
119
- * type: 'fulfilled',
120
- * value: 'result',
121
- * },
122
- * ]
123
- */
124
- settledResults: MockSettledResult<Awaited<ReturnType<T>>>[];
125
- /**
126
- * This contains the arguments of the last call. If spy wasn't called, will return `undefined`.
127
- */
128
- lastCall: Parameters<T> | undefined;
129
- }
130
- type Procedure = (...args: any[]) => any;
131
- type NormalizedPrecedure<T extends Procedure> = (...args: Parameters<T>) => ReturnType<T>;
132
- interface MockInstance<T extends Procedure = Procedure> {
133
- /**
134
- * Use it to return the name given to mock with method `.mockName(name)`.
135
- */
136
- getMockName(): string;
137
- /**
138
- * Sets internal mock name. Useful to see the name of the mock if an assertion fails.
139
- */
140
- mockName(n: string): this;
141
- /**
142
- * Current context of the mock. It stores information about all invocation calls, instances, and results.
143
- */
144
- mock: MockContext<T>;
145
- /**
146
- * Clears all information about every call. After calling it, all properties on `.mock` will return an empty state. This method does not reset implementations.
147
- *
148
- * It is useful if you need to clean up mock between different assertions.
149
- */
150
- mockClear(): this;
151
- /**
152
- * Does what `mockClear` does and makes inner implementation an empty function (returning `undefined` when invoked). This also resets all "once" implementations.
153
- *
154
- * This is useful when you want to completely reset a mock to the default state.
155
- */
156
- mockReset(): this;
157
- /**
158
- * Does what `mockReset` does and restores inner implementation to the original function.
159
- *
160
- * Note that restoring mock from `vi.fn()` will set implementation to an empty function that returns `undefined`. Restoring a `vi.fn(impl)` will restore implementation to `impl`.
161
- */
162
- mockRestore(): void;
163
- /**
164
- * Returns current mock implementation if there is one.
165
- *
166
- * If mock was created with `vi.fn`, it will consider passed down method as a mock implementation.
167
- *
168
- * If mock was created with `vi.spyOn`, it will return `undefined` unless a custom implementation was provided.
169
- */
170
- getMockImplementation(): NormalizedPrecedure<T> | undefined;
171
- /**
172
- * Accepts a function that will be used as an implementation of the mock.
173
- * @example
174
- * const increment = vi.fn().mockImplementation(count => count + 1);
175
- * expect(increment(3)).toBe(4);
176
- */
177
- mockImplementation(fn: NormalizedPrecedure<T>): this;
178
- /**
179
- * Accepts a function that will be used as a mock implementation during the next call. Can be chained so that multiple function calls produce different results.
180
- * @example
181
- * const fn = vi.fn(count => count).mockImplementationOnce(count => count + 1);
182
- * expect(fn(3)).toBe(4);
183
- * expect(fn(3)).toBe(3);
184
- */
185
- mockImplementationOnce(fn: NormalizedPrecedure<T>): this;
186
- /**
187
- * Overrides the original mock implementation temporarily while the callback is being executed.
188
- * @example
189
- * const myMockFn = vi.fn(() => 'original')
190
- *
191
- * myMockFn.withImplementation(() => 'temp', () => {
192
- * myMockFn() // 'temp'
193
- * })
194
- *
195
- * myMockFn() // 'original'
196
- */
197
- withImplementation<T2>(fn: NormalizedPrecedure<T>, cb: () => T2): T2 extends Promise<unknown> ? Promise<this> : this;
198
- /**
199
- * Use this if you need to return `this` context from the method without invoking actual implementation.
200
- */
201
- mockReturnThis(): this;
202
- /**
203
- * Accepts a value that will be returned whenever the mock function is called.
204
- */
205
- mockReturnValue(obj: ReturnType<T>): this;
206
- /**
207
- * Accepts a value that will be returned during the next function call. If chained, every consecutive call will return the specified value.
208
- *
209
- * When there are no more `mockReturnValueOnce` values to use, mock will fallback to the previously defined implementation if there is one.
210
- * @example
211
- * const myMockFn = vi
212
- * .fn()
213
- * .mockReturnValue('default')
214
- * .mockReturnValueOnce('first call')
215
- * .mockReturnValueOnce('second call')
216
- *
217
- * // 'first call', 'second call', 'default'
218
- * console.log(myMockFn(), myMockFn(), myMockFn())
219
- */
220
- mockReturnValueOnce(obj: ReturnType<T>): this;
221
- /**
222
- * Accepts a value that will be resolved when async function is called.
223
- * @example
224
- * const asyncMock = vi.fn().mockResolvedValue(42)
225
- * asyncMock() // Promise<42>
226
- */
227
- mockResolvedValue(obj: Awaited<ReturnType<T>>): this;
228
- /**
229
- * Accepts a value that will be resolved during the next function call. If chained, every consecutive call will resolve specified value.
230
- * @example
231
- * const myMockFn = vi
232
- * .fn()
233
- * .mockResolvedValue('default')
234
- * .mockResolvedValueOnce('first call')
235
- * .mockResolvedValueOnce('second call')
236
- *
237
- * // Promise<'first call'>, Promise<'second call'>, Promise<'default'>
238
- * console.log(myMockFn(), myMockFn(), myMockFn())
239
- */
240
- mockResolvedValueOnce(obj: Awaited<ReturnType<T>>): this;
241
- /**
242
- * Accepts an error that will be rejected when async function is called.
243
- * @example
244
- * const asyncMock = vi.fn().mockRejectedValue(new Error('Async error'))
245
- * await asyncMock() // throws 'Async error'
246
- */
247
- mockRejectedValue(obj: any): this;
248
- /**
249
- * Accepts a value that will be rejected during the next function call. If chained, every consecutive call will reject specified value.
250
- * @example
251
- * const asyncMock = vi
252
- * .fn()
253
- * .mockResolvedValueOnce('first call')
254
- * .mockRejectedValueOnce(new Error('Async error'))
255
- *
256
- * await asyncMock() // first call
257
- * await asyncMock() // throws "Async error"
258
- */
259
- mockRejectedValueOnce(obj: any): this;
260
- }
261
- interface Mock<T extends Procedure = Procedure> extends MockInstance<T> {
262
- new (...args: Parameters<T>): ReturnType<T>;
263
- (...args: Parameters<T>): ReturnType<T>;
264
- }
265
-
266
- export { Mock as M };