3
3
const getStories = async ( window ) => {
4
4
const getStorybook =
5
5
( window . __STORYBOOK_CLIENT_API__ && window . __STORYBOOK_CLIENT_API__ . raw ) ||
6
+ ( window . __STORYBOOK_PREVIEW__ &&
7
+ window . __STORYBOOK_PREVIEW__ . extract &&
8
+ window . __STORYBOOK_PREVIEW__ . storyStore . raw ) ||
6
9
( window . loki && window . loki . getStorybook ) ;
7
10
if ( ! getStorybook ) {
8
11
throw new Error (
@@ -19,13 +22,6 @@ const getStories = async (window) => {
19
22
'storySource' ,
20
23
] ;
21
24
22
- if (
23
- window . __STORYBOOK_CLIENT_API__ . storyStore &&
24
- window . __STORYBOOK_CLIENT_API__ . storyStore . cacheAllCSFFiles
25
- ) {
26
- await window . __STORYBOOK_CLIENT_API__ . storyStore . cacheAllCSFFiles ( ) ;
27
- }
28
-
29
25
const isSerializable = ( value ) => {
30
26
try {
31
27
JSON . stringify ( value ) ;
@@ -35,6 +31,37 @@ const getStories = async (window) => {
35
31
}
36
32
} ;
37
33
34
+ if ( window . __STORYBOOK_PREVIEW__ && window . __STORYBOOK_PREVIEW__ . extract ) {
35
+ // New official API to extract stories from preview
36
+ await window . __STORYBOOK_PREVIEW__ . extract ( ) ;
37
+
38
+ // Deprecated, will be removed in V9
39
+ const stories = window . __STORYBOOK_PREVIEW__ . storyStore . raw ( ) ;
40
+
41
+ return stories
42
+ . map ( ( component ) => ( {
43
+ id : component . id ,
44
+ kind : component . kind ,
45
+ story : component . story ,
46
+ parameters : Object . fromEntries (
47
+ Object . entries ( component . parameters || { } ) . filter (
48
+ ( [ key , value ] ) =>
49
+ ! key . startsWith ( '__' ) &&
50
+ ! blockedParams . includes ( key ) &&
51
+ isSerializable ( value )
52
+ )
53
+ ) ,
54
+ } ) )
55
+ . filter ( ( { parameters } ) => ! parameters . loki || ! parameters . loki . skip ) ;
56
+ }
57
+
58
+ if (
59
+ window . __STORYBOOK_CLIENT_API__ . storyStore &&
60
+ window . __STORYBOOK_CLIENT_API__ . storyStore . cacheAllCSFFiles
61
+ ) {
62
+ await window . __STORYBOOK_CLIENT_API__ . storyStore . cacheAllCSFFiles ( ) ;
63
+ }
64
+
38
65
return getStorybook ( )
39
66
. map ( ( component ) => ( {
40
67
id : component . id ,
0 commit comments