@storybook/preview-api 7.0.0-alpha.54
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.
- package/README.md +13 -0
- package/dist/ClientApi-dce2f8f2.d.ts +65 -0
- package/dist/DocsContext-f03e0d93.d.ts +322 -0
- package/dist/StoryStore-8f9ab1c2.d.ts +103 -0
- package/dist/addons.d.ts +4 -0
- package/dist/addons.js +4 -0
- package/dist/addons.mjs +1 -0
- package/dist/chunk-CMHHF3W3.mjs +39 -0
- package/dist/chunk-GRRYLBAT.mjs +2 -0
- package/dist/chunk-OWLSKH4Q.mjs +13 -0
- package/dist/chunk-Q5H6OXOG.mjs +29 -0
- package/dist/chunk-QSH26RWA.mjs +3 -0
- package/dist/chunk-SVTQV5PN.mjs +2 -0
- package/dist/client-api.d.ts +10 -0
- package/dist/client-api.js +53 -0
- package/dist/client-api.mjs +1 -0
- package/dist/composeConfigs-62cfdf58.d.ts +9 -0
- package/dist/core-client.d.ts +6 -0
- package/dist/core-client.js +70 -0
- package/dist/core-client.mjs +1 -0
- package/dist/hooks-0d0b05c1.d.ts +60 -0
- package/dist/hooks-a99e1305.d.ts +16 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.js +83 -0
- package/dist/index.mjs +1 -0
- package/dist/preview-web.d.ts +7 -0
- package/dist/preview-web.js +55 -0
- package/dist/preview-web.mjs +1 -0
- package/dist/queryparams-2acc7490.d.ts +6 -0
- package/dist/sortStories-dc945850.d.ts +74 -0
- package/dist/start-3a1ec032.d.ts +19 -0
- package/dist/store.d.ts +7 -0
- package/dist/store.js +41 -0
- package/dist/store.mjs +1 -0
- package/dist/storybook-channel-mock-e42c60b1.d.ts +31 -0
- package/jest.config.js +7 -0
- package/package.json +107 -0
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Preview API
|
|
2
|
+
|
|
3
|
+
TODO write proper documentation of this package
|
|
4
|
+
|
|
5
|
+
# "Sub packages" README documents
|
|
6
|
+
|
|
7
|
+
This package used to be multiple packages (they have been combined into this one):
|
|
8
|
+
|
|
9
|
+
- `@storybook/addons` [read (old) docs](./README-addons.md)
|
|
10
|
+
- `@storybook/client-api` [read (old) docs](./README-client-api.md)
|
|
11
|
+
- `@storybook/core-client` [read (old) docs](./README-core-client.md)
|
|
12
|
+
- `@storybook/preview-web` [read (old) docs](./README-preview-web.md)
|
|
13
|
+
- `@storybook/store` [read (old) docs](./README-store.md)
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import * as _storybook_types from '@storybook/types';
|
|
2
|
+
import { Renderer, Store_NormalizedProjectAnnotations, StoryId, Addon_IndexEntry, ComponentId, Path, Store_ModuleExports, DecoratorFunction, Parameters, LoaderFunction, Args, ArgTypes, ArgsEnhancer, ArgTypesEnhancer, StepRunner, Store_ModuleImportFn, Globals, GlobalTypes, Addon_StoryApi } from '@storybook/types';
|
|
3
|
+
import { S as StoryStore } from './StoryStore-8f9ab1c2.js';
|
|
4
|
+
|
|
5
|
+
declare class StoryStoreFacade<TRenderer extends Renderer> {
|
|
6
|
+
projectAnnotations: Store_NormalizedProjectAnnotations<TRenderer>;
|
|
7
|
+
entries: Record<StoryId, Addon_IndexEntry & {
|
|
8
|
+
componentId?: ComponentId;
|
|
9
|
+
}>;
|
|
10
|
+
csfExports: Record<Path, Store_ModuleExports>;
|
|
11
|
+
constructor();
|
|
12
|
+
importFn(path: Path): Promise<Store_ModuleExports>;
|
|
13
|
+
getStoryIndex(store: StoryStore<TRenderer>): {
|
|
14
|
+
v: number;
|
|
15
|
+
entries: Record<string, Addon_IndexEntry>;
|
|
16
|
+
};
|
|
17
|
+
clearFilenameExports(fileName: Path): void;
|
|
18
|
+
addStoriesFromExports(fileName: Path, fileExports: Store_ModuleExports): void;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
declare let singleton: ClientApi<Renderer>;
|
|
22
|
+
declare const addDecorator: (decorator: DecoratorFunction<Renderer>) => void;
|
|
23
|
+
declare const addParameters: (parameters: Parameters) => void;
|
|
24
|
+
declare const addLoader: (loader: LoaderFunction<Renderer>) => void;
|
|
25
|
+
declare const addArgs: (args: Args) => void;
|
|
26
|
+
declare const addArgTypes: (argTypes: ArgTypes) => void;
|
|
27
|
+
declare const addArgsEnhancer: (enhancer: ArgsEnhancer<Renderer>) => void;
|
|
28
|
+
declare const addArgTypesEnhancer: (enhancer: ArgTypesEnhancer<Renderer>) => void;
|
|
29
|
+
declare const addStepRunner: (stepRunner: StepRunner) => void;
|
|
30
|
+
declare const setGlobalRender: (render: (typeof singleton)['facade']['projectAnnotations']['render']) => void;
|
|
31
|
+
declare class ClientApi<TRenderer extends Renderer> {
|
|
32
|
+
facade: StoryStoreFacade<TRenderer>;
|
|
33
|
+
storyStore?: StoryStore<TRenderer>;
|
|
34
|
+
private addons;
|
|
35
|
+
onImportFnChanged?: ({ importFn }: {
|
|
36
|
+
importFn: Store_ModuleImportFn;
|
|
37
|
+
}) => void;
|
|
38
|
+
private lastFileName;
|
|
39
|
+
constructor({ storyStore }?: {
|
|
40
|
+
storyStore?: StoryStore<TRenderer>;
|
|
41
|
+
});
|
|
42
|
+
importFn(path: Path): Promise<Store_ModuleExports>;
|
|
43
|
+
getStoryIndex(): {
|
|
44
|
+
v: number;
|
|
45
|
+
entries: Record<string, _storybook_types.Addon_IndexEntry>;
|
|
46
|
+
};
|
|
47
|
+
addDecorator: (decorator: DecoratorFunction<TRenderer>) => void;
|
|
48
|
+
addParameters: ({ globals, globalTypes, ...parameters }: Parameters & {
|
|
49
|
+
globals?: Globals | undefined;
|
|
50
|
+
globalTypes?: GlobalTypes | undefined;
|
|
51
|
+
}) => void;
|
|
52
|
+
addStepRunner: (stepRunner: StepRunner) => void;
|
|
53
|
+
addLoader: (loader: LoaderFunction<TRenderer>) => void;
|
|
54
|
+
addArgs: (args: Args) => void;
|
|
55
|
+
addArgTypes: (argTypes: ArgTypes) => void;
|
|
56
|
+
addArgsEnhancer: (enhancer: ArgsEnhancer<TRenderer>) => void;
|
|
57
|
+
addArgTypesEnhancer: (enhancer: ArgTypesEnhancer<TRenderer>) => void;
|
|
58
|
+
_addedExports: Record<string, Store_ModuleExports>;
|
|
59
|
+
_loadAddedExports(): void;
|
|
60
|
+
storiesOf: (kind: string, m?: NodeModule) => Addon_StoryApi<TRenderer['storyResult']>;
|
|
61
|
+
raw: () => _storybook_types.Store_BoundStory<TRenderer>[] | undefined;
|
|
62
|
+
get _storyStore(): StoryStore<TRenderer> | undefined;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
export { ClientApi as C, addArgTypes as a, addArgTypesEnhancer as b, addArgs as c, addArgsEnhancer as d, addDecorator as e, addLoader as f, addParameters as g, addStepRunner as h, setGlobalRender as s };
|
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
import * as _storybook_types from '@storybook/types';
|
|
2
|
+
import { Renderer, StoryId, StoryRenderOptions, ViewMode, Store_Story, RenderToCanvas, Store_RenderContext, Addon_IndexEntry, DocsContextProps, Store_StoryIndex, Store_ModuleImportFn, ProjectAnnotations, Store_PromiseLike, Globals, Args, Store_SelectionSpecifier, Store_Selection, Store_StorySpecifier, Store_CSFFile, Store_ModuleExports, Store_ModuleExport, StoryName, StoryContextForLoaders } from '@storybook/types';
|
|
3
|
+
import { Channel } from '@storybook/channels';
|
|
4
|
+
import { S as StoryStore } from './StoryStore-8f9ab1c2.js';
|
|
5
|
+
|
|
6
|
+
type RenderType = 'story' | 'docs';
|
|
7
|
+
/**
|
|
8
|
+
* A "Render" represents the rendering of a single entry to a single location
|
|
9
|
+
*
|
|
10
|
+
* The implemenations of render are used for two key purposes:
|
|
11
|
+
* - Tracking the state of the rendering as it moves between preparing, rendering and tearing down.
|
|
12
|
+
* - Tracking what is rendered to know if a change requires re-rendering or teardown + recreation.
|
|
13
|
+
*/
|
|
14
|
+
interface Render<TRenderer extends Renderer> {
|
|
15
|
+
type: RenderType;
|
|
16
|
+
id: StoryId;
|
|
17
|
+
isPreparing: () => boolean;
|
|
18
|
+
isEqual: (other: Render<TRenderer>) => boolean;
|
|
19
|
+
disableKeyListeners: boolean;
|
|
20
|
+
teardown?: (options: {
|
|
21
|
+
viewModeChanged: boolean;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
torndown: boolean;
|
|
24
|
+
renderToElement: (canvasElement: TRenderer['canvasElement'], renderStoryToElement?: any, options?: StoryRenderOptions) => Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
type RenderPhase = 'preparing' | 'loading' | 'rendering' | 'playing' | 'played' | 'completed' | 'aborted' | 'errored';
|
|
28
|
+
type RenderContextCallbacks<TRenderer extends Renderer> = Pick<Store_RenderContext<TRenderer>, 'showMain' | 'showError' | 'showException'>;
|
|
29
|
+
declare class StoryRender<TRenderer extends Renderer> implements Render<TRenderer> {
|
|
30
|
+
channel: Channel;
|
|
31
|
+
store: StoryStore<TRenderer>;
|
|
32
|
+
private renderToScreen;
|
|
33
|
+
private callbacks;
|
|
34
|
+
id: StoryId;
|
|
35
|
+
viewMode: ViewMode;
|
|
36
|
+
renderOptions: StoryRenderOptions;
|
|
37
|
+
type: RenderType;
|
|
38
|
+
story?: Store_Story<TRenderer>;
|
|
39
|
+
phase?: RenderPhase;
|
|
40
|
+
private abortController?;
|
|
41
|
+
private canvasElement?;
|
|
42
|
+
private notYetRendered;
|
|
43
|
+
disableKeyListeners: boolean;
|
|
44
|
+
private teardownRender;
|
|
45
|
+
torndown: boolean;
|
|
46
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, renderToScreen: RenderToCanvas<TRenderer>, callbacks: RenderContextCallbacks<TRenderer>, id: StoryId, viewMode: ViewMode, renderOptions?: StoryRenderOptions, story?: Store_Story<TRenderer>);
|
|
47
|
+
private runPhase;
|
|
48
|
+
prepare(): Promise<void>;
|
|
49
|
+
isEqual(other: Render<TRenderer>): boolean;
|
|
50
|
+
isPreparing(): boolean;
|
|
51
|
+
isPending(): boolean;
|
|
52
|
+
renderToElement(canvasElement: TRenderer['canvasElement']): Promise<void>;
|
|
53
|
+
private storyContext;
|
|
54
|
+
render({ initial, forceRemount, }?: {
|
|
55
|
+
initial?: boolean;
|
|
56
|
+
forceRemount?: boolean;
|
|
57
|
+
}): Promise<void>;
|
|
58
|
+
rerender(): Promise<void>;
|
|
59
|
+
remount(): Promise<void>;
|
|
60
|
+
cancelRender(): void;
|
|
61
|
+
teardown(): Promise<void>;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* A TemplateDocsRender is a render of a docs entry that is rendered with (an) attached CSF file(s).
|
|
66
|
+
*
|
|
67
|
+
* The expectation is the primary CSF file which is the `importPath` for the entry will
|
|
68
|
+
* define a story which may contain the actual rendered JSX code for the template in the
|
|
69
|
+
* `docs.page` parameter.
|
|
70
|
+
*
|
|
71
|
+
* Use cases:
|
|
72
|
+
* - Docs Page, where there is no parameter, and we fall back to the globally defined template.
|
|
73
|
+
* - *.stories.mdx files, where the MDX compiler produces a CSF file with a `.parameter.docs.page`
|
|
74
|
+
* parameter containing the compiled content of the MDX file.
|
|
75
|
+
*/
|
|
76
|
+
declare class TemplateDocsRender<TRenderer extends Renderer> implements Render<TRenderer> {
|
|
77
|
+
protected channel: Channel;
|
|
78
|
+
protected store: StoryStore<TRenderer>;
|
|
79
|
+
entry: Addon_IndexEntry;
|
|
80
|
+
readonly type: RenderType;
|
|
81
|
+
readonly id: StoryId;
|
|
82
|
+
story?: Store_Story<TRenderer>;
|
|
83
|
+
rerender?: () => Promise<void>;
|
|
84
|
+
teardownRender?: (options: {
|
|
85
|
+
viewModeChanged?: boolean;
|
|
86
|
+
}) => Promise<void>;
|
|
87
|
+
torndown: boolean;
|
|
88
|
+
readonly disableKeyListeners = false;
|
|
89
|
+
preparing: boolean;
|
|
90
|
+
private csfFiles?;
|
|
91
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, entry: Addon_IndexEntry);
|
|
92
|
+
isPreparing(): boolean;
|
|
93
|
+
prepare(): Promise<void>;
|
|
94
|
+
isEqual(other: Render<TRenderer>): boolean;
|
|
95
|
+
renderToElement(canvasElement: TRenderer['canvasElement'], renderStoryToElement: DocsContextProps['renderStoryToElement']): Promise<void>;
|
|
96
|
+
teardown({ viewModeChanged }?: {
|
|
97
|
+
viewModeChanged?: boolean;
|
|
98
|
+
}): Promise<void>;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* A StandaloneDocsRender is a render of a docs entry that doesn't directly come from a CSF file.
|
|
103
|
+
*
|
|
104
|
+
* A standalone render can reference zero or more CSF files that contain stories.
|
|
105
|
+
*
|
|
106
|
+
* Use cases:
|
|
107
|
+
* - *.mdx file that may or may not reference a specific CSF file with `<Meta of={} />`
|
|
108
|
+
*/
|
|
109
|
+
declare class StandaloneDocsRender<TRenderer extends Renderer> implements Render<TRenderer> {
|
|
110
|
+
protected channel: Channel;
|
|
111
|
+
protected store: StoryStore<TRenderer>;
|
|
112
|
+
entry: Addon_IndexEntry;
|
|
113
|
+
readonly type: RenderType;
|
|
114
|
+
readonly id: StoryId;
|
|
115
|
+
private exports?;
|
|
116
|
+
rerender?: () => Promise<void>;
|
|
117
|
+
teardownRender?: (options: {
|
|
118
|
+
viewModeChanged?: boolean;
|
|
119
|
+
}) => Promise<void>;
|
|
120
|
+
torndown: boolean;
|
|
121
|
+
readonly disableKeyListeners = false;
|
|
122
|
+
preparing: boolean;
|
|
123
|
+
private csfFiles?;
|
|
124
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, entry: Addon_IndexEntry);
|
|
125
|
+
isPreparing(): boolean;
|
|
126
|
+
prepare(): Promise<void>;
|
|
127
|
+
isEqual(other: Render<TRenderer>): boolean;
|
|
128
|
+
renderToElement(canvasElement: TRenderer['canvasElement'], renderStoryToElement: DocsContextProps['renderStoryToElement']): Promise<void>;
|
|
129
|
+
teardown({ viewModeChanged }?: {
|
|
130
|
+
viewModeChanged?: boolean;
|
|
131
|
+
}): Promise<void>;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
type MaybePromise<T> = Promise<T> | T;
|
|
135
|
+
declare class Preview<TFramework extends Renderer> {
|
|
136
|
+
protected channel: Channel;
|
|
137
|
+
serverChannel?: Channel;
|
|
138
|
+
storyStore: StoryStore<TFramework>;
|
|
139
|
+
getStoryIndex?: () => Store_StoryIndex;
|
|
140
|
+
importFn?: Store_ModuleImportFn;
|
|
141
|
+
renderToCanvas?: RenderToCanvas<TFramework>;
|
|
142
|
+
storyRenders: StoryRender<TFramework>[];
|
|
143
|
+
previewEntryError?: Error;
|
|
144
|
+
constructor(channel?: Channel);
|
|
145
|
+
initialize({ getStoryIndex, importFn, getProjectAnnotations, }: {
|
|
146
|
+
getStoryIndex?: () => Store_StoryIndex;
|
|
147
|
+
importFn: Store_ModuleImportFn;
|
|
148
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TFramework>>;
|
|
149
|
+
}): Promise<void>;
|
|
150
|
+
setupListeners(): void;
|
|
151
|
+
getProjectAnnotationsOrRenderError(getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TFramework>>): Store_PromiseLike<ProjectAnnotations<TFramework>>;
|
|
152
|
+
initializeWithProjectAnnotations(projectAnnotations: ProjectAnnotations<TFramework>): Promise<void>;
|
|
153
|
+
setInitialGlobals(): Promise<void>;
|
|
154
|
+
emitGlobals(): void;
|
|
155
|
+
getStoryIndexFromServer(): Promise<Store_StoryIndex>;
|
|
156
|
+
initializeWithStoryIndex(storyIndex: Store_StoryIndex): PromiseLike<void>;
|
|
157
|
+
onGetProjectAnnotationsChanged({ getProjectAnnotations, }: {
|
|
158
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TFramework>>;
|
|
159
|
+
}): Promise<void>;
|
|
160
|
+
onStoryIndexChanged(): Promise<void>;
|
|
161
|
+
onStoriesChanged({ importFn, storyIndex, }: {
|
|
162
|
+
importFn?: Store_ModuleImportFn;
|
|
163
|
+
storyIndex?: Store_StoryIndex;
|
|
164
|
+
}): Promise<void>;
|
|
165
|
+
onUpdateGlobals({ globals }: {
|
|
166
|
+
globals: Globals;
|
|
167
|
+
}): Promise<void>;
|
|
168
|
+
onUpdateArgs({ storyId, updatedArgs }: {
|
|
169
|
+
storyId: StoryId;
|
|
170
|
+
updatedArgs: Args;
|
|
171
|
+
}): Promise<void>;
|
|
172
|
+
onResetArgs({ storyId, argNames }: {
|
|
173
|
+
storyId: string;
|
|
174
|
+
argNames?: string[];
|
|
175
|
+
}): Promise<void>;
|
|
176
|
+
onForceReRender(): Promise<void>;
|
|
177
|
+
onForceRemount({ storyId }: {
|
|
178
|
+
storyId: StoryId;
|
|
179
|
+
}): Promise<void>;
|
|
180
|
+
renderStoryToElement(story: Store_Story<TFramework>, element: TFramework['canvasElement'], options: StoryRenderOptions): () => Promise<void>;
|
|
181
|
+
teardownRender(render: StoryRender<TFramework> | TemplateDocsRender<TFramework> | StandaloneDocsRender<TFramework>, { viewModeChanged }?: {
|
|
182
|
+
viewModeChanged?: boolean;
|
|
183
|
+
}): Promise<void>;
|
|
184
|
+
extract(options?: {
|
|
185
|
+
includeDocsOnly: boolean;
|
|
186
|
+
}): Promise<Record<string, _storybook_types.StoryContextForEnhancers<TFramework, Args>>>;
|
|
187
|
+
inlineStoryCallbacks(storyId: StoryId): {
|
|
188
|
+
showMain: () => void;
|
|
189
|
+
showError: (err: {
|
|
190
|
+
title: string;
|
|
191
|
+
description: string;
|
|
192
|
+
}) => void;
|
|
193
|
+
showException: (err: Error) => void;
|
|
194
|
+
};
|
|
195
|
+
renderPreviewEntryError(reason: string, err: Error): void;
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
interface SelectionStore {
|
|
199
|
+
selectionSpecifier: Store_SelectionSpecifier | null;
|
|
200
|
+
selection?: Store_Selection;
|
|
201
|
+
setSelection(selection: Store_Selection): void;
|
|
202
|
+
setQueryParams(queryParams: qs.ParsedQs): void;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
interface View<TStorybookRoot> {
|
|
206
|
+
prepareForStory(story: Store_Story<any>): TStorybookRoot;
|
|
207
|
+
prepareForDocs(): TStorybookRoot;
|
|
208
|
+
showErrorDisplay(err: {
|
|
209
|
+
message?: string;
|
|
210
|
+
stack?: string;
|
|
211
|
+
}): void;
|
|
212
|
+
showNoPreview(): void;
|
|
213
|
+
showPreparingStory(options: {
|
|
214
|
+
immediate: boolean;
|
|
215
|
+
}): void;
|
|
216
|
+
showPreparingDocs(): void;
|
|
217
|
+
showMain(): void;
|
|
218
|
+
showDocs(): void;
|
|
219
|
+
showStory(): void;
|
|
220
|
+
showStoryDuringRender(): void;
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
type PossibleRender<TFramework extends Renderer> = StoryRender<TFramework> | TemplateDocsRender<TFramework> | StandaloneDocsRender<TFramework>;
|
|
224
|
+
declare class PreviewWithSelection<TFramework extends Renderer> extends Preview<TFramework> {
|
|
225
|
+
selectionStore: SelectionStore;
|
|
226
|
+
view: View<TFramework['canvasElement']>;
|
|
227
|
+
currentSelection?: Store_Selection;
|
|
228
|
+
currentRender?: PossibleRender<TFramework>;
|
|
229
|
+
constructor(selectionStore: SelectionStore, view: View<TFramework['canvasElement']>);
|
|
230
|
+
setupListeners(): void;
|
|
231
|
+
initializeWithProjectAnnotations(projectAnnotations: ProjectAnnotations<TFramework>): Promise<void>;
|
|
232
|
+
setInitialGlobals(): Promise<void>;
|
|
233
|
+
initializeWithStoryIndex(storyIndex: Store_StoryIndex): PromiseLike<void>;
|
|
234
|
+
selectSpecifiedStory(): Promise<void>;
|
|
235
|
+
onGetProjectAnnotationsChanged({ getProjectAnnotations, }: {
|
|
236
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TFramework>>;
|
|
237
|
+
}): Promise<void>;
|
|
238
|
+
onStoriesChanged({ importFn, storyIndex, }: {
|
|
239
|
+
importFn?: Store_ModuleImportFn;
|
|
240
|
+
storyIndex?: Store_StoryIndex;
|
|
241
|
+
}): Promise<void>;
|
|
242
|
+
onKeydown(event: KeyboardEvent): void;
|
|
243
|
+
onSetCurrentStory(selection: {
|
|
244
|
+
storyId: StoryId;
|
|
245
|
+
viewMode?: ViewMode;
|
|
246
|
+
}): Promise<void>;
|
|
247
|
+
onUpdateQueryParams(queryParams: any): void;
|
|
248
|
+
onUpdateGlobals({ globals }: {
|
|
249
|
+
globals: Globals;
|
|
250
|
+
}): Promise<void>;
|
|
251
|
+
onUpdateArgs({ storyId, updatedArgs }: {
|
|
252
|
+
storyId: StoryId;
|
|
253
|
+
updatedArgs: Args;
|
|
254
|
+
}): Promise<void>;
|
|
255
|
+
onPreloadStories({ ids }: {
|
|
256
|
+
ids: string[];
|
|
257
|
+
}): Promise<void>;
|
|
258
|
+
renderSelection({ persistedArgs }?: {
|
|
259
|
+
persistedArgs?: Args;
|
|
260
|
+
}): Promise<void>;
|
|
261
|
+
teardownRender(render: PossibleRender<TFramework>, { viewModeChanged }?: {
|
|
262
|
+
viewModeChanged?: boolean;
|
|
263
|
+
}): Promise<void>;
|
|
264
|
+
extract(options?: {
|
|
265
|
+
includeDocsOnly: boolean;
|
|
266
|
+
}): Promise<Record<string, _storybook_types.StoryContextForEnhancers<TFramework, Args>>>;
|
|
267
|
+
mainStoryCallbacks(storyId: StoryId): {
|
|
268
|
+
showMain: () => void;
|
|
269
|
+
showError: (err: {
|
|
270
|
+
title: string;
|
|
271
|
+
description: string;
|
|
272
|
+
}) => void;
|
|
273
|
+
showException: (err: Error) => void;
|
|
274
|
+
};
|
|
275
|
+
inlineStoryCallbacks(storyId: StoryId): {
|
|
276
|
+
showMain: () => void;
|
|
277
|
+
showError: (err: {
|
|
278
|
+
title: string;
|
|
279
|
+
description: string;
|
|
280
|
+
}) => void;
|
|
281
|
+
showException: (err: Error) => void;
|
|
282
|
+
};
|
|
283
|
+
renderPreviewEntryError(reason: string, err: Error): void;
|
|
284
|
+
renderMissingStory(): void;
|
|
285
|
+
renderStoryLoadingException(storySpecifier: Store_StorySpecifier, err: Error): void;
|
|
286
|
+
renderException(storyId: StoryId, error: Error): void;
|
|
287
|
+
renderError(storyId: StoryId, { title, description }: {
|
|
288
|
+
title: string;
|
|
289
|
+
description: string;
|
|
290
|
+
}): void;
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
declare class PreviewWeb<TFramework extends Renderer> extends PreviewWithSelection<TFramework> {
|
|
294
|
+
constructor();
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
declare function simulateDOMContentLoaded(): void;
|
|
298
|
+
declare function simulatePageLoad($container: any): void;
|
|
299
|
+
|
|
300
|
+
declare class DocsContext<TRenderer extends Renderer> implements DocsContextProps<TRenderer> {
|
|
301
|
+
channel: Channel;
|
|
302
|
+
protected store: StoryStore<TRenderer>;
|
|
303
|
+
renderStoryToElement: DocsContextProps['renderStoryToElement'];
|
|
304
|
+
private componentStoriesValue;
|
|
305
|
+
private storyIdToCSFFile;
|
|
306
|
+
private exportToStoryId;
|
|
307
|
+
private nameToStoryId;
|
|
308
|
+
private primaryStory?;
|
|
309
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, renderStoryToElement: DocsContextProps['renderStoryToElement'],
|
|
310
|
+
/** The CSF files known (via the index) to be refererenced by this docs file */
|
|
311
|
+
csfFiles: Store_CSFFile<TRenderer>[], componentStoriesFromAllCsfFiles?: boolean);
|
|
312
|
+
referenceCSFFile(csfFile: Store_CSFFile<TRenderer>, addToComponentStories: boolean): void;
|
|
313
|
+
setMeta(metaExports: Store_ModuleExports): void;
|
|
314
|
+
storyIdByModuleExport(storyExport: Store_ModuleExport, metaExports?: Store_ModuleExports): string;
|
|
315
|
+
storyIdByName: (storyName: StoryName) => string;
|
|
316
|
+
componentStories: () => Store_Story<TRenderer>[];
|
|
317
|
+
storyById: (storyId?: StoryId) => Store_Story<TRenderer>;
|
|
318
|
+
getStoryContext: (story: Store_Story<TRenderer>) => StoryContextForLoaders<TRenderer, _storybook_types.Args>;
|
|
319
|
+
loadStory: (id: StoryId) => Promise<Store_Story<TRenderer>>;
|
|
320
|
+
}
|
|
321
|
+
|
|
322
|
+
export { DocsContext as D, Preview as P, simulateDOMContentLoaded as a, PreviewWeb as b, PreviewWithSelection as c, simulatePageLoad as s };
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import * as _storybook_types from '@storybook/types';
|
|
2
|
+
import { Store_StoryIndex, Store_StorySpecifier, Addon_IndexEntry, StoryId, Path, Args, Store_Story, Globals, GlobalTypes, Renderer, Store_ModuleExports, ComponentTitle, Store_CSFFile, Store_NormalizedStoryAnnotations, Store_NormalizedComponentAnnotations, Store_NormalizedProjectAnnotations, Store_ModuleImportFn, ProjectAnnotations, Store_PromiseLike, StoryContextForLoaders, Store_ExtractOptions, StoryContextForEnhancers, Parameters, Store_StoryIndexV3, API_PreparedStoryIndex, Store_BoundStory } from '@storybook/types';
|
|
3
|
+
import { SynchronousPromise } from 'synchronous-promise';
|
|
4
|
+
import { H as HooksContext } from './hooks-0d0b05c1.js';
|
|
5
|
+
|
|
6
|
+
declare class StoryIndexStore {
|
|
7
|
+
entries: Store_StoryIndex['entries'];
|
|
8
|
+
constructor({ entries }?: Store_StoryIndex);
|
|
9
|
+
entryFromSpecifier(specifier: Store_StorySpecifier): Addon_IndexEntry | undefined;
|
|
10
|
+
storyIdToEntry(storyId: StoryId): Addon_IndexEntry;
|
|
11
|
+
importPathToEntry(importPath: Path): Addon_IndexEntry;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
declare class ArgsStore {
|
|
15
|
+
initialArgsByStoryId: Record<StoryId, Args>;
|
|
16
|
+
argsByStoryId: Record<StoryId, Args>;
|
|
17
|
+
get(storyId: StoryId): Args;
|
|
18
|
+
setInitial(story: Store_Story<any>): void;
|
|
19
|
+
updateFromDelta(story: Store_Story<any>, delta: Args): void;
|
|
20
|
+
updateFromPersisted(story: Store_Story<any>, persisted: Args): void;
|
|
21
|
+
update(storyId: StoryId, argsUpdate: Partial<Args>): void;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
declare class GlobalsStore {
|
|
25
|
+
allowedGlobalNames: Set<string>;
|
|
26
|
+
initialGlobals: Globals;
|
|
27
|
+
globals: Globals;
|
|
28
|
+
constructor({ globals, globalTypes, }: {
|
|
29
|
+
globals?: Globals;
|
|
30
|
+
globalTypes?: GlobalTypes;
|
|
31
|
+
});
|
|
32
|
+
set({ globals, globalTypes }: {
|
|
33
|
+
globals?: Globals;
|
|
34
|
+
globalTypes?: GlobalTypes;
|
|
35
|
+
}): void;
|
|
36
|
+
filterAllowedGlobals(globals: Globals): Globals;
|
|
37
|
+
updateFromPersisted(persisted: Globals): void;
|
|
38
|
+
get(): Globals;
|
|
39
|
+
update(newGlobals: Globals): void;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
declare function processCSFFile<TRenderer extends Renderer>(moduleExports: Store_ModuleExports, importPath: Path, title: ComponentTitle): Store_CSFFile<TRenderer>;
|
|
43
|
+
|
|
44
|
+
declare function prepareStory<TRenderer extends Renderer>(storyAnnotations: Store_NormalizedStoryAnnotations<TRenderer>, componentAnnotations: Store_NormalizedComponentAnnotations<TRenderer>, projectAnnotations: Store_NormalizedProjectAnnotations<TRenderer>): Store_Story<TRenderer>;
|
|
45
|
+
|
|
46
|
+
declare class StoryStore<TRenderer extends Renderer> {
|
|
47
|
+
storyIndex?: StoryIndexStore;
|
|
48
|
+
importFn?: Store_ModuleImportFn;
|
|
49
|
+
projectAnnotations?: Store_NormalizedProjectAnnotations<TRenderer>;
|
|
50
|
+
globals?: GlobalsStore;
|
|
51
|
+
args: ArgsStore;
|
|
52
|
+
hooks: Record<StoryId, HooksContext<TRenderer>>;
|
|
53
|
+
cachedCSFFiles?: Record<Path, Store_CSFFile<TRenderer>>;
|
|
54
|
+
processCSFFileWithCache: typeof processCSFFile;
|
|
55
|
+
prepareStoryWithCache: typeof prepareStory;
|
|
56
|
+
initializationPromise: SynchronousPromise<void>;
|
|
57
|
+
resolveInitializationPromise: () => void;
|
|
58
|
+
constructor();
|
|
59
|
+
setProjectAnnotations(projectAnnotations: ProjectAnnotations<TRenderer>): void;
|
|
60
|
+
initialize({ storyIndex, importFn, cache, }: {
|
|
61
|
+
storyIndex?: Store_StoryIndex;
|
|
62
|
+
importFn: Store_ModuleImportFn;
|
|
63
|
+
cache?: boolean;
|
|
64
|
+
}): Store_PromiseLike<void>;
|
|
65
|
+
onStoriesChanged({ importFn, storyIndex, }: {
|
|
66
|
+
importFn?: Store_ModuleImportFn;
|
|
67
|
+
storyIndex?: Store_StoryIndex;
|
|
68
|
+
}): Promise<void>;
|
|
69
|
+
storyIdToEntry(storyId: StoryId): Promise<Addon_IndexEntry>;
|
|
70
|
+
loadCSFFileByStoryId(storyId: StoryId): Store_PromiseLike<Store_CSFFile<TRenderer>>;
|
|
71
|
+
loadAllCSFFiles(): Store_PromiseLike<StoryStore<TRenderer>['cachedCSFFiles']>;
|
|
72
|
+
cacheAllCSFFiles(): Store_PromiseLike<void>;
|
|
73
|
+
loadStory({ storyId }: {
|
|
74
|
+
storyId: StoryId;
|
|
75
|
+
}): Promise<Store_Story<TRenderer>>;
|
|
76
|
+
storyFromCSFFile({ storyId, csfFile, }: {
|
|
77
|
+
storyId: StoryId;
|
|
78
|
+
csfFile: Store_CSFFile<TRenderer>;
|
|
79
|
+
}): Store_Story<TRenderer>;
|
|
80
|
+
componentStoriesFromCSFFile({ csfFile, }: {
|
|
81
|
+
csfFile: Store_CSFFile<TRenderer>;
|
|
82
|
+
}): Store_Story<TRenderer>[];
|
|
83
|
+
loadEntry(id: StoryId): Promise<{
|
|
84
|
+
entryExports: Store_ModuleExports;
|
|
85
|
+
csfFiles: Store_CSFFile<TRenderer>[];
|
|
86
|
+
}>;
|
|
87
|
+
getStoryContext(story: Store_Story<TRenderer>): Omit<StoryContextForLoaders<TRenderer>, 'viewMode'>;
|
|
88
|
+
cleanupStory(story: Store_Story<TRenderer>): void;
|
|
89
|
+
extract(options?: Store_ExtractOptions): Record<StoryId, StoryContextForEnhancers<TRenderer>>;
|
|
90
|
+
getSetStoriesPayload(): {
|
|
91
|
+
v: number;
|
|
92
|
+
globals: _storybook_types.Globals;
|
|
93
|
+
globalParameters: {};
|
|
94
|
+
kindParameters: Parameters;
|
|
95
|
+
stories: Record<string, StoryContextForEnhancers<TRenderer, _storybook_types.Args>>;
|
|
96
|
+
};
|
|
97
|
+
getStoriesJsonData: () => Store_StoryIndexV3;
|
|
98
|
+
getSetIndexPayload(): API_PreparedStoryIndex;
|
|
99
|
+
raw(): Store_BoundStory<TRenderer>[];
|
|
100
|
+
fromId(storyId: StoryId): Store_BoundStory<TRenderer> | null;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
export { StoryStore as S, processCSFFile as a, prepareStory as p };
|
package/dist/addons.d.ts
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { A as AddonStore, c as MakeDecoratorOptions, M as MakeDecoratorResult, a as addons, m as makeDecorator, b as mockChannel } from './storybook-channel-mock-e42c60b1.js';
|
|
2
|
+
export { E as EventMap, H as HooksContext, L as Listener, k as applyHooks, u as useArgs, a as useCallback, b as useChannel, c as useEffect, d as useGlobals, e as useMemo, f as useParameter, g as useReducer, h as useRef, i as useState, j as useStoryContext } from './hooks-0d0b05c1.js';
|
|
3
|
+
import '@storybook/channels';
|
|
4
|
+
import '@storybook/types';
|
package/dist/addons.js
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
"use strict";var L=Object.create;var p=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var _=Object.getOwnPropertyNames;var M=Object.getPrototypeOf,I=Object.prototype.hasOwnProperty;var U=(r,e)=>{for(var n in e)p(r,n,{get:e[n],enumerable:!0})},C=(r,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let t of _(e))!I.call(r,t)&&t!==n&&p(r,t,{get:()=>e[t],enumerable:!(o=P(e,t))||o.enumerable});return r};var A=(r,e,n)=>(n=r!=null?L(M(r)):{},C(e||!r||!r.__esModule?p(n,"default",{value:r,enumerable:!0}):n,r)),F=r=>C(p({},"__esModule",{value:!0}),r);var re={};U(re,{AddonStore:()=>S,HooksContext:()=>T,addons:()=>d,applyHooks:()=>Y,makeDecorator:()=>ee,mockChannel:()=>g,useArgs:()=>Q,useCallback:()=>f,useChannel:()=>V,useEffect:()=>N,useGlobals:()=>Z,useMemo:()=>W,useParameter:()=>J,useReducer:()=>q,useRef:()=>z,useState:()=>X,useStoryContext:()=>k});module.exports=F(re);var y=A(require("global"));var O=require("@storybook/channels");function g(){let r={setHandler:()=>{},send:()=>{}};return new O.Channel({transport:r})}var S=class{constructor(){this.getChannel=()=>{if(!this.channel){let e=g();return this.setChannel(e),e}return this.channel};this.getServerChannel=()=>{if(!this.serverChannel)throw new Error("Accessing non-existent serverChannel");return this.serverChannel};this.ready=()=>this.promise;this.hasChannel=()=>!!this.channel;this.hasServerChannel=()=>!!this.serverChannel;this.setChannel=e=>{this.channel=e,this.resolve()};this.setServerChannel=e=>{this.serverChannel=e};this.promise=new Promise(e=>{this.resolve=()=>e(this.getChannel())})}},v="__STORYBOOK_ADDONS_PREVIEW";function $(){return y.default[v]||(y.default[v]=new S),y.default[v]}var d=$();var l=A(require("global")),h=require("@storybook/client-logger"),i=require("@storybook/core-events");var T=class{constructor(){this.hookListsMap=void 0;this.mountedDecorators=void 0;this.prevMountedDecorators=void 0;this.currentHooks=void 0;this.nextHookIndex=void 0;this.currentPhase=void 0;this.currentEffects=void 0;this.prevEffects=void 0;this.currentDecoratorName=void 0;this.hasUpdates=void 0;this.currentContext=void 0;this.renderListener=e=>{var n;e===((n=this.currentContext)==null?void 0:n.id)&&(this.triggerEffects(),this.currentContext=null,this.removeRenderListeners())};this.init()}init(){this.hookListsMap=new WeakMap,this.mountedDecorators=new Set,this.prevMountedDecorators=this.mountedDecorators,this.currentHooks=[],this.nextHookIndex=0,this.currentPhase="NONE",this.currentEffects=[],this.prevEffects=[],this.currentDecoratorName=null,this.hasUpdates=!1,this.currentContext=null}clean(){this.prevEffects.forEach(e=>{e.destroy&&e.destroy()}),this.init(),this.removeRenderListeners()}getNextHook(){let e=this.currentHooks[this.nextHookIndex];return this.nextHookIndex+=1,e}triggerEffects(){this.prevEffects.forEach(e=>{!this.currentEffects.includes(e)&&e.destroy&&e.destroy()}),this.currentEffects.forEach(e=>{this.prevEffects.includes(e)||(e.destroy=e.create())}),this.prevEffects=this.currentEffects,this.currentEffects=[]}addRenderListeners(){this.removeRenderListeners(),d.getChannel().on(i.STORY_RENDERED,this.renderListener)}removeRenderListeners(){d.getChannel().removeListener(i.STORY_RENDERED,this.renderListener)}};function b(r){return(...e)=>{let{hooks:n}=typeof e[0]=="function"?e[1]:e[0],o=n.currentPhase,t=n.currentHooks,s=n.nextHookIndex,a=n.currentDecoratorName;n.currentDecoratorName=r.name,n.prevMountedDecorators.has(r)?(n.currentPhase="UPDATE",n.currentHooks=n.hookListsMap.get(r)||[]):(n.currentPhase="MOUNT",n.currentHooks=[],n.hookListsMap.set(r,n.currentHooks),n.prevMountedDecorators.add(r)),n.nextHookIndex=0;let c=l.default.STORYBOOK_HOOKS_CONTEXT;l.default.STORYBOOK_HOOKS_CONTEXT=n;let u=r(...e);if(l.default.STORYBOOK_HOOKS_CONTEXT=c,n.currentPhase==="UPDATE"&&n.getNextHook()!=null)throw new Error("Rendered fewer hooks than expected. This may be caused by an accidental early return statement.");return n.currentPhase=o,n.currentHooks=t,n.nextHookIndex=s,n.currentDecoratorName=a,u}}var R=0,K=25,Y=r=>(e,n)=>{let o=r(b(e),n.map(t=>b(t)));return t=>{let{hooks:s}=t;s.prevMountedDecorators=s.mountedDecorators,s.mountedDecorators=new Set([e,...n]),s.currentContext=t,s.hasUpdates=!1;let a=o(t);for(R=1;s.hasUpdates;)if(s.hasUpdates=!1,s.currentEffects=[],a=o(t),R+=1,R>K)throw new Error("Too many re-renders. Storybook limits the number of renders to prevent an infinite loop.");return s.addRenderListeners(),a}},B=(r,e)=>r.length===e.length&&r.every((n,o)=>n===e[o]),E=()=>new Error("Storybook preview hooks can only be called inside decorators and story functions.");function D(){return l.default.STORYBOOK_HOOKS_CONTEXT||null}function x(){let r=D();if(r==null)throw E();return r}function G(r,e,n){let o=x();if(o.currentPhase==="MOUNT"){n!=null&&!Array.isArray(n)&&h.logger.warn(`${r} received a final argument that is not an array (instead, received ${n}). When specified, the final argument must be an array.`);let t={name:r,deps:n};return o.currentHooks.push(t),e(t),t}if(o.currentPhase==="UPDATE"){let t=o.getNextHook();if(t==null)throw new Error("Rendered more hooks than during the previous render.");return t.name!==r&&h.logger.warn(`Storybook has detected a change in the order of Hooks${o.currentDecoratorName?` called by ${o.currentDecoratorName}`:""}. This will lead to bugs and errors if not fixed.`),n!=null&&t.deps==null&&h.logger.warn(`${r} received a final argument during this render, but not during the previous render. Even though the final argument is optional, its type cannot change between renders.`),n!=null&&t.deps!=null&&n.length!==t.deps.length&&h.logger.warn(`The final argument passed to ${r} changed size between renders. The order and size of this array must remain constant.
|
|
2
|
+
Previous: ${t.deps}
|
|
3
|
+
Incoming: ${n}`),(n==null||t.deps==null||!B(n,t.deps))&&(e(t),t.deps=n),t}throw E()}function m(r,e,n){let{memoizedState:o}=G(r,t=>{t.memoizedState=e()},n);return o}function W(r,e){return m("useMemo",r,e)}function f(r,e){return m("useCallback",()=>r,e)}function H(r,e){return m(r,()=>({current:e}),[])}function z(r){return H("useRef",r)}function j(){let r=D();if(r!=null&&r.currentPhase!=="NONE")r.hasUpdates=!0;else try{d.getChannel().emit(i.FORCE_RE_RENDER)}catch{h.logger.warn("State updates of Storybook preview hooks work only in browser")}}function w(r,e){let n=H(r,typeof e=="function"?e():e),o=t=>{n.current=typeof t=="function"?t(n.current):t,j()};return[n.current,o]}function X(r){return w("useState",r)}function q(r,e,n){let o=n!=null?()=>n(e):e,[t,s]=w("useReducer",o);return[t,c=>s(u=>r(u,c))]}function N(r,e){let n=x(),o=m("useEffect",()=>({create:r}),e);n.currentEffects.includes(o)||n.currentEffects.push(o)}function V(r,e=[]){let n=d.getChannel();return N(()=>(Object.entries(r).forEach(([o,t])=>n.on(o,t)),()=>{Object.entries(r).forEach(([o,t])=>n.removeListener(o,t))}),[...Object.keys(r),...e]),f(n.emit.bind(n),[n])}function k(){let{currentContext:r}=x();if(r==null)throw E();return r}function J(r,e){let{parameters:n}=k();if(r)return n[r]??e}function Q(){let r=d.getChannel(),{id:e,args:n}=k(),o=f(s=>r.emit(i.UPDATE_STORY_ARGS,{storyId:e,updatedArgs:s}),[r,e]),t=f(s=>r.emit(i.RESET_STORY_ARGS,{storyId:e,argNames:s}),[r,e]);return[n,o,t]}function Z(){let r=d.getChannel(),{globals:e}=k(),n=f(o=>r.emit(i.UPDATE_GLOBALS,{globals:o}),[r]);return[e,n]}var ee=({name:r,parameterName:e,wrapper:n,skipIfNoParametersOrOptions:o=!1})=>{let t=s=>(a,c)=>{let u=c.parameters&&c.parameters[e];return u&&u.disable||o&&!s&&!u?a(c):n(a,c,{options:s,parameters:u})};return(...s)=>typeof s[0]=="function"?t()(...s):(...a)=>{if(a.length>1)return s.length>1?t(s)(...a):t(...s)(...a);throw new Error(`Passing stories directly into ${r}() is not allowed,
|
|
4
|
+
instead use addDecorator(${r}) and pass options with the '${e}' parameter`)}};0&&(module.exports={AddonStore,HooksContext,addons,applyHooks,makeDecorator,mockChannel,useArgs,useCallback,useChannel,useEffect,useGlobals,useMemo,useParameter,useReducer,useRef,useState,useStoryContext});
|
package/dist/addons.mjs
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{makeDecorator}from"./chunk-GRRYLBAT.mjs";import{AddonStore,HooksContext,addons,applyHooks,mockChannel,useArgs,useCallback,useChannel,useEffect,useGlobals,useMemo,useParameter,useReducer,useRef,useState,useStoryContext}from"./chunk-QSH26RWA.mjs";export{AddonStore,HooksContext,addons,applyHooks,makeDecorator,mockChannel,useArgs,useCallback,useChannel,useEffect,useGlobals,useMemo,useParameter,useReducer,useRef,useState,useStoryContext};
|