storybook 9.0.0-alpha.1 → 9.0.0-alpha.2
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 +31 -29
- package/assets/browser/favicon.svg +1 -0
- package/assets/browser/nunito-sans-bold-italic.woff2 +0 -0
- package/assets/browser/nunito-sans-bold.woff2 +0 -0
- package/assets/browser/nunito-sans-italic.woff2 +0 -0
- package/assets/browser/nunito-sans-regular.woff2 +0 -0
- package/assets/docs/message-reference.png +0 -0
- package/assets/server/addon.tsconfig.json +6 -0
- package/assets/server/base-preview-body.html +119 -0
- package/assets/server/base-preview-head.html +451 -0
- package/assets/server/template.ejs +87 -0
- package/bin/index.cjs +1 -1
- package/dist/babel/index.cjs +54034 -0
- package/dist/babel/index.d.ts +7488 -0
- package/dist/babel/index.js +54044 -0
- package/dist/bin/index.cjs +124 -0
- package/dist/bin/index.js +118 -0
- package/dist/builder-manager/index.cjs +2167 -0
- package/dist/builder-manager/index.d.ts +19 -0
- package/dist/builder-manager/index.js +2189 -0
- package/dist/channels/index.cjs +1938 -0
- package/dist/channels/index.d.ts +108 -0
- package/dist/channels/index.js +1885 -0
- package/dist/cli/bin/index.cjs +2687 -0
- package/dist/cli/bin/index.d.ts +2 -0
- package/dist/cli/bin/index.js +2707 -0
- package/dist/cli/index.cjs +17327 -0
- package/dist/cli/index.d.ts +209 -0
- package/dist/cli/index.js +17349 -0
- package/dist/client-logger/index.cjs +112 -0
- package/dist/client-logger/index.d.ts +29 -0
- package/dist/client-logger/index.js +70 -0
- package/dist/common/index.cjs +20558 -0
- package/dist/common/index.d.ts +955 -0
- package/dist/common/index.js +20643 -0
- package/dist/components/index.cjs +30056 -0
- package/dist/components/index.d.ts +1423 -0
- package/dist/components/index.js +25416 -0
- package/dist/core-events/index.cjs +167 -0
- package/dist/core-events/index.d.ts +313 -0
- package/dist/core-events/index.js +149 -0
- package/dist/core-server/index.cjs +37872 -0
- package/dist/core-server/index.d.ts +462 -0
- package/dist/core-server/index.js +37966 -0
- package/dist/core-server/presets/common-manager.js +28 -0
- package/dist/core-server/presets/common-override-preset.cjs +4824 -0
- package/dist/core-server/presets/common-override-preset.js +4829 -0
- package/dist/core-server/presets/common-preset.cjs +10228 -0
- package/dist/core-server/presets/common-preset.js +10306 -0
- package/dist/csf/index.cjs +223 -0
- package/dist/csf/index.d.ts +752 -0
- package/dist/csf/index.js +216 -0
- package/dist/csf-tools/index.cjs +1422 -0
- package/dist/csf-tools/index.d.ts +250 -0
- package/dist/csf-tools/index.js +1439 -0
- package/dist/docs-tools/index.cjs +923 -0
- package/dist/docs-tools/index.d.ts +162 -0
- package/dist/docs-tools/index.js +909 -0
- package/dist/index.cjs +17 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +2 -7
- package/dist/instrumenter/index.cjs +3273 -0
- package/dist/instrumenter/index.d.ts +104 -0
- package/dist/instrumenter/index.js +4800 -0
- package/dist/manager/globals-module-info.cjs +666 -0
- package/dist/manager/globals-module-info.d.ts +36 -0
- package/dist/manager/globals-module-info.js +653 -0
- package/dist/manager/globals-runtime.js +41567 -0
- package/dist/manager/globals.cjs +43 -0
- package/dist/manager/globals.d.ts +21 -0
- package/dist/manager/globals.js +30 -0
- package/dist/manager/runtime.js +12043 -0
- package/dist/manager-api/index.cjs +10772 -0
- package/dist/manager-api/index.d.ts +1211 -0
- package/dist/manager-api/index.js +4547 -0
- package/dist/manager-errors.d.ts +65 -0
- package/dist/manager-errors.js +83 -0
- package/dist/node-logger/index.cjs +1642 -0
- package/dist/node-logger/index.d.ts +117 -0
- package/dist/node-logger/index.js +1652 -0
- package/dist/preview/globals.cjs +34 -0
- package/dist/preview/globals.d.ts +12 -0
- package/dist/preview/globals.js +21 -0
- package/dist/preview/runtime.js +7723 -0
- package/dist/preview-api/index.cjs +5658 -0
- package/dist/preview-api/index.d.ts +1356 -0
- package/dist/preview-api/index.js +5665 -0
- package/dist/preview-errors.cjs +486 -0
- package/dist/preview-errors.d.ts +188 -0
- package/dist/preview-errors.js +433 -0
- package/dist/router/index.cjs +3320 -0
- package/dist/router/index.d.ts +385 -0
- package/dist/router/index.js +1849 -0
- package/dist/server-errors.cjs +710 -0
- package/dist/server-errors.d.ts +272 -0
- package/dist/server-errors.js +711 -0
- package/dist/telemetry/index.cjs +3683 -0
- package/dist/telemetry/index.d.ts +112 -0
- package/dist/telemetry/index.js +3720 -0
- package/dist/theming/create.cjs +2422 -0
- package/dist/theming/create.d.ts +50 -0
- package/dist/theming/create.js +990 -0
- package/dist/theming/index.cjs +4832 -0
- package/dist/theming/index.d.ts +11939 -0
- package/dist/theming/index.js +3253 -0
- package/dist/types/index.cjs +27 -0
- package/dist/types/index.d.ts +2541 -0
- package/dist/types/index.js +7 -0
- package/package.json +308 -212
- package/.eslintrc.cjs +0 -31
- package/__mocks__/@aw-web-design/x-default-browser.js +0 -2
- package/core/babel/index.cjs +0 -1
- package/core/babel/index.d.ts +0 -2
- package/core/babel/index.js +0 -1
- package/core/builder-manager/index.cjs +0 -1
- package/core/builder-manager/index.d.ts +0 -2
- package/core/builder-manager/index.js +0 -1
- package/core/channels/index.cjs +0 -1
- package/core/channels/index.d.ts +0 -2
- package/core/channels/index.js +0 -1
- package/core/cli/bin/index.cjs +0 -1
- package/core/cli/bin/index.d.ts +0 -2
- package/core/cli/bin/index.js +0 -1
- package/core/cli/index.cjs +0 -1
- package/core/cli/index.d.ts +0 -2
- package/core/cli/index.js +0 -1
- package/core/client-logger/index.cjs +0 -1
- package/core/client-logger/index.d.ts +0 -2
- package/core/client-logger/index.js +0 -1
- package/core/common/index.cjs +0 -1
- package/core/common/index.d.ts +0 -2
- package/core/common/index.js +0 -1
- package/core/components/index.cjs +0 -1
- package/core/components/index.d.ts +0 -2
- package/core/components/index.js +0 -1
- package/core/core-events/index.cjs +0 -1
- package/core/core-events/index.d.ts +0 -2
- package/core/core-events/index.js +0 -1
- package/core/core-server/index.cjs +0 -1
- package/core/core-server/index.d.ts +0 -2
- package/core/core-server/index.js +0 -1
- package/core/core-server/presets/common-manager.js +0 -1
- package/core/core-server/presets/common-override-preset.cjs +0 -1
- package/core/core-server/presets/common-override-preset.js +0 -1
- package/core/core-server/presets/common-preset.cjs +0 -1
- package/core/core-server/presets/common-preset.js +0 -1
- package/core/csf/index.cjs +0 -1
- package/core/csf/index.d.ts +0 -2
- package/core/csf/index.js +0 -1
- package/core/csf-tools/index.cjs +0 -1
- package/core/csf-tools/index.d.ts +0 -2
- package/core/csf-tools/index.js +0 -1
- package/core/docs-tools/index.cjs +0 -1
- package/core/docs-tools/index.d.ts +0 -2
- package/core/docs-tools/index.js +0 -1
- package/core/index.cjs +0 -1
- package/core/index.d.ts +0 -2
- package/core/index.js +0 -1
- package/core/manager/globals-module-info.cjs +0 -1
- package/core/manager/globals-module-info.d.ts +0 -2
- package/core/manager/globals-module-info.js +0 -1
- package/core/manager/globals-runtime.js +0 -1
- package/core/manager/globals.cjs +0 -1
- package/core/manager/globals.d.ts +0 -2
- package/core/manager/globals.js +0 -1
- package/core/manager-api/index.cjs +0 -1
- package/core/manager-api/index.d.ts +0 -2
- package/core/manager-api/index.js +0 -1
- package/core/manager-errors.d.ts +0 -2
- package/core/manager-errors.js +0 -1
- package/core/node-logger/index.cjs +0 -1
- package/core/node-logger/index.d.ts +0 -2
- package/core/node-logger/index.js +0 -1
- package/core/preview/globals.cjs +0 -1
- package/core/preview/globals.d.ts +0 -2
- package/core/preview/globals.js +0 -1
- package/core/preview/runtime.js +0 -1
- package/core/preview-api/index.cjs +0 -1
- package/core/preview-api/index.d.ts +0 -2
- package/core/preview-api/index.js +0 -1
- package/core/preview-errors.cjs +0 -1
- package/core/preview-errors.d.ts +0 -2
- package/core/preview-errors.js +0 -1
- package/core/router/index.cjs +0 -1
- package/core/router/index.d.ts +0 -2
- package/core/router/index.js +0 -1
- package/core/server-errors.cjs +0 -1
- package/core/server-errors.d.ts +0 -2
- package/core/server-errors.js +0 -1
- package/core/telemetry/index.cjs +0 -1
- package/core/telemetry/index.d.ts +0 -2
- package/core/telemetry/index.js +0 -1
- package/core/theming/create.cjs +0 -1
- package/core/theming/create.d.ts +0 -2
- package/core/theming/create.js +0 -1
- package/core/theming/index.cjs +0 -1
- package/core/theming/index.d.ts +0 -2
- package/core/theming/index.js +0 -1
- package/core/types/index.cjs +0 -1
- package/core/types/index.d.ts +0 -2
- package/core/types/index.js +0 -1
- package/core.cjs +0 -0
- package/core.d.ts +0 -0
- package/core.js +0 -1
- package/dist/chunk-OWLSIX54.js +0 -8
- package/dist/core-path.cjs +0 -1
- package/dist/core-path.d.ts +0 -3
- package/dist/core-path.js +0 -9
- package/dist/proxy.cjs +0 -1
- package/dist/proxy.d.ts +0 -2
- package/dist/proxy.js +0 -9
|
@@ -0,0 +1,1356 @@
|
|
|
1
|
+
import { Channel } from 'storybook/internal/channels';
|
|
2
|
+
import * as storybook_internal_types from 'storybook/internal/types';
|
|
3
|
+
import { ProjectAnnotations, Renderer, Args, StoryContext, DecoratorApplicator, StoryId, Addon_StoryWrapper, PreparedStory, Globals, GlobalTypes, StoryIndex, StoryName, ComponentTitle, IndexEntry, Path, LegacyStoryAnnotationsOrFn, NormalizedComponentAnnotations, NormalizedStoryAnnotations, ModuleExports, CSFFile, NormalizedProjectAnnotations, ModuleExport, PreparedMeta, StepRunner, ComposedStoryFn, Store_CSFExports, ComposeStoryFn, ComponentAnnotations, NamedOrDefaultProjectAnnotations, ModuleImportFn, Parameters, StoryContextForEnhancers, StoryIndexV3, BoundStory, StrictArgTypes, ArgTypesEnhancer, LegacyStoryFn, DecoratorFunction, PartialStoryFn, StoryContextUpdate, NormalizedStoriesSpecifier, Addon_StorySortParameterV7, DocsContextProps, ResolvedModuleExportType, ResolvedModuleExportFromType, StoryRenderOptions, RenderContextCallbacks, RenderToCanvas, ViewMode } from 'storybook/internal/types';
|
|
4
|
+
import * as storybook_internal_csf from 'storybook/internal/csf';
|
|
5
|
+
import { CleanupCallback, Canvas } from 'storybook/internal/csf';
|
|
6
|
+
import { RequestData, ArgTypesRequestPayload } from 'storybook/internal/core-events';
|
|
7
|
+
|
|
8
|
+
declare class AddonStore {
|
|
9
|
+
constructor();
|
|
10
|
+
private channel;
|
|
11
|
+
private promise;
|
|
12
|
+
private resolve;
|
|
13
|
+
getChannel: () => Channel;
|
|
14
|
+
ready: () => Promise<Channel>;
|
|
15
|
+
hasChannel: () => boolean;
|
|
16
|
+
setChannel: (channel: Channel) => void;
|
|
17
|
+
}
|
|
18
|
+
declare const addons: AddonStore;
|
|
19
|
+
|
|
20
|
+
declare function definePreview(config: ProjectAnnotations<Renderer>): ProjectAnnotations<Renderer>;
|
|
21
|
+
|
|
22
|
+
interface Hook {
|
|
23
|
+
name: string;
|
|
24
|
+
memoizedState?: any;
|
|
25
|
+
deps?: any[] | undefined;
|
|
26
|
+
}
|
|
27
|
+
interface Effect {
|
|
28
|
+
create: () => (() => void) | void;
|
|
29
|
+
destroy?: (() => void) | void;
|
|
30
|
+
}
|
|
31
|
+
type AbstractFunction = (...args: any[]) => any;
|
|
32
|
+
declare class HooksContext<TRenderer extends Renderer, TArgs extends Args = Args> {
|
|
33
|
+
hookListsMap: WeakMap<AbstractFunction, Hook[]>;
|
|
34
|
+
mountedDecorators: Set<AbstractFunction>;
|
|
35
|
+
prevMountedDecorators: Set<AbstractFunction>;
|
|
36
|
+
currentHooks: Hook[];
|
|
37
|
+
nextHookIndex: number;
|
|
38
|
+
currentPhase: 'MOUNT' | 'UPDATE' | 'NONE';
|
|
39
|
+
currentEffects: Effect[];
|
|
40
|
+
prevEffects: Effect[];
|
|
41
|
+
currentDecoratorName: string | null;
|
|
42
|
+
hasUpdates: boolean;
|
|
43
|
+
currentContext: StoryContext<TRenderer, TArgs> | null;
|
|
44
|
+
renderListener: (storyId: StoryId) => void;
|
|
45
|
+
constructor();
|
|
46
|
+
init(): void;
|
|
47
|
+
clean(): void;
|
|
48
|
+
getNextHook(): Hook;
|
|
49
|
+
triggerEffects(): void;
|
|
50
|
+
addRenderListeners(): void;
|
|
51
|
+
removeRenderListeners(): void;
|
|
52
|
+
}
|
|
53
|
+
declare const applyHooks: <TRenderer extends Renderer>(applyDecorators: DecoratorApplicator<TRenderer>) => DecoratorApplicator<TRenderer>;
|
|
54
|
+
/**
|
|
55
|
+
* Returns a memoized value.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
*
|
|
59
|
+
* ```ts
|
|
60
|
+
* const memoizedValue = useMemo(() => {
|
|
61
|
+
* return doExpensiveCalculation(a, b);
|
|
62
|
+
* }, [a, b]);
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @template T The type of the memoized value.
|
|
66
|
+
* @param {() => T} nextCreate A function that returns the memoized value.
|
|
67
|
+
* @param {any[]} [deps] An optional array of dependencies. If any of the dependencies change, the
|
|
68
|
+
* memoized value will be recomputed.
|
|
69
|
+
* @returns {T} The memoized value.
|
|
70
|
+
*/
|
|
71
|
+
declare function useMemo<T>(nextCreate: () => T, deps?: any[]): T;
|
|
72
|
+
/**
|
|
73
|
+
* Returns a memoized callback.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
*
|
|
77
|
+
* ```ts
|
|
78
|
+
* const memoizedCallback = useCallback(() => {
|
|
79
|
+
* doSomething(a, b);
|
|
80
|
+
* }, [a, b]);
|
|
81
|
+
* ```
|
|
82
|
+
*
|
|
83
|
+
* @template T The type of the callback function.
|
|
84
|
+
* @param {T} callback The callback function to memoize.
|
|
85
|
+
* @param {any[]} [deps] An optional array of dependencies. If any of the dependencies change, the
|
|
86
|
+
* memoized callback will be recomputed.
|
|
87
|
+
* @returns {T} The memoized callback.
|
|
88
|
+
*/
|
|
89
|
+
declare function useCallback<T>(callback: T, deps?: any[]): T;
|
|
90
|
+
/**
|
|
91
|
+
* Returns a mutable ref object.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
*
|
|
95
|
+
* ```ts
|
|
96
|
+
* const ref = useRef(0);
|
|
97
|
+
* ref.current = 1;
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @template T The type of the ref object.
|
|
101
|
+
* @param {T} initialValue The initial value of the ref object.
|
|
102
|
+
* @returns {{ current: T }} The mutable ref object.
|
|
103
|
+
*/
|
|
104
|
+
declare function useRef<T>(initialValue: T): {
|
|
105
|
+
current: T;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* Returns a stateful value and a function to update it.
|
|
109
|
+
*
|
|
110
|
+
* @example
|
|
111
|
+
*
|
|
112
|
+
* ```ts
|
|
113
|
+
* const [count, setCount] = useState(0);
|
|
114
|
+
* setCount(count + 1);
|
|
115
|
+
* ```
|
|
116
|
+
*
|
|
117
|
+
* @template S The type of the state.
|
|
118
|
+
* @param {(() => S) | S} initialState The initial state value or a function that returns the
|
|
119
|
+
* initial state value.
|
|
120
|
+
* @returns {[S, (update: ((prevState: S) => S) | S) => void]} An array containing the current state
|
|
121
|
+
* value and a function to update it.
|
|
122
|
+
*/
|
|
123
|
+
declare function useState<S>(initialState: (() => S) | S): [S, (update: ((prevState: S) => S) | S) => void];
|
|
124
|
+
/**
|
|
125
|
+
* Given a file name, creates an object with utilities to manage a log file. It creates a temporary
|
|
126
|
+
* log file which you can manage with the returned functions. You can then decide whether to move
|
|
127
|
+
* the log file to the users project, or remove it.
|
|
128
|
+
*
|
|
129
|
+
* @example
|
|
130
|
+
*
|
|
131
|
+
* ```tsx
|
|
132
|
+
* const initialState = { count: 0 };
|
|
133
|
+
*
|
|
134
|
+
* function reducer(state, action) {
|
|
135
|
+
* switch (action.type) {
|
|
136
|
+
* case 'increment':
|
|
137
|
+
* return { count: state.count + 1 };
|
|
138
|
+
* case 'decrement':
|
|
139
|
+
* return { count: state.count - 1 };
|
|
140
|
+
* default:
|
|
141
|
+
* throw new Error();
|
|
142
|
+
* }
|
|
143
|
+
* }
|
|
144
|
+
* }
|
|
145
|
+
* function Counter() {
|
|
146
|
+
* const [state, dispatch] = useReducer(reducer, initialState);
|
|
147
|
+
* return (
|
|
148
|
+
* <>
|
|
149
|
+
* Count: {state.count}
|
|
150
|
+
* <button onClick={() => dispatch({ type: 'increment' })}>+</button>
|
|
151
|
+
* <button onClick={() => dispatch({ type: 'decrement' })}>-</button>
|
|
152
|
+
* </>
|
|
153
|
+
* );
|
|
154
|
+
* }
|
|
155
|
+
* ```
|
|
156
|
+
*/
|
|
157
|
+
declare function useReducer<S, A>(reducer: (state: S, action: A) => S, initialState: S): [S, (action: A) => void];
|
|
158
|
+
declare function useReducer<S, I, A>(reducer: (state: S, action: A) => S, initialArg: I, init: (initialArg: I) => S): [S, (action: A) => void];
|
|
159
|
+
/**
|
|
160
|
+
* Triggers a side effect, see https://reactjs.org/docs/hooks-reference.html#usestate Effects are
|
|
161
|
+
* triggered synchronously after rendering the story
|
|
162
|
+
*
|
|
163
|
+
* @example
|
|
164
|
+
*
|
|
165
|
+
* ```ts
|
|
166
|
+
* useEffect(() => {
|
|
167
|
+
* // Do something after rendering the story
|
|
168
|
+
* return () => {
|
|
169
|
+
* // Do something when the component unmounts or the effect is re-run
|
|
170
|
+
* };
|
|
171
|
+
* }, [dependency1, dependency2]);
|
|
172
|
+
* ```
|
|
173
|
+
*
|
|
174
|
+
* @param {() => (() => void) | void} create A function that creates the effect. It should return a
|
|
175
|
+
* cleanup function, or nothing.
|
|
176
|
+
* @param {any[]} [deps] An optional array of dependencies. If any of the dependencies change, the
|
|
177
|
+
* effect will be re-run.
|
|
178
|
+
* @returns {void}
|
|
179
|
+
*/
|
|
180
|
+
declare function useEffect(create: () => (() => void) | void, deps?: any[]): void;
|
|
181
|
+
interface Listener$1 {
|
|
182
|
+
(...args: any[]): void;
|
|
183
|
+
}
|
|
184
|
+
interface EventMap {
|
|
185
|
+
[eventId: string]: Listener$1;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Subscribes to events emitted by the Storybook channel and returns a function to emit events.
|
|
189
|
+
*
|
|
190
|
+
* @example
|
|
191
|
+
*
|
|
192
|
+
* ```ts
|
|
193
|
+
* // Subscribe to an event and emit it
|
|
194
|
+
* const emit = useChannel({ 'my-event': (arg1, arg2) => console.log(arg1, arg2) });
|
|
195
|
+
* emit('my-event', 'Hello', 'world!');
|
|
196
|
+
* ```
|
|
197
|
+
*
|
|
198
|
+
* @param {EventMap} eventMap A map of event listeners to subscribe to.
|
|
199
|
+
* @param {any[]} [deps=[]] An optional array of dependencies. If any of the dependencies change,
|
|
200
|
+
* the event listeners will be re-subscribed. Default is `[]`
|
|
201
|
+
* @returns {(...args: any[]) => void} A function to emit events to the Storybook channel.
|
|
202
|
+
*/
|
|
203
|
+
declare function useChannel(eventMap: EventMap, deps?: any[]): (eventName: string, ...args: any) => void;
|
|
204
|
+
/**
|
|
205
|
+
* Returns the current story context, including the story's ID, parameters, and other metadata.
|
|
206
|
+
*
|
|
207
|
+
* @example
|
|
208
|
+
*
|
|
209
|
+
* ```ts
|
|
210
|
+
* const { id, parameters } = useStoryContext();
|
|
211
|
+
* console.log(`Current story ID: ${id}`);
|
|
212
|
+
* console.log(`Current story parameters: ${JSON.stringify(parameters)}`);
|
|
213
|
+
* ```
|
|
214
|
+
*
|
|
215
|
+
* @template TRenderer The type of the story's renderer.
|
|
216
|
+
* @template TArgs The type of the story's args.
|
|
217
|
+
* @returns {StoryContext<TRenderer>} The current story context.
|
|
218
|
+
*/
|
|
219
|
+
declare function useStoryContext<TRenderer extends Renderer, TArgs extends Args = Args>(): StoryContext<TRenderer>;
|
|
220
|
+
/**
|
|
221
|
+
* Returns the value of a specific parameter for the current story, or a default value if the
|
|
222
|
+
* parameter is not set.
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
*
|
|
226
|
+
* ```ts
|
|
227
|
+
* // Retrieve the value of a parameter named "myParam"
|
|
228
|
+
* const myParamValue = useParameter<string>('myParam', 'default value');
|
|
229
|
+
* console.log(`The value of myParam is: ${myParamValue}`);
|
|
230
|
+
* ```
|
|
231
|
+
*
|
|
232
|
+
* @template S The type of the parameter value.
|
|
233
|
+
* @param {string} parameterKey The key of the parameter to retrieve.
|
|
234
|
+
* @param {S} [defaultValue] An optional default value to return if the parameter is not set.
|
|
235
|
+
* @returns {S | undefined} The value of the parameter, or the default value if the parameter is not
|
|
236
|
+
* set.
|
|
237
|
+
*/
|
|
238
|
+
declare function useParameter<S>(parameterKey: string, defaultValue?: S): S | undefined;
|
|
239
|
+
/**
|
|
240
|
+
* Returns the current args for the story, and functions to update and reset them.
|
|
241
|
+
*
|
|
242
|
+
* @example
|
|
243
|
+
*
|
|
244
|
+
* ```ts
|
|
245
|
+
* const [args, updateArgs, resetArgs] = useArgs<{ name: string; age: number }>();
|
|
246
|
+
* console.log(`Current args: ${JSON.stringify(args)}`);
|
|
247
|
+
* updateArgs({ name: 'John' });
|
|
248
|
+
* resetArgs(['name']);
|
|
249
|
+
* ```
|
|
250
|
+
*
|
|
251
|
+
* @template TArgs The type of the story's args.
|
|
252
|
+
* @returns {[TArgs, (newArgs: Partial<TArgs>) => void, (argNames?: (keyof TArgs)[]) => void]} An
|
|
253
|
+
* array containing the current args, a function to update them, and a function to reset them.
|
|
254
|
+
*/
|
|
255
|
+
declare function useArgs<TArgs extends Args = Args>(): [
|
|
256
|
+
TArgs,
|
|
257
|
+
(newArgs: Partial<TArgs>) => void,
|
|
258
|
+
(argNames?: (keyof TArgs)[]) => void
|
|
259
|
+
];
|
|
260
|
+
/**
|
|
261
|
+
* Returns the current global args for the story, and a function to update them.
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
*
|
|
265
|
+
* ```ts
|
|
266
|
+
* const [globals, updateGlobals] = useGlobals();
|
|
267
|
+
* console.log(`Current globals: ${JSON.stringify(globals)}`);
|
|
268
|
+
* updateGlobals({ theme: 'dark' });
|
|
269
|
+
* ```
|
|
270
|
+
*
|
|
271
|
+
* @returns {[Args, (newGlobals: Args) => void]} An array containing the current global args, and a
|
|
272
|
+
* function to update them.
|
|
273
|
+
*/
|
|
274
|
+
declare function useGlobals(): [Args, (newGlobals: Args) => void];
|
|
275
|
+
|
|
276
|
+
type MakeDecoratorResult = (...args: any) => any;
|
|
277
|
+
interface MakeDecoratorOptions {
|
|
278
|
+
name: string;
|
|
279
|
+
parameterName: string;
|
|
280
|
+
skipIfNoParametersOrOptions?: boolean;
|
|
281
|
+
wrapper: Addon_StoryWrapper;
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Creates a Storybook decorator function that can be used to wrap stories with additional
|
|
285
|
+
* functionality.
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
*
|
|
289
|
+
* ```jsx
|
|
290
|
+
* const myDecorator = makeDecorator({
|
|
291
|
+
* name: 'My Decorator',
|
|
292
|
+
* parameterName: 'myDecorator',
|
|
293
|
+
* wrapper: (storyFn, context, { options }) => {
|
|
294
|
+
* const { myOption } = options;
|
|
295
|
+
* <div style={{ backgroundColor: myOption }}>{storyFn()}</div>;
|
|
296
|
+
* },
|
|
297
|
+
* });
|
|
298
|
+
*
|
|
299
|
+
* export const decorators = [myDecorator];
|
|
300
|
+
* ```
|
|
301
|
+
*
|
|
302
|
+
* @param {MakeDecoratorOptions} options - The options for the decorator.
|
|
303
|
+
* @param {string} options.name - The name of the decorator.
|
|
304
|
+
* @param {string} options.parameterName - The name of the parameter that will be used to pass
|
|
305
|
+
* options to the decorator.
|
|
306
|
+
* @param {Addon_StoryWrapper} options.wrapper - The function that will be used to wrap the story.
|
|
307
|
+
* @param {boolean} [options.skipIfNoParametersOrOptions=false] - Whether to skip the decorator if
|
|
308
|
+
* no options or parameters are provided. Default is `false`
|
|
309
|
+
* @returns {MakeDecoratorResult} A function that can be used as a Storybook decorator.
|
|
310
|
+
*/
|
|
311
|
+
declare const makeDecorator: ({ name, parameterName, wrapper, skipIfNoParametersOrOptions, }: MakeDecoratorOptions) => MakeDecoratorResult;
|
|
312
|
+
|
|
313
|
+
declare function mockChannel(): Channel;
|
|
314
|
+
|
|
315
|
+
type EnvironmentType = (typeof UniversalStore.Environment)[keyof typeof UniversalStore.Environment];
|
|
316
|
+
type StatusType = (typeof UniversalStore.Status)[keyof typeof UniversalStore.Status];
|
|
317
|
+
type StateUpdater<TState> = (prevState: TState) => TState;
|
|
318
|
+
type Actor = {
|
|
319
|
+
id: string;
|
|
320
|
+
type: (typeof UniversalStore.ActorType)[keyof typeof UniversalStore.ActorType];
|
|
321
|
+
environment: EnvironmentType;
|
|
322
|
+
};
|
|
323
|
+
type EventInfo = {
|
|
324
|
+
actor: Actor;
|
|
325
|
+
forwardingActor?: Actor;
|
|
326
|
+
};
|
|
327
|
+
type Listener<TEvent> = (event: TEvent, eventInfo: EventInfo) => void;
|
|
328
|
+
type BaseEvent = {
|
|
329
|
+
type: string;
|
|
330
|
+
payload?: any;
|
|
331
|
+
};
|
|
332
|
+
interface SetStateEvent<TState> extends BaseEvent {
|
|
333
|
+
type: typeof UniversalStore.InternalEventType.SET_STATE;
|
|
334
|
+
payload: {
|
|
335
|
+
state: TState;
|
|
336
|
+
previousState: TState;
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
interface ExistingStateRequestEvent extends BaseEvent {
|
|
340
|
+
type: typeof UniversalStore.InternalEventType.EXISTING_STATE_REQUEST;
|
|
341
|
+
payload: never;
|
|
342
|
+
}
|
|
343
|
+
interface ExistingStateResponseEvent<TState> extends BaseEvent {
|
|
344
|
+
type: typeof UniversalStore.InternalEventType.EXISTING_STATE_RESPONSE;
|
|
345
|
+
payload: TState;
|
|
346
|
+
}
|
|
347
|
+
interface LeaderCreatedEvent extends BaseEvent {
|
|
348
|
+
type: typeof UniversalStore.InternalEventType.LEADER_CREATED;
|
|
349
|
+
payload: never;
|
|
350
|
+
}
|
|
351
|
+
interface FollowerCreatedEvent extends BaseEvent {
|
|
352
|
+
type: typeof UniversalStore.InternalEventType.FOLLOWER_CREATED;
|
|
353
|
+
payload: never;
|
|
354
|
+
}
|
|
355
|
+
type InternalEvent<TState> = SetStateEvent<TState> | ExistingStateRequestEvent | ExistingStateResponseEvent<TState> | FollowerCreatedEvent | LeaderCreatedEvent;
|
|
356
|
+
type Event<TState, TEvent extends BaseEvent> = TEvent | InternalEvent<TState>;
|
|
357
|
+
type ChannelLike = Pick<Channel, 'on' | 'off' | 'emit'>;
|
|
358
|
+
type StoreOptions<TState> = {
|
|
359
|
+
id: string;
|
|
360
|
+
leader?: boolean;
|
|
361
|
+
initialState?: TState;
|
|
362
|
+
debug?: boolean;
|
|
363
|
+
};
|
|
364
|
+
type EnvironmentOverrides = {
|
|
365
|
+
channel: ChannelLike;
|
|
366
|
+
environment: EnvironmentType;
|
|
367
|
+
};
|
|
368
|
+
|
|
369
|
+
/**
|
|
370
|
+
* A universal store implementation that synchronizes state across different environments using a
|
|
371
|
+
* channel-based communication.
|
|
372
|
+
*
|
|
373
|
+
* The store follows a leader-follower pattern where:
|
|
374
|
+
*
|
|
375
|
+
* - Leader: The main store instance that owns and manages the state
|
|
376
|
+
* - Follower: Store instances that mirror the leader's state
|
|
377
|
+
*
|
|
378
|
+
* Features:
|
|
379
|
+
*
|
|
380
|
+
* - State synchronization across environments
|
|
381
|
+
* - Event-based communication
|
|
382
|
+
* - Type-safe state and custom events
|
|
383
|
+
* - Subscription system for state changes and custom events
|
|
384
|
+
*
|
|
385
|
+
* @remarks
|
|
386
|
+
* - The store must be created using the static `create()` method, not the constructor
|
|
387
|
+
* - Follower stores will automatically sync with their leader's state. If they have initial state, it
|
|
388
|
+
* will be replaced immediately when it has synced with the leader.
|
|
389
|
+
*
|
|
390
|
+
* @example
|
|
391
|
+
*
|
|
392
|
+
* ```typescript
|
|
393
|
+
* interface MyState {
|
|
394
|
+
* count: number;
|
|
395
|
+
* }
|
|
396
|
+
* interface MyCustomEvent {
|
|
397
|
+
* type: 'INCREMENT';
|
|
398
|
+
* payload: number;
|
|
399
|
+
* }
|
|
400
|
+
*
|
|
401
|
+
* // Create a leader store
|
|
402
|
+
* const leaderStore = UniversalStore.create<MyState, MyCustomEvent>({
|
|
403
|
+
* id: 'my-store',
|
|
404
|
+
* leader: true,
|
|
405
|
+
* initialState: { count: 0 },
|
|
406
|
+
* });
|
|
407
|
+
*
|
|
408
|
+
* // Create a follower store
|
|
409
|
+
* const followerStore = UniversalStore.create<MyState, MyCustomEvent>({
|
|
410
|
+
* id: 'my-store',
|
|
411
|
+
* leader: false,
|
|
412
|
+
* });
|
|
413
|
+
* ```
|
|
414
|
+
*
|
|
415
|
+
* @template State - The type of state managed by the store
|
|
416
|
+
* @template CustomEvent - Custom events that can be sent through the store. Must have a `type`
|
|
417
|
+
* string and optional `payload`
|
|
418
|
+
* @throws {Error} If constructed directly instead of using `create()`
|
|
419
|
+
* @throws {Error} If created without setting a channel first
|
|
420
|
+
* @throws {Error} If a follower is created with initial state
|
|
421
|
+
* @throws {Error} If a follower cannot find its leader within 1 second
|
|
422
|
+
*/
|
|
423
|
+
declare class UniversalStore<State, CustomEvent extends {
|
|
424
|
+
type: string;
|
|
425
|
+
payload?: any;
|
|
426
|
+
} = {
|
|
427
|
+
type: string;
|
|
428
|
+
payload?: any;
|
|
429
|
+
}> {
|
|
430
|
+
/**
|
|
431
|
+
* Defines the possible actor types in the store system
|
|
432
|
+
*
|
|
433
|
+
* @readonly
|
|
434
|
+
*/
|
|
435
|
+
static readonly ActorType: {
|
|
436
|
+
readonly LEADER: "LEADER";
|
|
437
|
+
readonly FOLLOWER: "FOLLOWER";
|
|
438
|
+
};
|
|
439
|
+
/**
|
|
440
|
+
* Defines the possible environments the store can run in
|
|
441
|
+
*
|
|
442
|
+
* @readonly
|
|
443
|
+
*/
|
|
444
|
+
static readonly Environment: {
|
|
445
|
+
readonly SERVER: "SERVER";
|
|
446
|
+
readonly MANAGER: "MANAGER";
|
|
447
|
+
readonly PREVIEW: "PREVIEW";
|
|
448
|
+
readonly UNKNOWN: "UNKNOWN";
|
|
449
|
+
readonly MOCK: "MOCK";
|
|
450
|
+
};
|
|
451
|
+
/**
|
|
452
|
+
* Internal event types used for store synchronization
|
|
453
|
+
*
|
|
454
|
+
* @readonly
|
|
455
|
+
*/
|
|
456
|
+
static readonly InternalEventType: {
|
|
457
|
+
readonly EXISTING_STATE_REQUEST: "__EXISTING_STATE_REQUEST";
|
|
458
|
+
readonly EXISTING_STATE_RESPONSE: "__EXISTING_STATE_RESPONSE";
|
|
459
|
+
readonly SET_STATE: "__SET_STATE";
|
|
460
|
+
readonly LEADER_CREATED: "__LEADER_CREATED";
|
|
461
|
+
readonly FOLLOWER_CREATED: "__FOLLOWER_CREATED";
|
|
462
|
+
};
|
|
463
|
+
static readonly Status: {
|
|
464
|
+
readonly UNPREPARED: "UNPREPARED";
|
|
465
|
+
readonly SYNCING: "SYNCING";
|
|
466
|
+
readonly READY: "READY";
|
|
467
|
+
readonly ERROR: "ERROR";
|
|
468
|
+
};
|
|
469
|
+
protected static isInternalConstructing: boolean;
|
|
470
|
+
/**
|
|
471
|
+
* The preparation construct is used to keep track of all store's preparation state the promise is
|
|
472
|
+
* resolved when the store is prepared with the static __prepare() method which will also change
|
|
473
|
+
* the state from PENDING to RESOLVED
|
|
474
|
+
*/
|
|
475
|
+
private static preparation;
|
|
476
|
+
private static setupPreparationPromise;
|
|
477
|
+
/** Enable debug logs for this store */
|
|
478
|
+
debugging: boolean;
|
|
479
|
+
/** The actor object representing the store instance with a unique ID and a type */
|
|
480
|
+
get actor(): Actor;
|
|
481
|
+
/**
|
|
482
|
+
* The current state of the store, that signals both if the store is prepared by Storybook and
|
|
483
|
+
* also - in the case of a follower - if the state has been synced with the leader's state.
|
|
484
|
+
*/
|
|
485
|
+
get status(): StatusType;
|
|
486
|
+
/**
|
|
487
|
+
* A promise that resolves when the store is fully ready. A leader will be ready when the store
|
|
488
|
+
* has been prepared by Storybook, which is almost instantly.
|
|
489
|
+
*
|
|
490
|
+
* A follower will be ready when the state has been synced with the leader's state, within a few
|
|
491
|
+
* hundred milliseconds.
|
|
492
|
+
*/
|
|
493
|
+
untilReady(): Promise<[{
|
|
494
|
+
channel: ChannelLike;
|
|
495
|
+
environment: EnvironmentType;
|
|
496
|
+
}, void | undefined]>;
|
|
497
|
+
/**
|
|
498
|
+
* The syncing construct is used to keep track of if the instance's state has been synced with the
|
|
499
|
+
* other instances. A leader will immediately have the promise resolved. A follower will initially
|
|
500
|
+
* be in a PENDING state, and resolve the the leader has sent the existing state, or reject if no
|
|
501
|
+
* leader has responded before the timeout.
|
|
502
|
+
*/
|
|
503
|
+
private syncing?;
|
|
504
|
+
private channelEventName;
|
|
505
|
+
private state;
|
|
506
|
+
private channel?;
|
|
507
|
+
private environment?;
|
|
508
|
+
private listeners;
|
|
509
|
+
private id;
|
|
510
|
+
private actorId;
|
|
511
|
+
private actorType;
|
|
512
|
+
protected constructor(options: StoreOptions<State>, environmentOverrides?: EnvironmentOverrides);
|
|
513
|
+
/** Creates a new instance of UniversalStore */
|
|
514
|
+
static create<State = any, CustomEvent extends {
|
|
515
|
+
type: string;
|
|
516
|
+
payload?: any;
|
|
517
|
+
} = {
|
|
518
|
+
type: string;
|
|
519
|
+
payload?: any;
|
|
520
|
+
}>(options: StoreOptions<State>): UniversalStore<State, CustomEvent>;
|
|
521
|
+
/** Gets the current state */
|
|
522
|
+
getState: () => State;
|
|
523
|
+
/**
|
|
524
|
+
* Updates the store's state
|
|
525
|
+
*
|
|
526
|
+
* Either a new state or a state updater function can be passed to the method.
|
|
527
|
+
*/
|
|
528
|
+
setState(updater: State | StateUpdater<State>): void;
|
|
529
|
+
/**
|
|
530
|
+
* Subscribes to store events
|
|
531
|
+
*
|
|
532
|
+
* @returns A function to unsubscribe
|
|
533
|
+
*/
|
|
534
|
+
subscribe: {
|
|
535
|
+
(listener: Listener<Event<State, CustomEvent>>): () => void;
|
|
536
|
+
<EventType extends Event<State, CustomEvent>['type']>(eventType: EventType, listener: Listener<Extract<Event<State, CustomEvent>, {
|
|
537
|
+
type: EventType;
|
|
538
|
+
}>>): () => void;
|
|
539
|
+
};
|
|
540
|
+
/**
|
|
541
|
+
* Subscribes to state changes
|
|
542
|
+
*
|
|
543
|
+
* @returns Unsubscribe function
|
|
544
|
+
*/
|
|
545
|
+
onStateChange(listener: (state: State, previousState: State, eventInfo: EventInfo) => void): () => void;
|
|
546
|
+
/** Sends a custom event to the other stores */
|
|
547
|
+
send: (event: CustomEvent) => void;
|
|
548
|
+
private emitToChannel;
|
|
549
|
+
private prepareThis;
|
|
550
|
+
private emitToListeners;
|
|
551
|
+
private handleChannelEvents;
|
|
552
|
+
private debug;
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
/**
|
|
556
|
+
* A hook to use a UniversalStore in a rendered preview. This hook will react to changes in the
|
|
557
|
+
* store state and re-render when the store changes.
|
|
558
|
+
*
|
|
559
|
+
* @param universalStore The UniversalStore instance to use.
|
|
560
|
+
* @param selector An optional selector function to select a subset of the store state.
|
|
561
|
+
* @remark This hook is intended for use in the preview. For use in the manager UI, import from
|
|
562
|
+
* `storybook/internal/manager-api` instead.
|
|
563
|
+
*/
|
|
564
|
+
declare const useUniversalStore: {
|
|
565
|
+
<TUniversalStore extends UniversalStore<TState, any>, TState = TUniversalStore extends UniversalStore<infer S, any> ? S : never>(universalStore: TUniversalStore): [TState, TUniversalStore['setState']];
|
|
566
|
+
<TUniversalStore extends UniversalStore<any, any>, TSelectedState, TState = TUniversalStore extends UniversalStore<infer S, any> ? S : never>(universalStore: TUniversalStore, selector: (state: TState) => TSelectedState): [TSelectedState, TUniversalStore['setState']];
|
|
567
|
+
};
|
|
568
|
+
|
|
569
|
+
/**
|
|
570
|
+
* A mock universal store that can be used when testing code that relies on a universal store. It
|
|
571
|
+
* functions exactly like a normal universal store, with a few exceptions:
|
|
572
|
+
*
|
|
573
|
+
* - It is fully isolated, meaning that it doesn't interact with any channel, and it is always a
|
|
574
|
+
* leader.
|
|
575
|
+
*
|
|
576
|
+
* If the second testUtils argument is provided, all the public methods are spied on, so they can be
|
|
577
|
+
* asserted.
|
|
578
|
+
*
|
|
579
|
+
* When a mock store is re-used across tests (eg. in stories), you manually need to reset the state
|
|
580
|
+
* after each test.
|
|
581
|
+
*
|
|
582
|
+
* @example
|
|
583
|
+
*
|
|
584
|
+
* ```ts
|
|
585
|
+
* import * as testUtils from '@storybook/test'; // in stories
|
|
586
|
+
* import { vi as testUtils } from 'vitest'; // ... or in Vitest tests
|
|
587
|
+
*
|
|
588
|
+
* const initialState = { ... };
|
|
589
|
+
* const store = new MockUniversalStore({ initialState }, testUtils);
|
|
590
|
+
*
|
|
591
|
+
* export default {
|
|
592
|
+
* title: 'My story',
|
|
593
|
+
* beforeEach: () => {
|
|
594
|
+
* return () => {
|
|
595
|
+
* store.setState(initialState);
|
|
596
|
+
* };
|
|
597
|
+
* }
|
|
598
|
+
* }
|
|
599
|
+
* ```
|
|
600
|
+
*/
|
|
601
|
+
declare class MockUniversalStore<State, CustomEvent extends {
|
|
602
|
+
type: string;
|
|
603
|
+
payload?: any;
|
|
604
|
+
} = {
|
|
605
|
+
type: string;
|
|
606
|
+
payload?: any;
|
|
607
|
+
}> extends UniversalStore<State, CustomEvent> {
|
|
608
|
+
private testUtils;
|
|
609
|
+
constructor(options: StoreOptions<State>, testUtils?: any);
|
|
610
|
+
/** Create a mock universal store. This is just an alias for the constructor */
|
|
611
|
+
static create<State = any, CustomEvent extends {
|
|
612
|
+
type: string;
|
|
613
|
+
payload?: any;
|
|
614
|
+
} = {
|
|
615
|
+
type: string;
|
|
616
|
+
payload?: any;
|
|
617
|
+
}>(options: StoreOptions<State>, testUtils?: any): MockUniversalStore<State, CustomEvent>;
|
|
618
|
+
unsubscribeAll(): void;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
declare class ArgsStore {
|
|
622
|
+
initialArgsByStoryId: Record<StoryId, Args>;
|
|
623
|
+
argsByStoryId: Record<StoryId, Args>;
|
|
624
|
+
get(storyId: StoryId): Args;
|
|
625
|
+
setInitial(story: PreparedStory<any>): void;
|
|
626
|
+
updateFromDelta(story: PreparedStory<any>, delta: Args): void;
|
|
627
|
+
updateFromPersisted(story: PreparedStory<any>, persisted: Args): void;
|
|
628
|
+
update(storyId: StoryId, argsUpdate: Partial<Args>): void;
|
|
629
|
+
}
|
|
630
|
+
|
|
631
|
+
declare class GlobalsStore {
|
|
632
|
+
allowedGlobalNames: Set<string>;
|
|
633
|
+
initialGlobals: Globals;
|
|
634
|
+
globals: Globals;
|
|
635
|
+
constructor({ globals, globalTypes, }: {
|
|
636
|
+
globals?: Globals;
|
|
637
|
+
globalTypes?: GlobalTypes;
|
|
638
|
+
});
|
|
639
|
+
set({ globals, globalTypes }: {
|
|
640
|
+
globals?: Globals;
|
|
641
|
+
globalTypes?: GlobalTypes;
|
|
642
|
+
}): void;
|
|
643
|
+
filterAllowedGlobals(globals: Globals): Globals;
|
|
644
|
+
updateFromPersisted(persisted: Globals): void;
|
|
645
|
+
get(): Globals;
|
|
646
|
+
update(newGlobals: Globals): void;
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
type StorySpecifier = StoryId | {
|
|
650
|
+
name: StoryName;
|
|
651
|
+
title: ComponentTitle;
|
|
652
|
+
} | '*';
|
|
653
|
+
declare class StoryIndexStore {
|
|
654
|
+
entries: StoryIndex['entries'];
|
|
655
|
+
constructor({ entries }?: StoryIndex);
|
|
656
|
+
entryFromSpecifier(specifier: StorySpecifier): IndexEntry | undefined;
|
|
657
|
+
storyIdToEntry(storyId: StoryId): IndexEntry;
|
|
658
|
+
importPathToEntry(importPath: Path): IndexEntry;
|
|
659
|
+
}
|
|
660
|
+
|
|
661
|
+
declare function normalizeStory<TRenderer extends Renderer>(key: StoryId, storyAnnotations: LegacyStoryAnnotationsOrFn<TRenderer>, meta: NormalizedComponentAnnotations<TRenderer>): NormalizedStoryAnnotations<TRenderer>;
|
|
662
|
+
|
|
663
|
+
declare function processCSFFile<TRenderer extends Renderer>(moduleExports: ModuleExports, importPath: Path, title: ComponentTitle): CSFFile<TRenderer>;
|
|
664
|
+
|
|
665
|
+
declare function prepareStory<TRenderer extends Renderer>(storyAnnotations: NormalizedStoryAnnotations<TRenderer>, componentAnnotations: NormalizedComponentAnnotations<TRenderer>, projectAnnotations: NormalizedProjectAnnotations<TRenderer>): PreparedStory<TRenderer>;
|
|
666
|
+
declare function prepareMeta<TRenderer extends Renderer>(componentAnnotations: NormalizedComponentAnnotations<TRenderer>, projectAnnotations: NormalizedProjectAnnotations<TRenderer>, moduleExport: ModuleExport): PreparedMeta<TRenderer>;
|
|
667
|
+
|
|
668
|
+
declare function normalizeProjectAnnotations<TRenderer extends Renderer>({ argTypes, globalTypes, argTypesEnhancers, decorators, loaders, beforeEach, experimental_afterEach, globals, initialGlobals, ...annotations }: ProjectAnnotations<TRenderer>): NormalizedProjectAnnotations<TRenderer>;
|
|
669
|
+
|
|
670
|
+
declare function composeConfigs<TRenderer extends Renderer>(moduleExportList: ModuleExports[]): NormalizedProjectAnnotations<TRenderer>;
|
|
671
|
+
|
|
672
|
+
/**
|
|
673
|
+
* Compose step runners to create a single step runner that applies each step runner in order.
|
|
674
|
+
*
|
|
675
|
+
* A step runner is a function that takes a defined step:
|
|
676
|
+
*
|
|
677
|
+
* @example
|
|
678
|
+
*
|
|
679
|
+
* ```ts
|
|
680
|
+
* step('label', () => {});
|
|
681
|
+
* ```
|
|
682
|
+
*
|
|
683
|
+
* ...and runs it. The prototypical example is from `@storybook/addon-interactions` where the step
|
|
684
|
+
* runner will decorate all instrumented code inside the step with information about the label.
|
|
685
|
+
*
|
|
686
|
+
* In theory it is possible to have more than one addon that wants to run steps; they can be
|
|
687
|
+
* composed together in a similar fashion to decorators. In some ways step runners are like
|
|
688
|
+
* decorators except it is not intended that they change the context or the play function.
|
|
689
|
+
*
|
|
690
|
+
* The basic implementation of a step runner is `async (label, play, context) => play(context)` --
|
|
691
|
+
* in fact this is what `composeStepRunners([])` will do.
|
|
692
|
+
*
|
|
693
|
+
* @param stepRunners An array of StepRunner
|
|
694
|
+
* @returns A StepRunner that is the composition of the arguments
|
|
695
|
+
*/
|
|
696
|
+
declare function composeStepRunners<TRenderer extends Renderer>(stepRunners: StepRunner<TRenderer>[]): StepRunner<TRenderer>;
|
|
697
|
+
|
|
698
|
+
declare global {
|
|
699
|
+
var globalProjectAnnotations: NormalizedProjectAnnotations<any>;
|
|
700
|
+
var defaultProjectAnnotations: ProjectAnnotations<any>;
|
|
701
|
+
}
|
|
702
|
+
declare function setDefaultProjectAnnotations<TRenderer extends Renderer = Renderer>(_defaultProjectAnnotations: ProjectAnnotations<TRenderer>): void;
|
|
703
|
+
declare function setProjectAnnotations<TRenderer extends Renderer = Renderer>(projectAnnotations: NamedOrDefaultProjectAnnotations<TRenderer> | NamedOrDefaultProjectAnnotations<TRenderer>[]): NormalizedProjectAnnotations<TRenderer>;
|
|
704
|
+
declare function composeStory<TRenderer extends Renderer = Renderer, TArgs extends Args = Args>(storyAnnotations: LegacyStoryAnnotationsOrFn<TRenderer>, componentAnnotations: ComponentAnnotations<TRenderer, TArgs>, projectAnnotations?: ProjectAnnotations<TRenderer>, defaultConfig?: ProjectAnnotations<TRenderer>, exportsName?: string): ComposedStoryFn<TRenderer, Partial<TArgs>>;
|
|
705
|
+
declare function composeStories<TModule extends Store_CSFExports>(storiesImport: TModule, globalConfig: ProjectAnnotations<Renderer>, composeStoryFn?: ComposeStoryFn): {};
|
|
706
|
+
type WrappedStoryRef = {
|
|
707
|
+
__pw_type: 'jsx' | 'importRef';
|
|
708
|
+
};
|
|
709
|
+
type UnwrappedJSXStoryRef = {
|
|
710
|
+
__pw_type: 'jsx';
|
|
711
|
+
type: UnwrappedImportStoryRef;
|
|
712
|
+
};
|
|
713
|
+
type UnwrappedImportStoryRef = ComposedStoryFn;
|
|
714
|
+
declare global {
|
|
715
|
+
function __pwUnwrapObject(storyRef: WrappedStoryRef): Promise<UnwrappedJSXStoryRef | UnwrappedImportStoryRef>;
|
|
716
|
+
}
|
|
717
|
+
declare function createPlaywrightTest<TFixture extends {
|
|
718
|
+
extend: any;
|
|
719
|
+
}>(baseTest: TFixture): TFixture;
|
|
720
|
+
|
|
721
|
+
declare function getCsfFactoryAnnotations<TRenderer extends Renderer = Renderer, TArgs extends Args = Args>(story: LegacyStoryAnnotationsOrFn<TRenderer>, meta?: ComponentAnnotations<TRenderer, TArgs>, projectAnnotations?: ProjectAnnotations<TRenderer>): {
|
|
722
|
+
story: storybook_internal_csf.StoryAnnotations<Renderer, Args>;
|
|
723
|
+
meta: ComponentAnnotations<Renderer, Args>;
|
|
724
|
+
preview: storybook_internal_types.NormalizedProjectAnnotations<Renderer>;
|
|
725
|
+
} | {
|
|
726
|
+
story: LegacyStoryAnnotationsOrFn<TRenderer>;
|
|
727
|
+
meta: ComponentAnnotations<TRenderer, TArgs> | undefined;
|
|
728
|
+
preview: ProjectAnnotations<TRenderer> | undefined;
|
|
729
|
+
};
|
|
730
|
+
|
|
731
|
+
interface Report<T = unknown> {
|
|
732
|
+
type: string;
|
|
733
|
+
version?: number;
|
|
734
|
+
result: T;
|
|
735
|
+
status: 'failed' | 'passed' | 'warning';
|
|
736
|
+
}
|
|
737
|
+
declare class ReporterAPI {
|
|
738
|
+
reports: Report[];
|
|
739
|
+
addReport(report: Report): Promise<void>;
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
declare class StoryStore<TRenderer extends Renderer> {
|
|
743
|
+
importFn: ModuleImportFn;
|
|
744
|
+
storyIndex: StoryIndexStore;
|
|
745
|
+
projectAnnotations: NormalizedProjectAnnotations<TRenderer>;
|
|
746
|
+
userGlobals: GlobalsStore;
|
|
747
|
+
args: ArgsStore;
|
|
748
|
+
hooks: Record<StoryId, HooksContext<TRenderer>>;
|
|
749
|
+
cleanupCallbacks: Record<StoryId, CleanupCallback[] | undefined>;
|
|
750
|
+
cachedCSFFiles?: Record<Path, CSFFile<TRenderer>>;
|
|
751
|
+
processCSFFileWithCache: typeof processCSFFile;
|
|
752
|
+
prepareMetaWithCache: typeof prepareMeta;
|
|
753
|
+
prepareStoryWithCache: typeof prepareStory;
|
|
754
|
+
constructor(storyIndex: StoryIndex, importFn: ModuleImportFn, projectAnnotations: ProjectAnnotations<TRenderer>);
|
|
755
|
+
setProjectAnnotations(projectAnnotations: ProjectAnnotations<TRenderer>): void;
|
|
756
|
+
onStoriesChanged({ importFn, storyIndex, }: {
|
|
757
|
+
importFn?: ModuleImportFn;
|
|
758
|
+
storyIndex?: StoryIndex;
|
|
759
|
+
}): Promise<void>;
|
|
760
|
+
storyIdToEntry(storyId: StoryId): Promise<IndexEntry>;
|
|
761
|
+
loadCSFFileByStoryId(storyId: StoryId): Promise<CSFFile<TRenderer>>;
|
|
762
|
+
loadAllCSFFiles(): Promise<StoryStore<TRenderer>['cachedCSFFiles']>;
|
|
763
|
+
cacheAllCSFFiles(): Promise<void>;
|
|
764
|
+
preparedMetaFromCSFFile({ csfFile }: {
|
|
765
|
+
csfFile: CSFFile<TRenderer>;
|
|
766
|
+
}): PreparedMeta<TRenderer>;
|
|
767
|
+
loadStory({ storyId }: {
|
|
768
|
+
storyId: StoryId;
|
|
769
|
+
}): Promise<PreparedStory<TRenderer>>;
|
|
770
|
+
storyFromCSFFile({ storyId, csfFile, }: {
|
|
771
|
+
storyId: StoryId;
|
|
772
|
+
csfFile: CSFFile<TRenderer>;
|
|
773
|
+
}): PreparedStory<TRenderer>;
|
|
774
|
+
componentStoriesFromCSFFile({ csfFile, }: {
|
|
775
|
+
csfFile: CSFFile<TRenderer>;
|
|
776
|
+
}): PreparedStory<TRenderer>[];
|
|
777
|
+
loadEntry(id: StoryId): Promise<{
|
|
778
|
+
entryExports: ModuleExports;
|
|
779
|
+
csfFiles: CSFFile<TRenderer>[];
|
|
780
|
+
}>;
|
|
781
|
+
getStoryContext(story: PreparedStory<TRenderer>, { forceInitialArgs }?: {
|
|
782
|
+
forceInitialArgs?: boolean | undefined;
|
|
783
|
+
}): {
|
|
784
|
+
args: storybook_internal_csf.Args;
|
|
785
|
+
initialGlobals: storybook_internal_csf.Globals;
|
|
786
|
+
globalTypes: (storybook_internal_csf.GlobalTypes & storybook_internal_csf.StrictGlobalTypes) | undefined;
|
|
787
|
+
userGlobals: storybook_internal_csf.Globals;
|
|
788
|
+
reporting: ReporterAPI;
|
|
789
|
+
globals: {
|
|
790
|
+
[x: string]: any;
|
|
791
|
+
};
|
|
792
|
+
hooks: unknown;
|
|
793
|
+
component?: (TRenderer & {
|
|
794
|
+
T: any;
|
|
795
|
+
})["component"] | undefined;
|
|
796
|
+
subcomponents?: Record<string, (TRenderer & {
|
|
797
|
+
T: any;
|
|
798
|
+
})["component"]> | undefined;
|
|
799
|
+
parameters: Parameters;
|
|
800
|
+
initialArgs: storybook_internal_csf.Args;
|
|
801
|
+
argTypes: storybook_internal_csf.StrictArgTypes<storybook_internal_csf.Args>;
|
|
802
|
+
componentId: storybook_internal_csf.ComponentId;
|
|
803
|
+
title: ComponentTitle;
|
|
804
|
+
kind: ComponentTitle;
|
|
805
|
+
id: StoryId;
|
|
806
|
+
name: storybook_internal_csf.StoryName;
|
|
807
|
+
story: storybook_internal_csf.StoryName;
|
|
808
|
+
tags: storybook_internal_csf.Tag[];
|
|
809
|
+
moduleExport: storybook_internal_types.ModuleExport;
|
|
810
|
+
originalStoryFn: storybook_internal_csf.StoryFn<TRenderer>;
|
|
811
|
+
undecoratedStoryFn: storybook_internal_csf.LegacyStoryFn<TRenderer>;
|
|
812
|
+
unboundStoryFn: storybook_internal_csf.LegacyStoryFn<TRenderer>;
|
|
813
|
+
applyLoaders: (context: StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<Record<string, any>>;
|
|
814
|
+
applyBeforeEach: (context: StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<CleanupCallback[]>;
|
|
815
|
+
applyAfterEach: (context: StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<void>;
|
|
816
|
+
playFunction?: ((context: StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<void> | void) | undefined;
|
|
817
|
+
runStep: storybook_internal_csf.StepRunner<TRenderer>;
|
|
818
|
+
mount: (context: StoryContext<TRenderer, storybook_internal_csf.Args>) => () => Promise<Canvas>;
|
|
819
|
+
testingLibraryRender?: (...args: never[]) => unknown;
|
|
820
|
+
renderToCanvas?: storybook_internal_types.RenderToCanvas<TRenderer> | undefined;
|
|
821
|
+
usesMount: boolean;
|
|
822
|
+
storyGlobals: storybook_internal_csf.Globals;
|
|
823
|
+
} & Pick<storybook_internal_csf.StoryContextForLoaders<Renderer, storybook_internal_csf.Args>, "allArgs" | "argsByTarget" | "unmappedArgs">;
|
|
824
|
+
addCleanupCallbacks(story: PreparedStory<TRenderer>, callbacks: CleanupCallback[]): void;
|
|
825
|
+
cleanupStory(story: PreparedStory<TRenderer>): Promise<void>;
|
|
826
|
+
extract(options?: {
|
|
827
|
+
includeDocsOnly?: boolean;
|
|
828
|
+
}): Record<StoryId, StoryContextForEnhancers<TRenderer>>;
|
|
829
|
+
getSetStoriesPayload(): {
|
|
830
|
+
v: number;
|
|
831
|
+
globals: storybook_internal_csf.Globals;
|
|
832
|
+
globalParameters: {};
|
|
833
|
+
kindParameters: Parameters;
|
|
834
|
+
stories: Record<string, StoryContextForEnhancers<TRenderer, storybook_internal_csf.Args>>;
|
|
835
|
+
};
|
|
836
|
+
getStoriesJsonData: () => StoryIndexV3;
|
|
837
|
+
raw(): BoundStory<TRenderer>[];
|
|
838
|
+
fromId(storyId: StoryId): BoundStory<TRenderer> | null;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* Safely combine parameters recursively. Only copy objects when needed. Algorithm = always
|
|
843
|
+
* overwrite the existing value UNLESS both values are plain objects. In this case flag the key as
|
|
844
|
+
* "special" and handle it with a heuristic.
|
|
845
|
+
*/
|
|
846
|
+
declare const combineParameters: (...parameterSets: (Parameters | undefined)[]) => Parameters;
|
|
847
|
+
|
|
848
|
+
type PropDescriptor = string[] | RegExp;
|
|
849
|
+
declare const filterArgTypes: (argTypes: StrictArgTypes, include?: PropDescriptor, exclude?: PropDescriptor) => Partial<StrictArgTypes<storybook_internal_types.Args>>;
|
|
850
|
+
|
|
851
|
+
declare const inferControls: ArgTypesEnhancer<Renderer>;
|
|
852
|
+
|
|
853
|
+
declare function decorateStory<TRenderer extends Renderer>(storyFn: LegacyStoryFn<TRenderer>, decorator: DecoratorFunction<TRenderer>, bindWithContext: (storyFn: LegacyStoryFn<TRenderer>) => PartialStoryFn<TRenderer>): LegacyStoryFn<TRenderer>;
|
|
854
|
+
/**
|
|
855
|
+
* Currently StoryContextUpdates are allowed to have any key in the type. However, you cannot
|
|
856
|
+
* overwrite any of the build-it "static" keys.
|
|
857
|
+
*
|
|
858
|
+
* @param inputContextUpdate StoryContextUpdate
|
|
859
|
+
* @returns StoryContextUpdate
|
|
860
|
+
*/
|
|
861
|
+
declare function sanitizeStoryContextUpdate({ componentId, title, kind, id, name, story, parameters, initialArgs, argTypes, ...update }?: StoryContextUpdate): StoryContextUpdate;
|
|
862
|
+
declare function defaultDecorateStory<TRenderer extends Renderer>(storyFn: LegacyStoryFn<TRenderer>, decorators: DecoratorFunction<TRenderer>[]): LegacyStoryFn<TRenderer>;
|
|
863
|
+
|
|
864
|
+
declare const combineArgs: (value: any, update: any) => Args;
|
|
865
|
+
|
|
866
|
+
declare const userOrAutoTitleFromSpecifier: (fileName: string | number, entry: NormalizedStoriesSpecifier, userTitle?: string) => string | undefined;
|
|
867
|
+
declare const userOrAutoTitle: (fileName: string, storiesEntries: NormalizedStoriesSpecifier[], userTitle?: string) => string | undefined;
|
|
868
|
+
|
|
869
|
+
declare const sortStoriesV7: (stories: IndexEntry[], storySortParameter: Addon_StorySortParameterV7, fileNameOrder: Path[]) => IndexEntry[];
|
|
870
|
+
|
|
871
|
+
declare class DocsContext<TRenderer extends Renderer> implements DocsContextProps<TRenderer> {
|
|
872
|
+
channel: Channel;
|
|
873
|
+
protected store: StoryStore<TRenderer>;
|
|
874
|
+
renderStoryToElement: DocsContextProps<TRenderer>['renderStoryToElement'];
|
|
875
|
+
private componentStoriesValue;
|
|
876
|
+
private storyIdToCSFFile;
|
|
877
|
+
private exportToStory;
|
|
878
|
+
private exportsToCSFFile;
|
|
879
|
+
private nameToStoryId;
|
|
880
|
+
private attachedCSFFiles;
|
|
881
|
+
private primaryStory?;
|
|
882
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, renderStoryToElement: DocsContextProps<TRenderer>['renderStoryToElement'],
|
|
883
|
+
/** The CSF files known (via the index) to be refererenced by this docs file */
|
|
884
|
+
csfFiles: CSFFile<TRenderer>[]);
|
|
885
|
+
referenceCSFFile(csfFile: CSFFile<TRenderer>): void;
|
|
886
|
+
attachCSFFile(csfFile: CSFFile<TRenderer>): void;
|
|
887
|
+
referenceMeta(metaExports: ModuleExports, attach: boolean): void;
|
|
888
|
+
get projectAnnotations(): storybook_internal_types.NormalizedProjectAnnotations<TRenderer>;
|
|
889
|
+
private resolveAttachedModuleExportType;
|
|
890
|
+
private resolveModuleExport;
|
|
891
|
+
resolveOf<TType extends ResolvedModuleExportType>(moduleExportOrType: ModuleExport | TType, validTypes?: TType[]): ResolvedModuleExportFromType<TType, TRenderer>;
|
|
892
|
+
storyIdByName: (storyName: StoryName) => string;
|
|
893
|
+
componentStories: () => PreparedStory<TRenderer>[];
|
|
894
|
+
componentStoriesFromCSFFile: (csfFile: CSFFile<TRenderer>) => PreparedStory<TRenderer>[];
|
|
895
|
+
storyById: (storyId?: StoryId) => PreparedStory<TRenderer>;
|
|
896
|
+
getStoryContext: (story: PreparedStory<TRenderer>) => {
|
|
897
|
+
loaded: {};
|
|
898
|
+
viewMode: string;
|
|
899
|
+
args: storybook_internal_csf.Args;
|
|
900
|
+
initialGlobals: storybook_internal_csf.Globals;
|
|
901
|
+
globalTypes: (storybook_internal_csf.GlobalTypes & storybook_internal_csf.StrictGlobalTypes) | undefined;
|
|
902
|
+
userGlobals: storybook_internal_csf.Globals;
|
|
903
|
+
reporting: ReporterAPI;
|
|
904
|
+
globals: {
|
|
905
|
+
[x: string]: any;
|
|
906
|
+
};
|
|
907
|
+
hooks: unknown;
|
|
908
|
+
component?: (TRenderer & {
|
|
909
|
+
T: any;
|
|
910
|
+
})["component"] | undefined;
|
|
911
|
+
subcomponents?: Record<string, (TRenderer & {
|
|
912
|
+
T: any;
|
|
913
|
+
})["component"]> | undefined;
|
|
914
|
+
parameters: storybook_internal_csf.Parameters;
|
|
915
|
+
initialArgs: storybook_internal_csf.Args;
|
|
916
|
+
argTypes: storybook_internal_csf.StrictArgTypes<storybook_internal_csf.Args>;
|
|
917
|
+
componentId: storybook_internal_csf.ComponentId;
|
|
918
|
+
title: storybook_internal_csf.ComponentTitle;
|
|
919
|
+
kind: storybook_internal_csf.ComponentTitle;
|
|
920
|
+
id: StoryId;
|
|
921
|
+
name: StoryName;
|
|
922
|
+
story: StoryName;
|
|
923
|
+
tags: storybook_internal_csf.Tag[];
|
|
924
|
+
moduleExport: ModuleExport;
|
|
925
|
+
originalStoryFn: storybook_internal_csf.StoryFn<TRenderer>;
|
|
926
|
+
undecoratedStoryFn: storybook_internal_csf.LegacyStoryFn<TRenderer>;
|
|
927
|
+
unboundStoryFn: storybook_internal_csf.LegacyStoryFn<TRenderer>;
|
|
928
|
+
applyLoaders: (context: storybook_internal_csf.StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<Record<string, any>>;
|
|
929
|
+
applyBeforeEach: (context: storybook_internal_csf.StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<storybook_internal_csf.CleanupCallback[]>;
|
|
930
|
+
applyAfterEach: (context: storybook_internal_csf.StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<void>;
|
|
931
|
+
playFunction?: ((context: storybook_internal_csf.StoryContext<TRenderer, storybook_internal_csf.Args>) => Promise<void> | void) | undefined;
|
|
932
|
+
runStep: storybook_internal_csf.StepRunner<TRenderer>;
|
|
933
|
+
mount: (context: storybook_internal_csf.StoryContext<TRenderer, storybook_internal_csf.Args>) => () => Promise<storybook_internal_csf.Canvas>;
|
|
934
|
+
testingLibraryRender?: (...args: never[]) => unknown;
|
|
935
|
+
renderToCanvas?: storybook_internal_types.RenderToCanvas<TRenderer> | undefined;
|
|
936
|
+
usesMount: boolean;
|
|
937
|
+
storyGlobals: storybook_internal_csf.Globals;
|
|
938
|
+
allArgs: any;
|
|
939
|
+
argsByTarget: any;
|
|
940
|
+
unmappedArgs: any;
|
|
941
|
+
};
|
|
942
|
+
loadStory: (id: StoryId) => Promise<PreparedStory<TRenderer>>;
|
|
943
|
+
}
|
|
944
|
+
|
|
945
|
+
type RenderType = 'story' | 'docs';
|
|
946
|
+
/**
|
|
947
|
+
* A "Render" represents the rendering of a single entry to a single location
|
|
948
|
+
*
|
|
949
|
+
* The implementations of render are used for two key purposes:
|
|
950
|
+
*
|
|
951
|
+
* - Tracking the state of the rendering as it moves between preparing, rendering and tearing down.
|
|
952
|
+
* - Tracking what is rendered to know if a change requires re-rendering or teardown + recreation.
|
|
953
|
+
*/
|
|
954
|
+
interface Render<TRenderer extends Renderer> {
|
|
955
|
+
type: RenderType;
|
|
956
|
+
id: StoryId;
|
|
957
|
+
isPreparing: () => boolean;
|
|
958
|
+
isEqual: (other: Render<TRenderer>) => boolean;
|
|
959
|
+
disableKeyListeners: boolean;
|
|
960
|
+
teardown?: (options: {
|
|
961
|
+
viewModeChanged: boolean;
|
|
962
|
+
}) => Promise<void>;
|
|
963
|
+
torndown: boolean;
|
|
964
|
+
renderToElement: (canvasElement: TRenderer['canvasElement'], renderStoryToElement?: any, options?: StoryRenderOptions) => Promise<void>;
|
|
965
|
+
}
|
|
966
|
+
|
|
967
|
+
/**
|
|
968
|
+
* A CsfDocsRender is a render of a docs entry that is rendered based on a CSF file.
|
|
969
|
+
*
|
|
970
|
+
* The expectation is the primary CSF file which is the `importPath` for the entry will define a
|
|
971
|
+
* story which may contain the actual rendered JSX code for the template in the `docs.page`
|
|
972
|
+
* parameter.
|
|
973
|
+
*
|
|
974
|
+
* Use cases:
|
|
975
|
+
*
|
|
976
|
+
* - Autodocs, where there is no story, and we fall back to the globally defined template.
|
|
977
|
+
*/
|
|
978
|
+
declare class CsfDocsRender<TRenderer extends Renderer> implements Render<TRenderer> {
|
|
979
|
+
protected channel: Channel;
|
|
980
|
+
protected store: StoryStore<TRenderer>;
|
|
981
|
+
entry: IndexEntry;
|
|
982
|
+
private callbacks;
|
|
983
|
+
readonly type: RenderType;
|
|
984
|
+
readonly subtype = "csf";
|
|
985
|
+
readonly id: StoryId;
|
|
986
|
+
story?: PreparedStory<TRenderer>;
|
|
987
|
+
rerender?: () => Promise<void>;
|
|
988
|
+
teardownRender?: (options: {
|
|
989
|
+
viewModeChanged?: boolean;
|
|
990
|
+
}) => Promise<void>;
|
|
991
|
+
torndown: boolean;
|
|
992
|
+
readonly disableKeyListeners = false;
|
|
993
|
+
preparing: boolean;
|
|
994
|
+
csfFiles?: CSFFile<TRenderer>[];
|
|
995
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, entry: IndexEntry, callbacks: RenderContextCallbacks<TRenderer>);
|
|
996
|
+
isPreparing(): boolean;
|
|
997
|
+
prepare(): Promise<void>;
|
|
998
|
+
isEqual(other: Render<TRenderer>): boolean;
|
|
999
|
+
docsContext(renderStoryToElement: DocsContextProps<TRenderer>['renderStoryToElement']): DocsContext<TRenderer>;
|
|
1000
|
+
renderToElement(canvasElement: TRenderer['canvasElement'], renderStoryToElement: DocsContextProps<TRenderer>['renderStoryToElement']): Promise<void>;
|
|
1001
|
+
teardown({ viewModeChanged }?: {
|
|
1002
|
+
viewModeChanged?: boolean;
|
|
1003
|
+
}): Promise<void>;
|
|
1004
|
+
}
|
|
1005
|
+
|
|
1006
|
+
/**
|
|
1007
|
+
* A MdxDocsRender is a render of a docs entry that comes from a true MDX file, that is a `.mdx`
|
|
1008
|
+
* file that doesn't get compiled to a CSF file.
|
|
1009
|
+
*
|
|
1010
|
+
* A MDX render can reference (import) zero or more CSF files that contain stories.
|
|
1011
|
+
*
|
|
1012
|
+
* Use cases:
|
|
1013
|
+
*
|
|
1014
|
+
* - *.mdx file that may or may not reference a specific CSF file with `<Meta of={} />`
|
|
1015
|
+
*/
|
|
1016
|
+
declare class MdxDocsRender<TRenderer extends Renderer> implements Render<TRenderer> {
|
|
1017
|
+
protected channel: Channel;
|
|
1018
|
+
protected store: StoryStore<TRenderer>;
|
|
1019
|
+
entry: IndexEntry;
|
|
1020
|
+
private callbacks;
|
|
1021
|
+
readonly type: RenderType;
|
|
1022
|
+
readonly subtype = "mdx";
|
|
1023
|
+
readonly id: StoryId;
|
|
1024
|
+
private exports?;
|
|
1025
|
+
rerender?: () => Promise<void>;
|
|
1026
|
+
teardownRender?: (options: {
|
|
1027
|
+
viewModeChanged?: boolean;
|
|
1028
|
+
}) => Promise<void>;
|
|
1029
|
+
torndown: boolean;
|
|
1030
|
+
readonly disableKeyListeners = false;
|
|
1031
|
+
preparing: boolean;
|
|
1032
|
+
csfFiles?: CSFFile<TRenderer>[];
|
|
1033
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, entry: IndexEntry, callbacks: RenderContextCallbacks<TRenderer>);
|
|
1034
|
+
isPreparing(): boolean;
|
|
1035
|
+
prepare(): Promise<void>;
|
|
1036
|
+
isEqual(other: Render<TRenderer>): boolean;
|
|
1037
|
+
docsContext(renderStoryToElement: DocsContextProps<TRenderer>['renderStoryToElement']): DocsContext<TRenderer>;
|
|
1038
|
+
renderToElement(canvasElement: TRenderer['canvasElement'], renderStoryToElement: DocsContextProps<TRenderer>['renderStoryToElement']): Promise<void>;
|
|
1039
|
+
teardown({ viewModeChanged }?: {
|
|
1040
|
+
viewModeChanged?: boolean;
|
|
1041
|
+
}): Promise<void>;
|
|
1042
|
+
}
|
|
1043
|
+
|
|
1044
|
+
type RenderPhase = 'preparing' | 'loading' | 'beforeEach' | 'rendering' | 'playing' | 'played' | 'afterEach' | 'completed' | 'finished' | 'aborted' | 'errored';
|
|
1045
|
+
declare class StoryRender<TRenderer extends Renderer> implements Render<TRenderer> {
|
|
1046
|
+
channel: Channel;
|
|
1047
|
+
store: StoryStore<TRenderer>;
|
|
1048
|
+
private renderToScreen;
|
|
1049
|
+
private callbacks;
|
|
1050
|
+
id: StoryId;
|
|
1051
|
+
viewMode: StoryContext<TRenderer>['viewMode'];
|
|
1052
|
+
renderOptions: StoryRenderOptions;
|
|
1053
|
+
type: RenderType;
|
|
1054
|
+
story?: PreparedStory<TRenderer>;
|
|
1055
|
+
phase?: RenderPhase;
|
|
1056
|
+
private abortController?;
|
|
1057
|
+
private canvasElement?;
|
|
1058
|
+
private notYetRendered;
|
|
1059
|
+
private rerenderEnqueued;
|
|
1060
|
+
disableKeyListeners: boolean;
|
|
1061
|
+
private teardownRender;
|
|
1062
|
+
torndown: boolean;
|
|
1063
|
+
constructor(channel: Channel, store: StoryStore<TRenderer>, renderToScreen: RenderToCanvas<TRenderer>, callbacks: RenderContextCallbacks<TRenderer> & {
|
|
1064
|
+
showStoryDuringRender?: () => void;
|
|
1065
|
+
}, id: StoryId, viewMode: StoryContext<TRenderer>['viewMode'], renderOptions?: StoryRenderOptions, story?: PreparedStory<TRenderer>);
|
|
1066
|
+
private runPhase;
|
|
1067
|
+
private checkIfAborted;
|
|
1068
|
+
prepare(): Promise<void>;
|
|
1069
|
+
isEqual(other: Render<TRenderer>): boolean;
|
|
1070
|
+
isPreparing(): boolean;
|
|
1071
|
+
isPending(): boolean;
|
|
1072
|
+
renderToElement(canvasElement: TRenderer['canvasElement']): Promise<void>;
|
|
1073
|
+
private storyContext;
|
|
1074
|
+
render({ initial, forceRemount, }?: {
|
|
1075
|
+
initial?: boolean;
|
|
1076
|
+
forceRemount?: boolean;
|
|
1077
|
+
}): Promise<void>;
|
|
1078
|
+
/**
|
|
1079
|
+
* Rerender the story. If the story is currently pending (loading/rendering), the rerender will be
|
|
1080
|
+
* enqueued, and will be executed after the current render is completed. Rerendering while playing
|
|
1081
|
+
* will not be enqueued, and will be executed immediately, to support rendering args changes while
|
|
1082
|
+
* playing.
|
|
1083
|
+
*/
|
|
1084
|
+
rerender(): Promise<void>;
|
|
1085
|
+
remount(): Promise<void>;
|
|
1086
|
+
cancelRender(): void;
|
|
1087
|
+
teardown(): Promise<void>;
|
|
1088
|
+
}
|
|
1089
|
+
|
|
1090
|
+
type MaybePromise<T> = Promise<T> | T;
|
|
1091
|
+
declare class Preview<TRenderer extends Renderer> {
|
|
1092
|
+
importFn: ModuleImportFn;
|
|
1093
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>;
|
|
1094
|
+
protected channel: Channel;
|
|
1095
|
+
/** @deprecated Will be removed in 8.0, please use channel instead */
|
|
1096
|
+
serverChannel?: Channel;
|
|
1097
|
+
protected storyStoreValue?: StoryStore<TRenderer>;
|
|
1098
|
+
renderToCanvas?: RenderToCanvas<TRenderer>;
|
|
1099
|
+
storyRenders: StoryRender<TRenderer>[];
|
|
1100
|
+
previewEntryError?: Error;
|
|
1101
|
+
private projectAnnotationsBeforeInitialization?;
|
|
1102
|
+
private beforeAllCleanup?;
|
|
1103
|
+
protected storeInitializationPromise: Promise<void>;
|
|
1104
|
+
protected resolveStoreInitializationPromise: () => void;
|
|
1105
|
+
protected rejectStoreInitializationPromise: (err: Error) => void;
|
|
1106
|
+
constructor(importFn: ModuleImportFn, getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>, channel?: Channel, shouldInitialize?: boolean);
|
|
1107
|
+
get storyStore(): StoryStore<TRenderer>;
|
|
1108
|
+
protected initialize(): Promise<void>;
|
|
1109
|
+
ready(): Promise<void>;
|
|
1110
|
+
setupListeners(): void;
|
|
1111
|
+
getProjectAnnotationsOrRenderError(): Promise<ProjectAnnotations<TRenderer>>;
|
|
1112
|
+
initializeWithProjectAnnotations(projectAnnotations: ProjectAnnotations<TRenderer>): Promise<void>;
|
|
1113
|
+
runBeforeAllHook(projectAnnotations: ProjectAnnotations<TRenderer>): Promise<void>;
|
|
1114
|
+
getStoryIndexFromServer(): Promise<StoryIndex>;
|
|
1115
|
+
protected initializeWithStoryIndex(storyIndex: StoryIndex): void;
|
|
1116
|
+
setInitialGlobals(): Promise<void>;
|
|
1117
|
+
emitGlobals(): void;
|
|
1118
|
+
onGetProjectAnnotationsChanged({ getProjectAnnotations, }: {
|
|
1119
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>;
|
|
1120
|
+
}): Promise<void>;
|
|
1121
|
+
onStoryIndexChanged(): Promise<void>;
|
|
1122
|
+
onStoriesChanged({ importFn, storyIndex, }: {
|
|
1123
|
+
importFn?: ModuleImportFn;
|
|
1124
|
+
storyIndex?: StoryIndex;
|
|
1125
|
+
}): Promise<void>;
|
|
1126
|
+
onUpdateGlobals({ globals: updatedGlobals, currentStory, }: {
|
|
1127
|
+
globals: Globals;
|
|
1128
|
+
currentStory?: PreparedStory<TRenderer>;
|
|
1129
|
+
}): Promise<void>;
|
|
1130
|
+
onUpdateArgs({ storyId, updatedArgs }: {
|
|
1131
|
+
storyId: StoryId;
|
|
1132
|
+
updatedArgs: Args;
|
|
1133
|
+
}): Promise<void>;
|
|
1134
|
+
onRequestArgTypesInfo({ id, payload }: RequestData<ArgTypesRequestPayload>): Promise<void>;
|
|
1135
|
+
onResetArgs({ storyId, argNames }: {
|
|
1136
|
+
storyId: string;
|
|
1137
|
+
argNames?: string[];
|
|
1138
|
+
}): Promise<void>;
|
|
1139
|
+
onForceReRender(): Promise<void>;
|
|
1140
|
+
onForceRemount({ storyId }: {
|
|
1141
|
+
storyId: StoryId;
|
|
1142
|
+
}): Promise<void>;
|
|
1143
|
+
renderStoryToElement(story: PreparedStory<TRenderer>, element: TRenderer['canvasElement'], callbacks: RenderContextCallbacks<TRenderer>, options: StoryRenderOptions): () => Promise<void>;
|
|
1144
|
+
teardownRender(render: StoryRender<TRenderer> | CsfDocsRender<TRenderer> | MdxDocsRender<TRenderer>, { viewModeChanged }?: {
|
|
1145
|
+
viewModeChanged?: boolean;
|
|
1146
|
+
}): Promise<void>;
|
|
1147
|
+
loadStory({ storyId }: {
|
|
1148
|
+
storyId: StoryId;
|
|
1149
|
+
}): Promise<PreparedStory<TRenderer>>;
|
|
1150
|
+
getStoryContext(story: PreparedStory<TRenderer>, { forceInitialArgs }?: {
|
|
1151
|
+
forceInitialArgs?: boolean | undefined;
|
|
1152
|
+
}): {
|
|
1153
|
+
args: Args;
|
|
1154
|
+
initialGlobals: Globals;
|
|
1155
|
+
globalTypes: (storybook_internal_csf.GlobalTypes & storybook_internal_csf.StrictGlobalTypes) | undefined;
|
|
1156
|
+
userGlobals: Globals;
|
|
1157
|
+
reporting: ReporterAPI;
|
|
1158
|
+
globals: {
|
|
1159
|
+
[x: string]: any;
|
|
1160
|
+
};
|
|
1161
|
+
hooks: unknown;
|
|
1162
|
+
component?: (TRenderer & {
|
|
1163
|
+
T: any;
|
|
1164
|
+
})["component"] | undefined;
|
|
1165
|
+
subcomponents?: Record<string, (TRenderer & {
|
|
1166
|
+
T: any;
|
|
1167
|
+
})["component"]> | undefined;
|
|
1168
|
+
parameters: storybook_internal_csf.Parameters;
|
|
1169
|
+
initialArgs: Args;
|
|
1170
|
+
argTypes: storybook_internal_csf.StrictArgTypes<Args>;
|
|
1171
|
+
componentId: storybook_internal_csf.ComponentId;
|
|
1172
|
+
title: storybook_internal_csf.ComponentTitle;
|
|
1173
|
+
kind: storybook_internal_csf.ComponentTitle;
|
|
1174
|
+
id: StoryId;
|
|
1175
|
+
name: storybook_internal_csf.StoryName;
|
|
1176
|
+
story: storybook_internal_csf.StoryName;
|
|
1177
|
+
tags: storybook_internal_csf.Tag[];
|
|
1178
|
+
moduleExport: storybook_internal_types.ModuleExport;
|
|
1179
|
+
originalStoryFn: storybook_internal_csf.StoryFn<TRenderer>;
|
|
1180
|
+
undecoratedStoryFn: storybook_internal_csf.LegacyStoryFn<TRenderer>;
|
|
1181
|
+
unboundStoryFn: storybook_internal_csf.LegacyStoryFn<TRenderer>;
|
|
1182
|
+
applyLoaders: (context: storybook_internal_csf.StoryContext<TRenderer, Args>) => Promise<Record<string, any>>;
|
|
1183
|
+
applyBeforeEach: (context: storybook_internal_csf.StoryContext<TRenderer, Args>) => Promise<CleanupCallback[]>;
|
|
1184
|
+
applyAfterEach: (context: storybook_internal_csf.StoryContext<TRenderer, Args>) => Promise<void>;
|
|
1185
|
+
playFunction?: ((context: storybook_internal_csf.StoryContext<TRenderer, Args>) => Promise<void> | void) | undefined;
|
|
1186
|
+
runStep: storybook_internal_csf.StepRunner<TRenderer>;
|
|
1187
|
+
mount: (context: storybook_internal_csf.StoryContext<TRenderer, Args>) => () => Promise<storybook_internal_csf.Canvas>;
|
|
1188
|
+
testingLibraryRender?: (...args: never[]) => unknown;
|
|
1189
|
+
renderToCanvas?: RenderToCanvas<TRenderer> | undefined;
|
|
1190
|
+
usesMount: boolean;
|
|
1191
|
+
storyGlobals: Globals;
|
|
1192
|
+
} & Pick<storybook_internal_csf.StoryContextForLoaders<Renderer, Args>, "allArgs" | "argsByTarget" | "unmappedArgs">;
|
|
1193
|
+
extract(options?: {
|
|
1194
|
+
includeDocsOnly: boolean;
|
|
1195
|
+
}): Promise<Record<string, storybook_internal_csf.StoryContextForEnhancers<TRenderer, Args>>>;
|
|
1196
|
+
renderPreviewEntryError(reason: string, err: Error): void;
|
|
1197
|
+
}
|
|
1198
|
+
|
|
1199
|
+
interface SelectionSpecifier {
|
|
1200
|
+
storySpecifier: StorySpecifier;
|
|
1201
|
+
viewMode: ViewMode;
|
|
1202
|
+
args?: Args;
|
|
1203
|
+
globals?: Args;
|
|
1204
|
+
}
|
|
1205
|
+
interface Selection {
|
|
1206
|
+
storyId: StoryId;
|
|
1207
|
+
viewMode: ViewMode;
|
|
1208
|
+
}
|
|
1209
|
+
interface SelectionStore {
|
|
1210
|
+
selectionSpecifier: SelectionSpecifier | null;
|
|
1211
|
+
selection?: Selection;
|
|
1212
|
+
setSelection(selection: Selection): void;
|
|
1213
|
+
setQueryParams(queryParams: Record<PropertyKey, unknown>): void;
|
|
1214
|
+
}
|
|
1215
|
+
|
|
1216
|
+
interface View<TStorybookRoot> {
|
|
1217
|
+
prepareForStory(story: PreparedStory<any>): TStorybookRoot;
|
|
1218
|
+
prepareForDocs(): TStorybookRoot;
|
|
1219
|
+
showErrorDisplay(err: {
|
|
1220
|
+
message?: string;
|
|
1221
|
+
stack?: string;
|
|
1222
|
+
}): void;
|
|
1223
|
+
showNoPreview(): void;
|
|
1224
|
+
showPreparingStory(options?: {
|
|
1225
|
+
immediate: boolean;
|
|
1226
|
+
}): void;
|
|
1227
|
+
showPreparingDocs(options?: {
|
|
1228
|
+
immediate: boolean;
|
|
1229
|
+
}): void;
|
|
1230
|
+
showMain(): void;
|
|
1231
|
+
showDocs(): void;
|
|
1232
|
+
showStory(): void;
|
|
1233
|
+
showStoryDuringRender(): void;
|
|
1234
|
+
}
|
|
1235
|
+
|
|
1236
|
+
type PossibleRender<TRenderer extends Renderer> = StoryRender<TRenderer> | CsfDocsRender<TRenderer> | MdxDocsRender<TRenderer>;
|
|
1237
|
+
declare class PreviewWithSelection<TRenderer extends Renderer> extends Preview<TRenderer> {
|
|
1238
|
+
importFn: ModuleImportFn;
|
|
1239
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>;
|
|
1240
|
+
selectionStore: SelectionStore;
|
|
1241
|
+
view: View<TRenderer['canvasElement']>;
|
|
1242
|
+
currentSelection?: Selection;
|
|
1243
|
+
currentRender?: PossibleRender<TRenderer>;
|
|
1244
|
+
constructor(importFn: ModuleImportFn, getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>, selectionStore: SelectionStore, view: View<TRenderer['canvasElement']>);
|
|
1245
|
+
setupListeners(): void;
|
|
1246
|
+
setInitialGlobals(): Promise<void>;
|
|
1247
|
+
initializeWithStoryIndex(storyIndex: StoryIndex): Promise<void>;
|
|
1248
|
+
selectSpecifiedStory(): Promise<void>;
|
|
1249
|
+
onGetProjectAnnotationsChanged({ getProjectAnnotations, }: {
|
|
1250
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>;
|
|
1251
|
+
}): Promise<void>;
|
|
1252
|
+
onStoriesChanged({ importFn, storyIndex, }: {
|
|
1253
|
+
importFn?: ModuleImportFn;
|
|
1254
|
+
storyIndex?: StoryIndex;
|
|
1255
|
+
}): Promise<void>;
|
|
1256
|
+
onKeydown(event: KeyboardEvent): void;
|
|
1257
|
+
onSetCurrentStory(selection: {
|
|
1258
|
+
storyId: StoryId;
|
|
1259
|
+
viewMode?: ViewMode;
|
|
1260
|
+
}): Promise<void>;
|
|
1261
|
+
onUpdateQueryParams(queryParams: any): void;
|
|
1262
|
+
onUpdateGlobals({ globals }: {
|
|
1263
|
+
globals: Globals;
|
|
1264
|
+
}): Promise<void>;
|
|
1265
|
+
onUpdateArgs({ storyId, updatedArgs }: {
|
|
1266
|
+
storyId: StoryId;
|
|
1267
|
+
updatedArgs: Args;
|
|
1268
|
+
}): Promise<void>;
|
|
1269
|
+
onPreloadStories({ ids }: {
|
|
1270
|
+
ids: string[];
|
|
1271
|
+
}): Promise<void>;
|
|
1272
|
+
protected renderSelection({ persistedArgs }?: {
|
|
1273
|
+
persistedArgs?: Args;
|
|
1274
|
+
}): Promise<void>;
|
|
1275
|
+
teardownRender(render: PossibleRender<TRenderer>, { viewModeChanged }?: {
|
|
1276
|
+
viewModeChanged?: boolean;
|
|
1277
|
+
}): Promise<void>;
|
|
1278
|
+
mainStoryCallbacks(storyId: StoryId): {
|
|
1279
|
+
showStoryDuringRender: () => void;
|
|
1280
|
+
showMain: () => void;
|
|
1281
|
+
showError: (err: {
|
|
1282
|
+
title: string;
|
|
1283
|
+
description: string;
|
|
1284
|
+
}) => void;
|
|
1285
|
+
showException: (err: Error) => void;
|
|
1286
|
+
};
|
|
1287
|
+
renderPreviewEntryError(reason: string, err: Error): void;
|
|
1288
|
+
renderMissingStory(): void;
|
|
1289
|
+
renderStoryLoadingException(storySpecifier: StorySpecifier, err: Error): void;
|
|
1290
|
+
renderException(storyId: StoryId, error: Error): void;
|
|
1291
|
+
renderError(storyId: StoryId, { title, description }: {
|
|
1292
|
+
title: string;
|
|
1293
|
+
description: string;
|
|
1294
|
+
}): void;
|
|
1295
|
+
}
|
|
1296
|
+
|
|
1297
|
+
declare class PreviewWeb<TRenderer extends Renderer> extends PreviewWithSelection<TRenderer> {
|
|
1298
|
+
importFn: ModuleImportFn;
|
|
1299
|
+
getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>;
|
|
1300
|
+
constructor(importFn: ModuleImportFn, getProjectAnnotations: () => MaybePromise<ProjectAnnotations<TRenderer>>);
|
|
1301
|
+
}
|
|
1302
|
+
|
|
1303
|
+
declare class UrlStore implements SelectionStore {
|
|
1304
|
+
selectionSpecifier: SelectionSpecifier | null;
|
|
1305
|
+
selection?: Selection;
|
|
1306
|
+
constructor();
|
|
1307
|
+
setSelection(selection: Selection): void;
|
|
1308
|
+
setQueryParams(queryParams: Record<PropertyKey, unknown>): void;
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
declare enum Mode {
|
|
1312
|
+
'MAIN' = "MAIN",
|
|
1313
|
+
'NOPREVIEW' = "NOPREVIEW",
|
|
1314
|
+
'PREPARING_STORY' = "PREPARING_STORY",
|
|
1315
|
+
'PREPARING_DOCS' = "PREPARING_DOCS",
|
|
1316
|
+
'ERROR' = "ERROR"
|
|
1317
|
+
}
|
|
1318
|
+
declare const layoutClassMap: {
|
|
1319
|
+
readonly centered: "sb-main-centered";
|
|
1320
|
+
readonly fullscreen: "sb-main-fullscreen";
|
|
1321
|
+
readonly padded: "sb-main-padded";
|
|
1322
|
+
};
|
|
1323
|
+
type Layout = keyof typeof layoutClassMap | 'none';
|
|
1324
|
+
declare class WebView implements View<HTMLElement> {
|
|
1325
|
+
private currentLayoutClass?;
|
|
1326
|
+
private testing;
|
|
1327
|
+
private preparingTimeout?;
|
|
1328
|
+
constructor();
|
|
1329
|
+
prepareForStory(story: PreparedStory<any>): HTMLElement;
|
|
1330
|
+
storyRoot(): HTMLElement;
|
|
1331
|
+
prepareForDocs(): HTMLElement;
|
|
1332
|
+
docsRoot(): HTMLElement;
|
|
1333
|
+
applyLayout(layout?: Layout): void;
|
|
1334
|
+
checkIfLayoutExists(layout: keyof typeof layoutClassMap): void;
|
|
1335
|
+
showMode(mode: Mode): void;
|
|
1336
|
+
showErrorDisplay({ message, stack }: {
|
|
1337
|
+
message?: string | undefined;
|
|
1338
|
+
stack?: string | undefined;
|
|
1339
|
+
}): void;
|
|
1340
|
+
showNoPreview(): void;
|
|
1341
|
+
showPreparingStory({ immediate }?: {
|
|
1342
|
+
immediate?: boolean | undefined;
|
|
1343
|
+
}): void;
|
|
1344
|
+
showPreparingDocs({ immediate }?: {
|
|
1345
|
+
immediate?: boolean | undefined;
|
|
1346
|
+
}): void;
|
|
1347
|
+
showMain(): void;
|
|
1348
|
+
showDocs(): void;
|
|
1349
|
+
showStory(): void;
|
|
1350
|
+
showStoryDuringRender(): void;
|
|
1351
|
+
}
|
|
1352
|
+
|
|
1353
|
+
declare function simulateDOMContentLoaded(): void;
|
|
1354
|
+
declare function simulatePageLoad($container: any): void;
|
|
1355
|
+
|
|
1356
|
+
export { DocsContext, HooksContext, Preview, PreviewWeb, PreviewWithSelection, type PropDescriptor, type Report, ReporterAPI, type SelectionStore, StoryStore, UrlStore, type View, WebView, addons, applyHooks, combineArgs, combineParameters, composeConfigs, composeStepRunners, composeStories, composeStory, createPlaywrightTest, decorateStory, defaultDecorateStory, definePreview, MockUniversalStore as experimental_MockUniversalStore, UniversalStore as experimental_UniversalStore, useUniversalStore as experimental_useUniversalStore, filterArgTypes, getCsfFactoryAnnotations, inferControls, makeDecorator, mockChannel, normalizeProjectAnnotations, normalizeStory, prepareMeta, prepareStory, sanitizeStoryContextUpdate, setDefaultProjectAnnotations, setProjectAnnotations, simulateDOMContentLoaded, simulatePageLoad, sortStoriesV7, useArgs, useCallback, useChannel, useEffect, useGlobals, useMemo, useParameter, useReducer, useRef, useState, useStoryContext, userOrAutoTitle, userOrAutoTitleFromSpecifier };
|