@@ -42,6 +42,51 @@ const DemoContextProvider = ({ children }) => {
4242 return null ;
4343 } ;
4444
45+ /**
46+ * enrich storybook mc_meta.json data with thumbnail URL and demo URLs from stories.json
47+ */
48+
49+ const applyStorybookDataToMcMeta = ( {
50+ componentData,
51+ storybookData,
52+ compId,
53+ url,
54+ } ) => {
55+ let catalogueDemoExists = false ;
56+ for ( var storyId in storybookData . stories ) {
57+ let _compName = storybookData . stories [ storyId ] . kind . split ( "/" ) ;
58+ if (
59+ typeof _compName [ 1 ] !== "undefined" &&
60+ _compName [ 1 ] === compId &&
61+ storybookData . stories [ storyId ] . name === "Catalogue Demo"
62+ ) {
63+ catalogueDemoExists = true ;
64+ }
65+ }
66+
67+ for ( storyId in storybookData . stories ) {
68+ let _storyData = storybookData . stories [ storyId ] ;
69+ let _compName = _storyData . kind . split ( "/" ) ;
70+ if ( typeof _compName [ 1 ] !== "undefined" && _compName [ 1 ] === compId ) {
71+ if (
72+ _storyData . name === "Catalogue Demo" ||
73+ ( ! catalogueDemoExists && _storyData . name === "Example Config" )
74+ ) {
75+ componentData . url = url ;
76+ componentData . demos = [ ] ;
77+ componentData . demos . push ( {
78+ name : "demo" ,
79+ url : url + "/iframe.html?id=" + _storyData . id + "&viewMode=story" ,
80+ id : _storyData . id ,
81+ } ) ;
82+ componentData . thumbnail =
83+ url + "/thumbnails/" + _compName [ 1 ] + ".png" ;
84+ }
85+ }
86+ }
87+ return componentData ;
88+ } ;
89+
4590 useEffect ( ( ) => {
4691 localStorage . setItem ( "cart" , JSON . stringify ( cartItems ) ) ;
4792 } , [ cartItems ] ) ;
@@ -78,6 +123,31 @@ const DemoContextProvider = ({ children }) => {
78123 } ) ) ( mcMetaUrls [ r ] )
79124 ) ;
80125 }
126+ for ( r = 0 , len = storybookUrls . length ; r < len ; r ++ ) {
127+ promises . push (
128+ ( ( url ) =>
129+ fetch ( url + "/stories.json" )
130+ . then ( ( res ) => {
131+ if ( ! res . ok ) {
132+ throw Error ( res . statusText ) ;
133+ }
134+ return res . json ( ) ;
135+ } )
136+ . then ( ( data ) => {
137+ let tmpData = { } ;
138+ tmpData [ url ] = data ;
139+
140+ storybookDataRef . current = {
141+ ...storybookDataRef . current ,
142+ ...tmpData ,
143+ } ;
144+ } )
145+ . catch ( ( msg ) => {
146+ console . log ( "error" ) ;
147+ console . log ( msg ) ;
148+ } ) ) ( storybookUrls [ r ] )
149+ ) ;
150+ }
81151
82152 Promise . all ( promises ) . then ( ( ) => {
83153 let componentData = { } ;
@@ -87,6 +157,15 @@ const DemoContextProvider = ({ children }) => {
87157 for ( var compId in _compObj ) {
88158 let _compData = _compObj [ compId ] ;
89159 _compData . stories = [ ] ;
160+
161+ if ( typeof storybookDataRef . current [ url ] !== "undefined" ) {
162+ _compData = applyStorybookDataToMcMeta ( {
163+ componentData : _compData ,
164+ storybookData : storybookDataRef . current [ url ] ,
165+ compId,
166+ url,
167+ } ) ;
168+ }
90169 componentDataRef . current [ url ] [ compId ] = _compData ;
91170 componentData [ compId ] = _compData ;
92171 }
@@ -132,4 +211,4 @@ DemoContextProvider.propTypes = {
132211 children : PropTypes . node . isRequired ,
133212} ;
134213
135- export default DemoContextProvider ;
214+ export default DemoContextProvider ;
0 commit comments