@storybook/manager-api 8.0.0-rc.3 → 8.0.0-rc.5

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/dist/index.d.ts CHANGED
@@ -386,7 +386,7 @@ interface SubAPI$6 {
386
386
  * @param {string} id - The ID of the composed ref.
387
387
  * @param {API_ComposedRefUpdate} ref - The update object for the composed ref.
388
388
  */
389
- updateRef: (id: string, ref: API_ComposedRefUpdate) => void;
389
+ updateRef: (id: string, ref: API_ComposedRefUpdate) => Promise<void>;
390
390
  /**
391
391
  * Gets all composed refs.
392
392
  * @returns {API_Refs} - The composed refs object.
@@ -403,7 +403,7 @@ interface SubAPI$6 {
403
403
  * @param {string} id - The ID of the composed ref.
404
404
  * @param {string} url - The new URL for the composed ref.
405
405
  */
406
- changeRefVersion: (id: string, url: string) => void;
406
+ changeRefVersion: (id: string, url: string) => Promise<void>;
407
407
  /**
408
408
  * Changes the state of a composed ref by its ID and previewInitialized flag.
409
409
  * @param {string} id - The ID of the composed ref.
package/dist/index.js CHANGED
@@ -2,7 +2,7 @@
2
2
  Invalid part '${name}', leading to id === parentId ('${id}'), inside title '${title}'
3
3
 
4
4
  Did you create a path that uses the separator char accidentally, such as 'Vue <docs/>' where '/' is a separator char? See https://github.com/storybookjs/storybook/issues/6128
5
- `);return list.push(id),list},[]);return paths.forEach((id,idx)=>{let childId=paths[idx+1]||item.id;root.length&&idx===0?acc[id]=merge_default(acc[id]||{},{type:"root",id,name:names[idx],depth:idx,renderLabel,startCollapsed:collapsedRoots.includes(id),children:[childId]}):(!acc[id]||acc[id].type==="component")&&idx===paths.length-1?acc[id]=merge_default(acc[id]||{},{type:"component",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}}):acc[id]=merge_default(acc[id]||{},{type:"group",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}})}),acc[item.id]={type:"story",...item,depth:paths.length,parent:paths[paths.length-1],renderLabel,prepared:!!item.parameters},acc},{});function addItem(acc,item){return acc[item.id]||(acc[item.id]=item,(item.type==="root"||item.type==="group"||item.type==="component")&&item.children.forEach(childId=>addItem(acc,storiesHashOutOfOrder[childId]))),acc}let orphanHash=Object.values(storiesHashOutOfOrder).filter(i=>i.type!=="root"&&!i.parent).reduce(addItem,{});return Object.values(storiesHashOutOfOrder).filter(i=>i.type==="root").reduce(addItem,orphanHash)},addPreparedStories=(newHash,oldHash)=>oldHash?Object.fromEntries(Object.entries(newHash).map(([id,newEntry])=>{let oldEntry=oldHash[id];return newEntry.type==="story"&&oldEntry?.type==="story"&&oldEntry.prepared?[id,{...oldEntry,...newEntry,prepared:!0}]:[id,newEntry]})):newHash,getComponentLookupList=(0,import_memoizerific.default)(1)(hash=>Object.entries(hash).reduce((acc,i)=>{let value=i[1];return value.type==="component"&&acc.push([...value.children]),acc},[])),getStoriesLookupList=(0,import_memoizerific.default)(1)(hash=>Object.keys(hash).filter(k=>["story","docs"].includes(hash[k].type)));var{location,fetch}=import_global.global,getSourceType=(source,refId)=>{let{origin:localOrigin,pathname:localPathname}=location,{origin:sourceOrigin,pathname:sourcePathname}=new URL(source),localFull=`${localOrigin+localPathname}`.replace("/iframe.html","").replace(/\/$/,""),sourceFull=`${sourceOrigin+sourcePathname}`.replace("/iframe.html","").replace(/\/$/,"");return localFull===sourceFull?["local",sourceFull]:refId||source?["external",sourceFull]:[null,null]},defaultStoryMapper=(b,a)=>({...a,kind:a.kind.replace("|","/")}),addRefIds=(input,ref)=>Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:{...item,refId:ref.id}}),{});async function handleRequest(request){if(!request)return{};try{let response=await request;if(response===!1||response===!0)throw new Error("Unexpected boolean response");if(!response.ok)throw new Error(`Unexpected response not OK: ${response.statusText}`);let json=await response.json();return json.entries||json.stories?{storyIndex:json}:json}catch(err){return{indexError:err}}}var parseUrl=url=>{let credentialsRegex=/https?:\/\/(.+:.+)@/,cleanUrl=url,authorization,[,credentials]=url.match(credentialsRegex)||[];return credentials&&(cleanUrl=url.replace(`${credentials}@`,""),authorization=btoa(`${credentials}`)),{url:cleanUrl,authorization}},map=(input,ref,options)=>{let{storyMapper}=options;return storyMapper?Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:storyMapper(ref,item)}),{}):input},init6=({store:store2,provider,singleStory,docsOptions={}},{runCheck=!0}={})=>{let api={findRef:source=>{let refs2=api.getRefs();return Object.values(refs2).find(({url})=>url.match(source))},changeRefVersion:(id,url)=>{let{versions,title}=api.getRefs()[id],ref={id,url,versions,title,index:{},expanded:!0};api.setRef(id,{...ref,type:"unknown"},!1),api.checkRef(ref)},changeRefState:(id,previewInitialized)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,previewInitialized},store2.setState({refs:updated})},checkRef:async ref=>{let{id,url,version:version2,type}=ref,isPublic=type==="server-checked",loadedData={},query=version2?`?version=${version2}`:"",credentials=isPublic?"omit":"include",urlParseResult=parseUrl(url),headers={Accept:"application/json"};urlParseResult.authorization&&Object.assign(headers,{Authorization:`Basic ${urlParseResult.authorization}`});let[indexResult,storiesResult]=await Promise.all(["index.json","stories.json"].map(async file=>handleRequest(fetch(`${urlParseResult.url}/${file}${query}`,{headers,credentials}))));if(!indexResult.indexError||!storiesResult.indexError){let metadata=await handleRequest(fetch(`${urlParseResult.url}/metadata.json${query}`,{headers,credentials,cache:"no-cache"}).catch(()=>!1));Object.assign(loadedData,{...indexResult.indexError?storiesResult:indexResult,...!metadata.indexError&&metadata})}else isPublic||(loadedData.indexError={message:import_ts_dedent2.dedent`
5
+ `);return list.push(id),list},[]);return paths.forEach((id,idx)=>{let childId=paths[idx+1]||item.id;root.length&&idx===0?acc[id]=merge_default(acc[id]||{},{type:"root",id,name:names[idx],depth:idx,renderLabel,startCollapsed:collapsedRoots.includes(id),children:[childId]}):(!acc[id]||acc[id].type==="component")&&idx===paths.length-1?acc[id]=merge_default(acc[id]||{},{type:"component",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}}):acc[id]=merge_default(acc[id]||{},{type:"group",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}})}),acc[item.id]={type:"story",...item,depth:paths.length,parent:paths[paths.length-1],renderLabel,prepared:!!item.parameters},acc},{});function addItem(acc,item){return acc[item.id]||(acc[item.id]=item,(item.type==="root"||item.type==="group"||item.type==="component")&&item.children.forEach(childId=>addItem(acc,storiesHashOutOfOrder[childId]))),acc}let orphanHash=Object.values(storiesHashOutOfOrder).filter(i=>i.type!=="root"&&!i.parent).reduce(addItem,{});return Object.values(storiesHashOutOfOrder).filter(i=>i.type==="root").reduce(addItem,orphanHash)},addPreparedStories=(newHash,oldHash)=>oldHash?Object.fromEntries(Object.entries(newHash).map(([id,newEntry])=>{let oldEntry=oldHash[id];return newEntry.type==="story"&&oldEntry?.type==="story"&&oldEntry.prepared?[id,{...oldEntry,...newEntry,prepared:!0}]:[id,newEntry]})):newHash,getComponentLookupList=(0,import_memoizerific.default)(1)(hash=>Object.entries(hash).reduce((acc,i)=>{let value=i[1];return value.type==="component"&&acc.push([...value.children]),acc},[])),getStoriesLookupList=(0,import_memoizerific.default)(1)(hash=>Object.keys(hash).filter(k=>["story","docs"].includes(hash[k].type)));var{location,fetch}=import_global.global,getSourceType=(source,refId)=>{let{origin:localOrigin,pathname:localPathname}=location,{origin:sourceOrigin,pathname:sourcePathname}=new URL(source),localFull=`${localOrigin+localPathname}`.replace("/iframe.html","").replace(/\/$/,""),sourceFull=`${sourceOrigin+sourcePathname}`.replace("/iframe.html","").replace(/\/$/,"");return localFull===sourceFull?["local",sourceFull]:refId||source?["external",sourceFull]:[null,null]},defaultStoryMapper=(b,a)=>({...a,kind:a.kind.replace("|","/")}),addRefIds=(input,ref)=>Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:{...item,refId:ref.id}}),{});async function handleRequest(request){if(!request)return{};try{let response=await request;if(response===!1||response===!0)throw new Error("Unexpected boolean response");if(!response.ok)throw new Error(`Unexpected response not OK: ${response.statusText}`);let json=await response.json();return json.entries||json.stories?{storyIndex:json}:json}catch(err){return{indexError:err}}}var parseUrl=url=>{let credentialsRegex=/https?:\/\/(.+:.+)@/,cleanUrl=url,authorization,[,credentials]=url.match(credentialsRegex)||[];return credentials&&(cleanUrl=url.replace(`${credentials}@`,""),authorization=btoa(`${credentials}`)),{url:cleanUrl,authorization}},map=(input,ref,options)=>{let{storyMapper}=options;return storyMapper?Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:storyMapper(ref,item)}),{}):input},init6=({store:store2,provider,singleStory,docsOptions={}},{runCheck=!0}={})=>{let api={findRef:source=>{let refs2=api.getRefs();return Object.values(refs2).find(({url})=>url.match(source))},changeRefVersion:async(id,url)=>{let{versions,title}=api.getRefs()[id],ref={id,url,versions,title,index:{},expanded:!0};await api.setRef(id,{...ref,type:"unknown"},!1),await api.checkRef(ref)},changeRefState:(id,previewInitialized)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,previewInitialized},store2.setState({refs:updated})},checkRef:async ref=>{let{id,url,version:version2,type}=ref,isPublic=type==="server-checked",loadedData={},query=version2?`?version=${version2}`:"",credentials=isPublic?"omit":"include",urlParseResult=parseUrl(url),headers={Accept:"application/json"};urlParseResult.authorization&&Object.assign(headers,{Authorization:`Basic ${urlParseResult.authorization}`});let[indexResult,storiesResult]=await Promise.all(["index.json","stories.json"].map(async file=>handleRequest(fetch(`${urlParseResult.url}/${file}${query}`,{headers,credentials}))));if(!indexResult.indexError||!storiesResult.indexError){let metadata=await handleRequest(fetch(`${urlParseResult.url}/metadata.json${query}`,{headers,credentials,cache:"no-cache"}).catch(()=>!1));Object.assign(loadedData,{...indexResult.indexError?storiesResult:indexResult,...!metadata.indexError&&metadata})}else isPublic||(loadedData.indexError={message:import_ts_dedent2.dedent`
6
6
  Error: Loading of ref failed
7
7
  at fetch (lib/api/src/modules/refs.ts)
8
8
 
@@ -12,4 +12,4 @@
12
12
  it's possible a CORS error happened.
13
13
 
14
14
  Please check your dev-tools network tab.
15
- `});let versions=ref.versions&&Object.keys(ref.versions).length?ref.versions:loadedData.versions;await api.setRef(id,{id,url:urlParseResult.url,...loadedData,...versions?{versions}:{},type:loadedData.storyIndex?"lazy":"auto-inject"})},getRefs:()=>{let{refs:refs2={}}=store2.getState();return refs2},setRef:(id,{storyIndex,setStoriesData,...rest},ready=!1)=>{if(singleStory)return;let internal_index,index,{filters}=store2.getState(),{storyMapper=defaultStoryMapper}=provider.getConfig(),ref=api.getRefs()[id];(storyIndex||setStoriesData)&&(internal_index=setStoriesData?transformSetStoriesStoryDataToPreparedStoryIndex(map(setStoriesData,ref,{storyMapper})):storyIndex,index=transformStoryIndexToStoriesHash(storyIndex,{provider,docsOptions,filters,status:{}})),index&&(index=addRefIds(index,ref)),api.updateRef(id,{...ref,...rest,index,internal_index})},updateRef:(id,data)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,...data};let ordered=Object.keys(initialState).reduce((obj,key)=>(obj[key]=updated[key],obj),{});store2.setState({refs:ordered})}},refs=!singleStory&&import_global.global.REFS||{},initialState=refs;return runCheck&&Object.entries(refs).forEach(([id,ref])=>{api.checkRef({...ref,stories:{}})}),{api,state:{refs:initialState}}};var getEventMetadata=(context,fullAPI)=>{let{source,refId,type}=context,[sourceType,sourceLocation]=getSourceType(source,refId),ref;(refId||sourceType==="external")&&(ref=refId&&fullAPI.getRefs()[refId]?fullAPI.getRefs()[refId]:fullAPI.findRef(sourceLocation));let meta={source,sourceType,sourceLocation,refId,ref,type};switch(!0){case typeof refId=="string":case sourceType==="local":case sourceType==="external":return meta;default:return import_client_logger2.logger.warn(`Received a ${type} frame that was not configured as a ref`),null}};var{fetch:fetch2}=import_global2.global,STORY_INDEX_PATH="./index.json",removedOptions=["enableShortcuts","theme","showRoots"];function removeRemovedOptions(options){if(!options||typeof options=="string")return options;let result={...options};return removedOptions.forEach(option=>{option in result&&delete result[option]}),result}var init7=({fullAPI,store:store2,navigate,provider,storyId:initialStoryId,viewMode:initialViewMode,docsOptions={}})=>{let api={storyId:import_csf2.toId,getData:(storyId,refId)=>{let result=api.resolveStory(storyId,refId);if(result?.type==="story"||result?.type==="docs")return result},isPrepared:(storyId,refId)=>{let data=api.getData(storyId,refId);return data?data.type==="story"?data.prepared:!0:!1},resolveStory:(storyId,refId)=>{let{refs,index}=store2.getState();if(!(refId&&!refs[refId]))return refId?refs[refId].index?refs[refId].index[storyId]:void 0:index?index[storyId]:void 0},getCurrentStoryData:()=>{let{storyId,refId}=store2.getState();return api.getData(storyId,refId)},getParameters:(storyIdOrCombo,parameterName)=>{let{storyId,refId}=typeof storyIdOrCombo=="string"?{storyId:storyIdOrCombo,refId:void 0}:storyIdOrCombo,data=api.getData(storyId,refId);if(["story","docs"].includes(data?.type)){let{parameters}=data;if(parameters)return parameterName?parameters[parameterName]:parameters}return null},getCurrentParameter:parameterName=>{let{storyId,refId}=store2.getState();return api.getParameters({storyId,refId},parameterName)||void 0},jumpToComponent:direction=>{let{index,storyId,refs,refId}=store2.getState();if(!api.getData(storyId,refId))return;let hash=refId?refs[refId].index||{}:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!0);result&&api.selectStory(result,void 0,{ref:refId})},jumpToStory:direction=>{let{index,storyId,refs,refId}=store2.getState(),story=api.getData(storyId,refId);if(!story)return;let hash=story.refId?refs[story.refId].index:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!1);result&&api.selectStory(result,void 0,{ref:refId})},selectFirstStory:()=>{let{index}=store2.getState();if(!index)return;let firstStory=Object.keys(index).find(id=>index[id].type==="story");if(firstStory){api.selectStory(firstStory);return}navigate("/")},selectStory:(titleOrId=void 0,name=void 0,options={})=>{let{ref}=options,{storyId,index,refs}=store2.getState(),hash=ref?refs[ref].index:index,kindSlug=storyId?.split("--",2)[0];if(hash)if(name)if(titleOrId){let id=ref?`${ref}_${(0,import_csf2.toId)(titleOrId,name)}`:(0,import_csf2.toId)(titleOrId,name);if(hash[id])api.selectStory(id,void 0,options);else{let entry=hash[(0,import_csf2.sanitize)(titleOrId)];if(entry?.type==="component"){let foundId=entry.children.find(childId=>hash[childId].name===name);foundId&&api.selectStory(foundId,void 0,options)}}}else{let id=(0,import_csf2.toId)(kindSlug,name);api.selectStory(id,void 0,options)}else{let entry=titleOrId?hash[titleOrId]||hash[(0,import_csf2.sanitize)(titleOrId)]:hash[kindSlug];if(!entry)throw new Error(`Unknown id or title: '${titleOrId}'`);store2.setState({settings:{...store2.getState().settings,lastTrackedStoryId:entry.id}});let leafEntry=api.findLeafEntry(hash,entry.id),fullId=leafEntry.refId?`${leafEntry.refId}_${leafEntry.id}`:leafEntry.id;navigate(`/${leafEntry.type}/${fullId}`)}},findLeafEntry(index,storyId){let entry=index[storyId];if(entry.type==="docs"||entry.type==="story")return entry;let childStoryId=entry.children[0];return api.findLeafEntry(index,childStoryId)},findLeafStoryId(index,storyId){return api.findLeafEntry(index,storyId)?.id},findSiblingStoryId(storyId,index,direction,toSiblingGroup){if(toSiblingGroup){let lookupList2=getComponentLookupList(index),position2=lookupList2.findIndex(i=>i.includes(storyId));return position2===lookupList2.length-1&&direction>0||position2===0&&direction<0?void 0:lookupList2[position2+direction]?lookupList2[position2+direction][0]:void 0}let lookupList=getStoriesLookupList(index),position=lookupList.indexOf(storyId);if(!(position===lookupList.length-1&&direction>0)&&!(position===0&&direction<0))return lookupList[position+direction]},updateStoryArgs:(story,updatedArgs)=>{let{id:storyId,refId}=story;provider.channel?.emit(import_core_events.UPDATE_STORY_ARGS,{storyId,updatedArgs,options:{target:refId}})},resetStoryArgs:(story,argNames)=>{let{id:storyId,refId}=story;provider.channel?.emit(import_core_events.RESET_STORY_ARGS,{storyId,argNames,options:{target:refId}})},fetchIndex:async()=>{try{let result=await fetch2(STORY_INDEX_PATH);if(result.status!==200)throw new Error(await result.text());let storyIndex=await result.json();if(storyIndex.v<3){import_client_logger3.logger.warn(`Skipping story index with version v${storyIndex.v}, awaiting SET_STORIES.`);return}await api.setIndex(storyIndex)}catch(err){await store2.setState({indexError:err})}},setIndex:async input=>{let{index:oldHash,status,filters}=store2.getState(),newHash=transformStoryIndexToStoriesHash(input,{provider,docsOptions,status,filters}),output=addPreparedStories(newHash,oldHash);await store2.setState({internal_index:input,index:output,indexError:void 0})},updateStory:async(storyId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[storyId]={...index[storyId],...update2},await fullAPI.updateRef(refId,{index})}else{let{index}=store2.getState();if(!index)return;index[storyId]={...index[storyId],...update2},await store2.setState({index})}},updateDocs:async(docsId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[docsId]={...index[docsId],...update2},await fullAPI.updateRef(refId,{index})}else{let{index}=store2.getState();if(!index)return;index[docsId]={...index[docsId],...update2},await store2.setState({index})}},setPreviewInitialized:async ref=>{ref?fullAPI.updateRef(ref.id,{previewInitialized:!0}):store2.setState({previewInitialized:!0})},experimental_updateStatus:async(id,input)=>{let{status,internal_index:index}=store2.getState(),newStatus={...status},update2=typeof input=="function"?input(status):input;if(Object.keys(update2).length!==0&&(Object.entries(update2).forEach(([storyId,value])=>{newStatus[storyId]={...newStatus[storyId]||{}},value===null?delete newStatus[storyId][id]:newStatus[storyId][id]=value,Object.keys(newStatus[storyId]).length===0&&delete newStatus[storyId]}),await store2.setState({status:newStatus},{persistence:"session"}),index)){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0)})}},experimental_setFilter:async(id,filterFunction)=>{let{internal_index:index}=store2.getState();if(await store2.setState({filters:{...store2.getState().filters,[id]:filterFunction}}),index){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0)})}}};provider.channel?.on(import_core_events.STORY_SPECIFIED,function({storyId,viewMode}){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let state=store2.getState(),isCanvasRoute=state.path==="/"||state.viewMode==="story"||state.viewMode==="docs",stateHasSelection=state.viewMode&&state.storyId,stateSelectionDifferent=state.viewMode!==viewMode||state.storyId!==storyId,{type}=state.index?.[state.storyId]||{};isCanvasRoute&&(stateHasSelection&&stateSelectionDifferent&&!(type==="root"||type==="component"||type==="group")?provider.channel?.emit(import_core_events.SET_CURRENT_STORY,{storyId:state.storyId,viewMode:state.viewMode}):stateSelectionDifferent&&navigate(`/${viewMode}/${storyId}`))}}),provider.channel?.on(import_core_events.CURRENT_STORY_WAS_SET,function(){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref)}),provider.channel?.on(import_core_events.STORY_CHANGED,function(){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let options=api.getCurrentParameter("options");options&&fullAPI.setOptions(removeRemovedOptions(options))}}),provider.channel?.on(import_core_events.STORY_PREPARED,function({id,...update2}){let{ref,sourceType}=getEventMetadata(this,fullAPI);if(api.updateStory(id,{...update2,prepared:!0},ref),!ref&&!store2.getState().hasCalledSetOptions){let{options}=update2.parameters;fullAPI.setOptions(removeRemovedOptions(options)),store2.setState({hasCalledSetOptions:!0})}if(sourceType==="local"){let{storyId,index,refId}=store2.getState();if(!index)return;let toBePreloaded=Array.from(new Set([api.findSiblingStoryId(storyId,index,1,!0),api.findSiblingStoryId(storyId,index,-1,!0)])).filter(Boolean);provider.channel?.emit(import_core_events.PRELOAD_ENTRIES,{ids:toBePreloaded,options:{target:refId}})}}),provider.channel?.on(import_core_events.DOCS_PREPARED,function({id,...update2}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(id,{...update2,prepared:!0},ref)}),provider.channel?.on(import_core_events.SET_INDEX,function(index){let{ref}=getEventMetadata(this,fullAPI);if(ref)fullAPI.setRef(ref.id,{...ref,storyIndex:index},!0);else{api.setIndex(index);let options=api.getCurrentParameter("options");fullAPI.setOptions(removeRemovedOptions(options))}}),provider.channel?.on(import_core_events.SET_STORIES,function(data){let{ref}=getEventMetadata(this,fullAPI),setStoriesData=data.v?denormalizeStoryParameters(data):data.stories;if(ref)fullAPI.setRef(ref.id,{...ref,setStoriesData},!0);else throw new Error("Cannot call SET_STORIES for local frame")}),provider.channel?.on(import_core_events.SELECT_STORY,function({kind,title=kind,story,name=story,storyId,...rest}){let{ref}=getEventMetadata(this,fullAPI);ref?fullAPI.selectStory(storyId||title,name,{...rest,ref:ref.id}):fullAPI.selectStory(storyId||title,name,rest)}),provider.channel?.on(import_core_events.STORY_ARGS_UPDATED,function({storyId,args}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(storyId,{args},ref)}),provider.channel?.on(import_core_events.CONFIG_ERROR,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref)}),provider.channel?.on(import_core_events.STORY_MISSING,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref)}),provider.channel?.on(import_core_events.SET_CONFIG,()=>{let config2=provider.getConfig();config2?.sidebar?.filters&&store2.setState({filters:{...store2.getState().filters,...config2?.sidebar?.filters}})});let config=provider.getConfig();return{api,state:{storyId:initialStoryId,viewMode:initialViewMode,hasCalledSetOptions:!1,previewInitialized:!1,status:{},filters:config?.sidebar?.filters||{}},init:async()=>{provider.channel?.on(import_core_events.STORY_INDEX_INVALIDATED,()=>api.fetchIndex()),await api.fetchIndex()}}};var layout_exports={};__export(layout_exports,{ActiveTabs:()=>ActiveTabs,defaultLayoutState:()=>defaultLayoutState,focusableUIElements:()=>focusableUIElements,init:()=>init8});var import_global3=require("@storybook/global"),import_pick=__toESM(require("lodash/pick.js")),import_dequal=require("dequal"),import_create=require("@storybook/theming/create"),import_core_events2=require("@storybook/core-events");var{document}=import_global3.global,ActiveTabs={SIDEBAR:"sidebar",CANVAS:"canvas",ADDONS:"addons"},defaultLayoutState={ui:{enableShortcuts:!0},layout:{initialActive:ActiveTabs.CANVAS,showToolbar:!0,navSize:300,bottomPanelHeight:300,rightPanelWidth:400,recentVisibleSizes:{navSize:300,bottomPanelHeight:300,rightPanelWidth:400},panelPosition:"bottom",showTabs:!0},selectedPanel:void 0,theme:(0,import_create.create)()},focusableUIElements={storySearchField:"storybook-explorer-searchfield",storyListMenu:"storybook-explorer-menu",storyPanelRoot:"storybook-panel-root"},getIsNavShown=state=>state.layout.navSize>0,getIsPanelShown=state=>{let{bottomPanelHeight,rightPanelWidth,panelPosition}=state.layout;return panelPosition==="bottom"&&bottomPanelHeight>0||panelPosition==="right"&&rightPanelWidth>0},getIsFullscreen=state=>!getIsNavShown(state)&&!getIsPanelShown(state),getRecentVisibleSizes=layoutState=>({navSize:layoutState.navSize>0?layoutState.navSize:layoutState.recentVisibleSizes.navSize,bottomPanelHeight:layoutState.bottomPanelHeight>0?layoutState.bottomPanelHeight:layoutState.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:layoutState.rightPanelWidth>0?layoutState.rightPanelWidth:layoutState.recentVisibleSizes.rightPanelWidth}),init8=({store:store2,provider,singleStory})=>{let api={toggleFullscreen(nextState){return store2.setState(state=>{let isFullscreen=getIsFullscreen(state),shouldFullscreen=typeof nextState=="boolean"?nextState:!isFullscreen;return shouldFullscreen===isFullscreen?{layout:state.layout}:shouldFullscreen?{layout:{...state.layout,navSize:0,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}:{layout:{...state.layout,navSize:state.singleStory?0:state.layout.recentVisibleSizes.navSize,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"session"})},togglePanel(nextState){return store2.setState(state=>{let isPanelShown=getIsPanelShown(state),shouldShowPanel=typeof nextState=="boolean"?nextState:!isPanelShown;return shouldShowPanel===isPanelShown?{layout:state.layout}:shouldShowPanel?{layout:{...state.layout,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}:{layout:{...state.layout,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},togglePanelPosition(position){return store2.setState(state=>{let nextPosition=position||(state.layout.panelPosition==="right"?"bottom":"right");return{layout:{...state.layout,panelPosition:nextPosition,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"permanent"})},toggleNav(nextState){return store2.setState(state=>{if(state.singleStory)return{layout:state.layout};let isNavShown=getIsNavShown(state),shouldShowNav=typeof nextState=="boolean"?nextState:!isNavShown;return shouldShowNav===isNavShown?{layout:state.layout}:shouldShowNav?{layout:{...state.layout,navSize:state.layout.recentVisibleSizes.navSize}}:{layout:{...state.layout,navSize:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},toggleToolbar(toggled){return store2.setState(state=>{let value=typeof toggled<"u"?toggled:!state.layout.showToolbar;return{layout:{...state.layout,showToolbar:value}}},{persistence:"session"})},setSizes({navSize,bottomPanelHeight,rightPanelWidth}){return store2.setState(state=>{let nextLayoutState={...state.layout,navSize:navSize??state.layout.navSize,bottomPanelHeight:bottomPanelHeight??state.layout.bottomPanelHeight,rightPanelWidth:rightPanelWidth??state.layout.rightPanelWidth};return{layout:{...nextLayoutState,recentVisibleSizes:getRecentVisibleSizes(nextLayoutState)}}},{persistence:"session"})},focusOnUIElement(elementId,select){if(!elementId)return;let element=document.getElementById(elementId);element&&(element.focus(),select&&element.select())},getInitialOptions(){let{theme,selectedPanel,...options}=provider.getConfig();return{...defaultLayoutState,layout:{...defaultLayoutState.layout,...(0,import_pick.default)(options,Object.keys(defaultLayoutState.layout)),...singleStory&&{navSize:0}},ui:{...defaultLayoutState.ui,...(0,import_pick.default)(options,Object.keys(defaultLayoutState.ui))},selectedPanel:selectedPanel||defaultLayoutState.selectedPanel,theme:theme||defaultLayoutState.theme}},getIsFullscreen(){return getIsFullscreen(store2.getState())},getIsPanelShown(){return getIsPanelShown(store2.getState())},getIsNavShown(){return getIsNavShown(store2.getState())},setOptions:options=>{let{layout,ui,selectedPanel,theme}=store2.getState();if(!options)return;let updatedLayout={...layout,...options.layout,...(0,import_pick.default)(options,Object.keys(layout)),...singleStory&&{navSize:0}},updatedUi={...ui,...options.ui,...(0,import_pick.default)(options,Object.keys(ui))},updatedTheme={...theme,...options.theme},modification={};(0,import_dequal.dequal)(ui,updatedUi)||(modification.ui=updatedUi),(0,import_dequal.dequal)(layout,updatedLayout)||(modification.layout=updatedLayout),options.selectedPanel&&!(0,import_dequal.dequal)(selectedPanel,options.selectedPanel)&&(modification.selectedPanel=options.selectedPanel),Object.keys(modification).length&&store2.setState(modification,{persistence:"permanent"}),(0,import_dequal.dequal)(theme,updatedTheme)||store2.setState({theme:updatedTheme})}},persisted=(0,import_pick.default)(store2.getState(),"layout","selectedPanel");return provider.channel?.on(import_core_events2.SET_CONFIG,()=>{api.setOptions(merge_default(api.getInitialOptions(),persisted))}),{api,state:merge_default(api.getInitialOptions(),persisted)}};var shortcuts_exports={};__export(shortcuts_exports,{controlOrMetaKey:()=>controlOrMetaKey2,defaultShortcuts:()=>defaultShortcuts,init:()=>init9,isMacLike:()=>isMacLike2,keys:()=>keys});var import_global5=require("@storybook/global"),import_core_events3=require("@storybook/core-events");var import_global4=require("@storybook/global"),{navigator}=import_global4.global,isMacLike=()=>navigator&&navigator.platform?!!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaSymbol=()=>isMacLike()?"\u2318":"ctrl",controlOrMetaKey=()=>isMacLike()?"meta":"control",optionOrAltSymbol=()=>isMacLike()?"\u2325":"alt",isShortcutTaken=(arr1,arr2)=>JSON.stringify(arr1)===JSON.stringify(arr2),eventToShortcut=e=>{if(["Meta","Alt","Control","Shift"].includes(e.key))return null;let keys2=[];if(e.altKey&&keys2.push("alt"),e.ctrlKey&&keys2.push("control"),e.metaKey&&keys2.push("meta"),e.shiftKey&&keys2.push("shift"),e.key&&e.key.length===1&&e.key!==" "){let key=e.key.toUpperCase(),code=e.code?.toUpperCase().replace("KEY","").replace("DIGIT","");code&&code.length===1&&code!==key?keys2.push([key,code]):keys2.push(key)}return e.key===" "&&keys2.push("space"),e.key==="Escape"&&keys2.push("escape"),e.key==="ArrowRight"&&keys2.push("ArrowRight"),e.key==="ArrowDown"&&keys2.push("ArrowDown"),e.key==="ArrowUp"&&keys2.push("ArrowUp"),e.key==="ArrowLeft"&&keys2.push("ArrowLeft"),keys2.length>0?keys2:null},shortcutMatchesShortcut=(inputShortcut,shortcut)=>!inputShortcut||!shortcut||(inputShortcut.join("").startsWith("shift/")&&inputShortcut.shift(),inputShortcut.length!==shortcut.length)?!1:!inputShortcut.find((input,i)=>Array.isArray(input)?!input.includes(shortcut[i]):input!==shortcut[i]),eventMatchesShortcut=(e,shortcut)=>shortcutMatchesShortcut(eventToShortcut(e),shortcut),keyToSymbol=key=>key==="alt"?optionOrAltSymbol():key==="control"?"\u2303":key==="meta"?"\u2318":key==="shift"?"\u21E7\u200B":key==="Enter"||key==="Backspace"||key==="Esc"||key==="escape"?"":key===" "?"SPACE":key==="ArrowUp"?"\u2191":key==="ArrowDown"?"\u2193":key==="ArrowLeft"?"\u2190":key==="ArrowRight"?"\u2192":key.toUpperCase(),shortcutToHumanString=shortcut=>shortcut.map(keyToSymbol).join(" ");var{navigator:navigator2,document:document2}=import_global5.global,isMacLike2=()=>navigator2&&navigator2.platform?!!navigator2.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaKey2=()=>isMacLike2()?"meta":"control";function keys(o){return Object.keys(o)}var defaultShortcuts=Object.freeze({fullScreen:["alt","F"],togglePanel:["alt","A"],panelPosition:["alt","D"],toggleNav:["alt","S"],toolbar:["alt","T"],search:[controlOrMetaKey2(),"K"],focusNav:["1"],focusIframe:["2"],focusPanel:["3"],prevComponent:["alt","ArrowUp"],nextComponent:["alt","ArrowDown"],prevStory:["alt","ArrowLeft"],nextStory:["alt","ArrowRight"],shortcutsPage:[controlOrMetaKey2(),"shift",","],aboutPage:[controlOrMetaKey2(),","],escape:["escape"],collapseAll:[controlOrMetaKey2(),"shift","ArrowUp"],expandAll:[controlOrMetaKey2(),"shift","ArrowDown"],remount:["alt","R"]}),addonsShortcuts={};function focusInInput(event){let target=event.target;return/input|textarea/i.test(target.tagName)||target.getAttribute("contenteditable")!==null}var init9=({store:store2,fullAPI,provider})=>{let api={getShortcutKeys(){return store2.getState().shortcuts},getDefaultShortcuts(){return{...defaultShortcuts,...api.getAddonsShortcutDefaults()}},getAddonsShortcuts(){return addonsShortcuts},getAddonsShortcutLabels(){let labels={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{label}])=>{labels[actionName]=label}),labels},getAddonsShortcutDefaults(){let defaults={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{defaultShortcut}])=>{defaults[actionName]=defaultShortcut}),defaults},async setShortcuts(shortcuts){return await store2.setState({shortcuts},{persistence:"permanent"}),shortcuts},async restoreAllDefaultShortcuts(){return api.setShortcuts(api.getDefaultShortcuts())},async setShortcut(action,value){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[action]:value}),value},async setAddonShortcut(addon,shortcut){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[`${addon}-${shortcut.actionName}`]:shortcut.defaultShortcut}),addonsShortcuts[`${addon}-${shortcut.actionName}`]=shortcut,shortcut},async restoreDefaultShortcut(action){let defaultShortcut=api.getDefaultShortcuts()[action];return api.setShortcut(action,defaultShortcut)},handleKeydownEvent(event){let shortcut=eventToShortcut(event),shortcuts=api.getShortcutKeys(),matchedFeature=keys(shortcuts).find(feature=>shortcutMatchesShortcut(shortcut,shortcuts[feature]));matchedFeature&&api.handleShortcutFeature(matchedFeature,event)},handleShortcutFeature(feature,event){let{ui:{enableShortcuts},storyId}=store2.getState();if(enableShortcuts)switch(event?.preventDefault&&event.preventDefault(),feature){case"escape":{fullAPI.getIsFullscreen()?fullAPI.toggleFullscreen(!1):fullAPI.getIsNavShown()&&fullAPI.toggleNav(!0);break}case"focusNav":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),fullAPI.focusOnUIElement(focusableUIElements.storyListMenu);break}case"search":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),setTimeout(()=>{fullAPI.focusOnUIElement(focusableUIElements.storySearchField,!0)},0);break}case"focusIframe":{let element=document2.getElementById("storybook-preview-iframe");if(element)try{element.contentWindow.focus()}catch{}break}case"focusPanel":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.focusOnUIElement(focusableUIElements.storyPanelRoot);break}case"nextStory":{fullAPI.jumpToStory(1);break}case"prevStory":{fullAPI.jumpToStory(-1);break}case"nextComponent":{fullAPI.jumpToComponent(1);break}case"prevComponent":{fullAPI.jumpToComponent(-1);break}case"fullScreen":{fullAPI.toggleFullscreen();break}case"togglePanel":{fullAPI.togglePanel();break}case"toggleNav":{fullAPI.toggleNav();break}case"toolbar":{fullAPI.toggleToolbar();break}case"panelPosition":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.togglePanelPosition();break}case"aboutPage":{fullAPI.navigate("/settings/about");break}case"shortcutsPage":{fullAPI.navigate("/settings/shortcuts");break}case"collapseAll":{fullAPI.collapseAll();break}case"expandAll":{fullAPI.expandAll();break}case"remount":{fullAPI.emit(import_core_events3.FORCE_REMOUNT,{storyId});break}default:addonsShortcuts[feature].action();break}}},{shortcuts:persistedShortcuts=defaultShortcuts}=store2.getState(),state={shortcuts:keys(defaultShortcuts).reduce((acc,key)=>({...acc,[key]:persistedShortcuts[key]||defaultShortcuts[key]}),defaultShortcuts)};return{api,state,init:()=>{document2.addEventListener("keydown",event=>{focusInInput(event)||api.handleKeydownEvent(event)}),provider.channel?.on(import_core_events3.PREVIEW_KEYDOWN,data=>{api.handleKeydownEvent(data.event)})}}};var url_exports={};__export(url_exports,{init:()=>init10});var import_core_events4=require("@storybook/core-events"),import_router=require("@storybook/router"),import_dequal2=require("dequal"),import_global6=require("@storybook/global");var{window:globalWindow}=import_global6.global,parseBoolean=value=>{if(value==="true"||value==="1")return!0;if(value==="false"||value==="0")return!1},prevParams,initialUrlSupport=({state:{location:location2,path,viewMode,storyId:storyIdFromUrl},singleStory})=>{let{full,panel,nav,shortcuts,addonPanel,tabs,path:queryPath,...otherParams}=(0,import_router.queryFromLocation)(location2),navSize,bottomPanelHeight,rightPanelWidth;parseBoolean(full)===!0?(navSize=0,bottomPanelHeight=0,rightPanelWidth=0):parseBoolean(full)===!1&&(navSize=defaultLayoutState.layout.navSize,bottomPanelHeight=defaultLayoutState.layout.bottomPanelHeight,rightPanelWidth=defaultLayoutState.layout.rightPanelWidth),singleStory||(parseBoolean(nav)===!0&&(navSize=defaultLayoutState.layout.navSize),parseBoolean(nav)===!1&&(navSize=0)),parseBoolean(panel)===!1&&(bottomPanelHeight=0,rightPanelWidth=0);let layout={navSize,bottomPanelHeight,rightPanelWidth,panelPosition:["right","bottom"].includes(panel)?panel:void 0,showTabs:parseBoolean(tabs)},ui={enableShortcuts:parseBoolean(shortcuts)},selectedPanel=addonPanel||void 0,storyId=storyIdFromUrl,customQueryParams=(0,import_dequal2.dequal)(prevParams,otherParams)?prevParams:otherParams;return prevParams=customQueryParams,{viewMode,layout,ui,selectedPanel,location:location2,path,customQueryParams,storyId}},init10=moduleArgs=>{let{store:store2,navigate,provider,fullAPI}=moduleArgs,navigateTo=(path,queryParams={},options={})=>{let params=Object.entries(queryParams).filter(([,v])=>v).sort(([a],[b])=>a<b?-1:1).map(([k,v])=>`${k}=${v}`),to=[path,...params].join("&");return navigate(to,options)},api={getQueryParam(key){let{customQueryParams}=store2.getState();return customQueryParams?customQueryParams[key]:void 0},getUrlState(){let{path,customQueryParams,storyId,url,viewMode}=store2.getState();return{path,queryParams:customQueryParams,storyId,url,viewMode}},setQueryParams(input){let{customQueryParams}=store2.getState(),queryParams={},update2={...customQueryParams,...Object.entries(input).reduce((acc,[key,value])=>(value!==null&&(acc[key]=value),acc),queryParams)};(0,import_dequal2.dequal)(customQueryParams,update2)||(store2.setState({customQueryParams:update2}),provider.channel?.emit(import_core_events4.UPDATE_QUERY_PARAMS,update2))},applyQueryParams(input){let{path,queryParams}=api.getUrlState();navigateTo(path,{...queryParams,...input}),api.setQueryParams(input)},navigateUrl(url,options){navigate(url,{plain:!0,...options})}},updateArgsParam=()=>{let{path,queryParams,viewMode}=api.getUrlState();if(viewMode!=="story")return;let currentStory=fullAPI.getCurrentStoryData();if(currentStory?.type!=="story")return;let{args,initialArgs}=currentStory,argsString=(0,import_router.buildArgsParam)(initialArgs,args);navigateTo(path,{...queryParams,args:argsString},{replace:!0}),api.setQueryParams({args:argsString})};provider.channel?.on(import_core_events4.SET_CURRENT_STORY,()=>updateArgsParam());let handleOrId;return provider.channel?.on(import_core_events4.STORY_ARGS_UPDATED,()=>{"requestIdleCallback"in globalWindow?(handleOrId&&globalWindow.cancelIdleCallback(handleOrId),handleOrId=globalWindow.requestIdleCallback(updateArgsParam,{timeout:1e3})):(handleOrId&&clearTimeout(handleOrId),setTimeout(updateArgsParam,100))}),provider.channel?.on(import_core_events4.GLOBALS_UPDATED,({globals,initialGlobals})=>{let{path,queryParams}=api.getUrlState(),globalsString=(0,import_router.buildArgsParam)(initialGlobals,globals);navigateTo(path,{...queryParams,globals:globalsString},{replace:!0}),api.setQueryParams({globals:globalsString})}),provider.channel?.on(import_core_events4.NAVIGATE_URL,(url,options)=>{api.navigateUrl(url,options)}),{api,state:initialUrlSupport(moduleArgs)}};var versions_exports={};__export(versions_exports,{init:()=>init11});var import_global7=require("@storybook/global"),import_semver=__toESM(require_semver2()),import_memoizerific2=__toESM(require("memoizerific"));var version="8.0.0-rc.3";var{VERSIONCHECK}=import_global7.global,getVersionCheckData=(0,import_memoizerific2.default)(1)(()=>{try{return{...JSON.parse(VERSIONCHECK).data||{}}}catch{return{}}}),normalizeRendererName=renderer=>renderer.includes("vue")?"vue":renderer,init11=({store:store2})=>{let{dismissedVersionNotification}=store2.getState(),state={versions:{current:{version},...getVersionCheckData()},dismissedVersionNotification},api={getCurrentVersion:()=>{let{versions:{current}}=store2.getState();return current},getLatestVersion:()=>{let{versions:{latest,next,current}}=store2.getState();return current&&import_semver.default.prerelease(current.version)&&next?latest&&import_semver.default.gt(latest.version,next.version)?latest:next:latest},getDocsUrl:({subpath,versioned,renderer})=>{let{versions:{latest,current}}=store2.getState(),url="https://storybook.js.org/docs/";if(versioned&&current?.version&&latest?.version){let versionDiff=import_semver.default.diff(latest.version,current.version);versionDiff==="patch"||versionDiff===null||(url+=`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}/`)}if(subpath&&(url+=`${subpath}/`),renderer&&typeof import_global7.global.STORYBOOK_RENDERER<"u"){let rendererName=import_global7.global.STORYBOOK_RENDERER.split("/").pop()?.toLowerCase();rendererName&&(url+=`?renderer=${normalizeRendererName(rendererName)}`)}return url},versionUpdateAvailable:()=>{let latest=api.getLatestVersion(),current=api.getCurrentVersion();if(latest){if(!latest.version||!current.version)return!0;let actualCurrent=!!import_semver.default.prerelease(current.version)?`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}.${import_semver.default.patch(current.version)}`:current.version,diff=import_semver.default.diff(actualCurrent,latest.version);return import_semver.default.gt(latest.version,actualCurrent)&&diff!=="patch"&&!diff.includes("pre")}return!1}};return{init:async()=>{let{versions={}}=store2.getState(),{latest,next}=getVersionCheckData();await store2.setState({versions:{...versions,latest,next}})},state,api}};var whatsnew_exports={};__export(whatsnew_exports,{init:()=>init12});var import_global8=require("@storybook/global"),import_core_events5=require("@storybook/core-events"),WHATS_NEW_NOTIFICATION_ID="whats-new",init12=({fullAPI,store:store2,provider})=>{let state={whatsNewData:void 0};function setWhatsNewState(newState){store2.setState({whatsNewData:newState}),state.whatsNewData=newState}let api={isWhatsNewUnread(){return state.whatsNewData?.status==="SUCCESS"&&!state.whatsNewData.postIsRead},whatsNewHasBeenRead(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewCache({lastReadPost:state.whatsNewData.url}),setWhatsNewState({...state.whatsNewData,postIsRead:!0}),fullAPI.clearNotification(WHATS_NEW_NOTIFICATION_ID))},toggleWhatsNewNotifications(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewState({...state.whatsNewData,disableWhatsNewNotifications:!state.whatsNewData.disableWhatsNewNotifications}),provider.channel?.emit(import_core_events5.TOGGLE_WHATS_NEW_NOTIFICATIONS,{disableWhatsNewNotifications:state.whatsNewData.disableWhatsNewNotifications}))}};function getLatestWhatsNewPost(){return provider.channel?.emit(import_core_events5.REQUEST_WHATS_NEW_DATA),new Promise(resolve=>provider.channel?.once(import_core_events5.RESULT_WHATS_NEW_DATA,({data})=>resolve(data)))}function setWhatsNewCache(cache){provider.channel?.emit(import_core_events5.SET_WHATS_NEW_CACHE,cache)}return{init:async()=>{if(import_global8.global.CONFIG_TYPE!=="DEVELOPMENT")return;let whatsNewData=await getLatestWhatsNewPost();setWhatsNewState(whatsNewData);let urlState=fullAPI.getUrlState();!(urlState?.path==="/onboarding"||urlState.queryParams?.onboarding==="true")&&whatsNewData.status==="SUCCESS"&&!whatsNewData.disableWhatsNewNotifications&&whatsNewData.showNotification&&fullAPI.addNotification({id:WHATS_NEW_NOTIFICATION_ID,link:"/settings/whats-new",content:{headline:whatsNewData.excerpt,subHeadline:"Click to learn what's new in Storybook"},icon:{name:"hearthollow"},onClear({dismissed}){dismissed&&setWhatsNewCache({lastDismissedPost:whatsNewData.url})}})},state,api}};var globals_exports={};__export(globals_exports,{init:()=>init13});var import_core_events6=require("@storybook/core-events"),import_client_logger4=require("@storybook/client-logger"),import_dequal3=require("dequal");var init13=({store:store2,fullAPI,provider})=>{let api={getGlobals(){return store2.getState().globals},getGlobalTypes(){return store2.getState().globalTypes},updateGlobals(newGlobals){provider.channel?.emit(import_core_events6.UPDATE_GLOBALS,{globals:newGlobals,options:{target:"storybook-preview-iframe"}})}},state={globals:{},globalTypes:{}},updateGlobals=globals=>{let currentGlobals=store2.getState()?.globals;(0,import_dequal3.dequal)(globals,currentGlobals)||store2.setState({globals})};return provider.channel?.on(import_core_events6.GLOBALS_UPDATED,function({globals}){let{ref}=getEventMetadata(this,fullAPI);ref?import_client_logger4.logger.warn("received a GLOBALS_UPDATED from a non-local ref. This is not currently supported."):updateGlobals(globals)}),provider.channel?.on(import_core_events6.SET_GLOBALS,function({globals,globalTypes}){let{ref}=getEventMetadata(this,fullAPI),currentGlobals=store2.getState()?.globals;ref?Object.keys(globals).length>0&&import_client_logger4.logger.warn("received globals from a non-local ref. This is not currently supported."):store2.setState({globals,globalTypes}),currentGlobals&&Object.keys(currentGlobals).length!==0&&!(0,import_dequal3.dequal)(globals,currentGlobals)&&api.updateGlobals(currentGlobals)}),{api,state}};var import_global9=require("@storybook/global"),import_core_events7=require("@storybook/core-events"),import_types2=require("@storybook/types"),import_client_logger5=require("@storybook/client-logger");var import_channels=require("@storybook/channels");function mockChannel(){let transport={setHandler:()=>{},send:()=>{}};return new import_channels.Channel({transport})}var AddonStore=class{constructor(){this.loaders={};this.elements={};this.config={};this.getChannel=()=>(this.channel||this.setChannel(mockChannel()),this.channel);this.ready=()=>this.promise;this.hasChannel=()=>!!this.channel;this.setChannel=channel=>{this.channel=channel,this.resolve()};this.setConfig=value=>{Object.assign(this.config,value),this.hasChannel()?this.getChannel().emit(import_core_events7.SET_CONFIG,this.config):this.ready().then(channel=>{channel.emit(import_core_events7.SET_CONFIG,this.config)})};this.getConfig=()=>this.config;this.register=(id,callback)=>{this.loaders[id]&&import_client_logger5.logger.warn(`${id} was loaded twice, this could have bad side-effects`),this.loaders[id]=callback};this.loadAddons=api=>{Object.values(this.loaders).forEach(value=>value(api))};this.promise=new Promise(res=>{this.resolve=()=>res(this.getChannel())})}getElements(type){return this.elements[type]||(this.elements[type]={}),this.elements[type]}add(id,addon){let{type}=addon,collection=this.getElements(type);collection[id]={...addon,id}}},KEY="__STORYBOOK_ADDONS_MANAGER";function getAddonsStore(){return import_global9.global[KEY]||(import_global9.global[KEY]=new AddonStore),import_global9.global[KEY]}var addons=getAddonsStore();var{ActiveTabs:ActiveTabs2}=layout_exports;var ManagerContext=createContext({api:void 0,state:initial_state_default({})}),combineParameters=(...parameterSets)=>(0,import_mergeWith2.default)({},...parameterSets,(objValue,srcValue)=>{if(Array.isArray(srcValue))return srcValue}),ManagerProvider=class extends import_react2.Component{constructor(props){super(props);this.api={};this.initModules=()=>{this.modules.forEach(module2=>{"init"in module2&&module2.init()})};let{location:location2,path,refId,viewMode=props.docsOptions.docsMode?"docs":props.viewMode,singleStory,storyId,docsOptions,navigate}=props,store2=new Store({getState:()=>this.state,setState:(stateChange,callback)=>(this.setState(stateChange,()=>callback(this.state)),this.state)}),routeData={location:location2,path,viewMode,singleStory,storyId,refId},optionsData={docsOptions};this.state=store2.getInitialState(initial_state_default({...routeData,...optionsData}));let apiData={navigate,store:store2,provider:props.provider};this.modules=[provider_exports,channel_exports,addons_exports,layout_exports,notifications_exports,settings_exports,shortcuts_exports,stories_exports,refs_exports,globals_exports,url_exports,versions_exports,whatsnew_exports].map(m=>m.init({...routeData,...optionsData,...apiData,state:this.state,fullAPI:this.api}));let state=initial_state_default(this.state,...this.modules.map(m=>m.state)),api=Object.assign(this.api,{navigate},...this.modules.map(m=>m.api));this.state=state,this.api=api}static{this.displayName="Manager"}static getDerivedStateFromProps(props,state){return state.path!==props.path?{...state,location:props.location,path:props.path,refId:props.refId,viewMode:props.viewMode,storyId:props.storyId}:null}shouldComponentUpdate(nextProps,nextState){let prevState=this.state,prevProps=this.props;return prevState!==nextState||prevProps.path!==nextProps.path}render(){let{children}=this.props,value={state:this.state,api:this.api};return import_react2.default.createElement(EffectOnMount,{effect:this.initModules},import_react2.default.createElement(ManagerContext.Provider,{value},import_react2.default.createElement(ManagerConsumer,null,children)))}},EffectOnMount=({children,effect})=>(import_react2.default.useEffect(effect,[]),children),defaultFilter=c=>c;function ManagerConsumer({filter=defaultFilter,children}){let managerContext=(0,import_react2.useContext)(ManagerContext),renderer=(0,import_react2.useRef)(children),filterer=(0,import_react2.useRef)(filter);if(typeof renderer.current!="function")return import_react2.default.createElement(import_react2.Fragment,null,renderer.current);let comboData=filterer.current(managerContext),comboDataArray=(0,import_react2.useMemo)(()=>[...Object.entries(comboData).reduce((acc,keyval)=>acc.concat(keyval),[])],[managerContext.state]);return(0,import_react2.useMemo)(()=>{let Child=renderer.current;return import_react2.default.createElement(Child,{...comboData})},comboDataArray)}function useStorybookState(){let{state}=(0,import_react2.useContext)(ManagerContext);return{...state,get storiesHash(){return(0,import_client_logger6.deprecate)("state.storiesHash is deprecated, please use state.index"),this.index||{}},get storiesConfigured(){return(0,import_client_logger6.deprecate)("state.storiesConfigured is deprecated, please use state.previewInitialized"),this.previewInitialized},get storiesFailed(){return(0,import_client_logger6.deprecate)("state.storiesFailed is deprecated, please use state.indexError"),this.indexError}}}function useStorybookApi(){let{api}=(0,import_react2.useContext)(ManagerContext);return api}function orDefault(fromStore,defaultState){return typeof fromStore>"u"?defaultState:fromStore}var useChannel=(eventMap,deps=[])=>{let api=useStorybookApi();return(0,import_react2.useEffect)(()=>(Object.entries(eventMap).forEach(([type,listener])=>api.on(type,listener)),()=>{Object.entries(eventMap).forEach(([type,listener])=>api.off(type,listener))}),deps),api.emit};function useStoryPrepared(storyId){return useStorybookApi().isPrepared(storyId)}function useParameter(parameterKey,defaultValue){let result=useStorybookApi().getCurrentParameter(parameterKey);return orDefault(result,defaultValue)}globalThis.STORYBOOK_ADDON_STATE={};var{STORYBOOK_ADDON_STATE}=globalThis;function useSharedState(stateId,defaultState){let api=useStorybookApi(),existingState=api.getAddonState(stateId)||STORYBOOK_ADDON_STATE[stateId],state=orDefault(existingState,STORYBOOK_ADDON_STATE[stateId]?STORYBOOK_ADDON_STATE[stateId]:defaultState),quicksync=!1;state===defaultState&&defaultState!==void 0&&(STORYBOOK_ADDON_STATE[stateId]=defaultState,quicksync=!0),(0,import_react2.useEffect)(()=>{quicksync&&api.setAddonState(stateId,defaultState)},[quicksync]);let setState=async(s,options)=>{await api.setAddonState(stateId,s,options);let result=api.getAddonState(stateId);return STORYBOOK_ADDON_STATE[stateId]=result,result},allListeners=(0,import_react2.useMemo)(()=>{let stateChangeHandlers={[`${import_core_events8.SHARED_STATE_CHANGED}-client-${stateId}`]:setState,[`${import_core_events8.SHARED_STATE_SET}-client-${stateId}`]:setState},stateInitializationHandlers={[import_core_events8.SET_STORIES]:async()=>{let currentState=api.getAddonState(stateId);currentState?(STORYBOOK_ADDON_STATE[stateId]=currentState,api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,currentState)):STORYBOOK_ADDON_STATE[stateId]?(await setState(STORYBOOK_ADDON_STATE[stateId]),api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,STORYBOOK_ADDON_STATE[stateId])):defaultState!==void 0&&(await setState(defaultState),STORYBOOK_ADDON_STATE[stateId]=defaultState,api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,defaultState))},[import_core_events8.STORY_CHANGED]:()=>{let currentState=api.getAddonState(stateId);currentState!==void 0&&api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,currentState)}};return{...stateChangeHandlers,...stateInitializationHandlers}},[stateId]),emit=useChannel(allListeners);return[state,async(newStateOrMerger,options)=>{await setState(newStateOrMerger,options);let result=api.getAddonState(stateId);emit(`${import_core_events8.SHARED_STATE_CHANGED}-manager-${stateId}`,result)}]}function useAddonState(addonId,defaultState){return useSharedState(addonId,defaultState)}function useArgs(){let{getCurrentStoryData,updateStoryArgs,resetStoryArgs}=useStorybookApi(),data=getCurrentStoryData(),args=data?.type==="story"?data.args:{},updateArgs=(0,import_react2.useCallback)(newArgs=>updateStoryArgs(data,newArgs),[data,updateStoryArgs]),resetArgs=(0,import_react2.useCallback)(argNames=>resetStoryArgs(data,argNames),[data,resetStoryArgs]);return[args,updateArgs,resetArgs]}function useGlobals(){let api=useStorybookApi();return[api.getGlobals(),api.updateGlobals]}function useGlobalTypes(){return useStorybookApi().getGlobalTypes()}function useCurrentStory(){let{getCurrentStoryData}=useStorybookApi();return getCurrentStoryData()}function useArgTypes(){let current=useCurrentStory();return current?.type==="story"&&current.argTypes||{}}var typesX=import_types2.Addon_TypesEnum;0&&(module.exports={ActiveTabs,Consumer,ManagerContext,Provider,addons,combineParameters,controlOrMetaKey,controlOrMetaSymbol,eventMatchesShortcut,eventToShortcut,isMacLike,isShortcutTaken,keyToSymbol,merge,mockChannel,optionOrAltSymbol,shortcutMatchesShortcut,shortcutToHumanString,types,useAddonState,useArgTypes,useArgs,useChannel,useGlobalTypes,useGlobals,useParameter,useSharedState,useStoryPrepared,useStorybookApi,useStorybookState});
15
+ `});let versions=ref.versions&&Object.keys(ref.versions).length?ref.versions:loadedData.versions;await api.setRef(id,{id,url:urlParseResult.url,...loadedData,...versions?{versions}:{},type:loadedData.storyIndex?"lazy":"auto-inject"})},getRefs:()=>{let{refs:refs2={}}=store2.getState();return refs2},setRef:async(id,{storyIndex,setStoriesData,...rest},ready=!1)=>{if(singleStory)return;let internal_index,index,{filters}=store2.getState(),{storyMapper=defaultStoryMapper}=provider.getConfig(),ref=api.getRefs()[id];(storyIndex||setStoriesData)&&(internal_index=setStoriesData?transformSetStoriesStoryDataToPreparedStoryIndex(map(setStoriesData,ref,{storyMapper})):storyIndex,index=transformStoryIndexToStoriesHash(storyIndex,{provider,docsOptions,filters,status:{}})),index&&(index=addRefIds(index,ref)),await api.updateRef(id,{...ref,...rest,index,internal_index})},updateRef:async(id,data)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,...data};let ordered=Object.keys(initialState).reduce((obj,key)=>(obj[key]=updated[key],obj),{});await store2.setState({refs:ordered})}},refs=!singleStory&&import_global.global.REFS||{},initialState=refs;return runCheck&&new Promise(async resolve=>{for(let ref of Object.values(refs))await api.checkRef({...ref,stories:{}});resolve(void 0)}),{api,state:{refs:initialState}}};var getEventMetadata=(context,fullAPI)=>{let{source,refId,type}=context,[sourceType,sourceLocation]=getSourceType(source,refId),ref;(refId||sourceType==="external")&&(ref=refId&&fullAPI.getRefs()[refId]?fullAPI.getRefs()[refId]:fullAPI.findRef(sourceLocation));let meta={source,sourceType,sourceLocation,refId,ref,type};switch(!0){case typeof refId=="string":case sourceType==="local":case sourceType==="external":return meta;default:return import_client_logger2.logger.warn(`Received a ${type} frame that was not configured as a ref`),null}};var{fetch:fetch2}=import_global2.global,STORY_INDEX_PATH="./index.json",removedOptions=["enableShortcuts","theme","showRoots"];function removeRemovedOptions(options){if(!options||typeof options=="string")return options;let result={...options};return removedOptions.forEach(option=>{option in result&&delete result[option]}),result}var init7=({fullAPI,store:store2,navigate,provider,storyId:initialStoryId,viewMode:initialViewMode,docsOptions={}})=>{let api={storyId:import_csf2.toId,getData:(storyId,refId)=>{let result=api.resolveStory(storyId,refId);if(result?.type==="story"||result?.type==="docs")return result},isPrepared:(storyId,refId)=>{let data=api.getData(storyId,refId);return data?data.type==="story"?data.prepared:!0:!1},resolveStory:(storyId,refId)=>{let{refs,index}=store2.getState();if(!(refId&&!refs[refId]))return refId?refs[refId].index?refs[refId].index[storyId]:void 0:index?index[storyId]:void 0},getCurrentStoryData:()=>{let{storyId,refId}=store2.getState();return api.getData(storyId,refId)},getParameters:(storyIdOrCombo,parameterName)=>{let{storyId,refId}=typeof storyIdOrCombo=="string"?{storyId:storyIdOrCombo,refId:void 0}:storyIdOrCombo,data=api.getData(storyId,refId);if(["story","docs"].includes(data?.type)){let{parameters}=data;if(parameters)return parameterName?parameters[parameterName]:parameters}return null},getCurrentParameter:parameterName=>{let{storyId,refId}=store2.getState();return api.getParameters({storyId,refId},parameterName)||void 0},jumpToComponent:direction=>{let{index,storyId,refs,refId}=store2.getState();if(!api.getData(storyId,refId))return;let hash=refId?refs[refId].index||{}:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!0);result&&api.selectStory(result,void 0,{ref:refId})},jumpToStory:direction=>{let{index,storyId,refs,refId}=store2.getState(),story=api.getData(storyId,refId);if(!story)return;let hash=story.refId?refs[story.refId].index:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!1);result&&api.selectStory(result,void 0,{ref:refId})},selectFirstStory:()=>{let{index}=store2.getState();if(!index)return;let firstStory=Object.keys(index).find(id=>index[id].type==="story");if(firstStory){api.selectStory(firstStory);return}navigate("/")},selectStory:(titleOrId=void 0,name=void 0,options={})=>{let{ref}=options,{storyId,index,refs}=store2.getState(),hash=ref?refs[ref].index:index,kindSlug=storyId?.split("--",2)[0];if(hash)if(name)if(titleOrId){let id=ref?`${ref}_${(0,import_csf2.toId)(titleOrId,name)}`:(0,import_csf2.toId)(titleOrId,name);if(hash[id])api.selectStory(id,void 0,options);else{let entry=hash[(0,import_csf2.sanitize)(titleOrId)];if(entry?.type==="component"){let foundId=entry.children.find(childId=>hash[childId].name===name);foundId&&api.selectStory(foundId,void 0,options)}}}else{let id=(0,import_csf2.toId)(kindSlug,name);api.selectStory(id,void 0,options)}else{let entry=titleOrId?hash[titleOrId]||hash[(0,import_csf2.sanitize)(titleOrId)]:hash[kindSlug];if(!entry)throw new Error(`Unknown id or title: '${titleOrId}'`);store2.setState({settings:{...store2.getState().settings,lastTrackedStoryId:entry.id}});let leafEntry=api.findLeafEntry(hash,entry.id),fullId=leafEntry.refId?`${leafEntry.refId}_${leafEntry.id}`:leafEntry.id;navigate(`/${leafEntry.type}/${fullId}`)}},findLeafEntry(index,storyId){let entry=index[storyId];if(entry.type==="docs"||entry.type==="story")return entry;let childStoryId=entry.children[0];return api.findLeafEntry(index,childStoryId)},findLeafStoryId(index,storyId){return api.findLeafEntry(index,storyId)?.id},findSiblingStoryId(storyId,index,direction,toSiblingGroup){if(toSiblingGroup){let lookupList2=getComponentLookupList(index),position2=lookupList2.findIndex(i=>i.includes(storyId));return position2===lookupList2.length-1&&direction>0||position2===0&&direction<0?void 0:lookupList2[position2+direction]?lookupList2[position2+direction][0]:void 0}let lookupList=getStoriesLookupList(index),position=lookupList.indexOf(storyId);if(!(position===lookupList.length-1&&direction>0)&&!(position===0&&direction<0))return lookupList[position+direction]},updateStoryArgs:(story,updatedArgs)=>{let{id:storyId,refId}=story;provider.channel?.emit(import_core_events.UPDATE_STORY_ARGS,{storyId,updatedArgs,options:{target:refId}})},resetStoryArgs:(story,argNames)=>{let{id:storyId,refId}=story;provider.channel?.emit(import_core_events.RESET_STORY_ARGS,{storyId,argNames,options:{target:refId}})},fetchIndex:async()=>{try{let result=await fetch2(STORY_INDEX_PATH);if(result.status!==200)throw new Error(await result.text());let storyIndex=await result.json();if(storyIndex.v<3){import_client_logger3.logger.warn(`Skipping story index with version v${storyIndex.v}, awaiting SET_STORIES.`);return}await api.setIndex(storyIndex)}catch(err){await store2.setState({indexError:err})}},setIndex:async input=>{let{index:oldHash,status,filters}=store2.getState(),newHash=transformStoryIndexToStoriesHash(input,{provider,docsOptions,status,filters}),output=addPreparedStories(newHash,oldHash);await store2.setState({internal_index:input,index:output,indexError:void 0})},updateStory:async(storyId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[storyId]={...index[storyId],...update2},await fullAPI.updateRef(refId,{index})}else{let{index}=store2.getState();if(!index)return;index[storyId]={...index[storyId],...update2},await store2.setState({index})}},updateDocs:async(docsId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[docsId]={...index[docsId],...update2},await fullAPI.updateRef(refId,{index})}else{let{index}=store2.getState();if(!index)return;index[docsId]={...index[docsId],...update2},await store2.setState({index})}},setPreviewInitialized:async ref=>{ref?fullAPI.updateRef(ref.id,{previewInitialized:!0}):store2.setState({previewInitialized:!0})},experimental_updateStatus:async(id,input)=>{let{status,internal_index:index}=store2.getState(),newStatus={...status},update2=typeof input=="function"?input(status):input;if(Object.keys(update2).length!==0&&(Object.entries(update2).forEach(([storyId,value])=>{newStatus[storyId]={...newStatus[storyId]||{}},value===null?delete newStatus[storyId][id]:newStatus[storyId][id]=value,Object.keys(newStatus[storyId]).length===0&&delete newStatus[storyId]}),await store2.setState({status:newStatus},{persistence:"session"}),index)){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0)})}},experimental_setFilter:async(id,filterFunction)=>{let{internal_index:index}=store2.getState();if(await store2.setState({filters:{...store2.getState().filters,[id]:filterFunction}}),index){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0)})}}};provider.channel?.on(import_core_events.STORY_SPECIFIED,function({storyId,viewMode}){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let state=store2.getState(),isCanvasRoute=state.path==="/"||state.viewMode==="story"||state.viewMode==="docs",stateHasSelection=state.viewMode&&state.storyId,stateSelectionDifferent=state.viewMode!==viewMode||state.storyId!==storyId,{type}=state.index?.[state.storyId]||{};isCanvasRoute&&(stateHasSelection&&stateSelectionDifferent&&!(type==="root"||type==="component"||type==="group")?provider.channel?.emit(import_core_events.SET_CURRENT_STORY,{storyId:state.storyId,viewMode:state.viewMode}):stateSelectionDifferent&&navigate(`/${viewMode}/${storyId}`))}}),provider.channel?.on(import_core_events.CURRENT_STORY_WAS_SET,function(){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref)}),provider.channel?.on(import_core_events.STORY_CHANGED,function(){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let options=api.getCurrentParameter("options");options&&fullAPI.setOptions(removeRemovedOptions(options))}}),provider.channel?.on(import_core_events.STORY_PREPARED,function({id,...update2}){let{ref,sourceType}=getEventMetadata(this,fullAPI);if(api.updateStory(id,{...update2,prepared:!0},ref),!ref&&!store2.getState().hasCalledSetOptions){let{options}=update2.parameters;fullAPI.setOptions(removeRemovedOptions(options)),store2.setState({hasCalledSetOptions:!0})}if(sourceType==="local"){let{storyId,index,refId}=store2.getState();if(!index)return;let toBePreloaded=Array.from(new Set([api.findSiblingStoryId(storyId,index,1,!0),api.findSiblingStoryId(storyId,index,-1,!0)])).filter(Boolean);provider.channel?.emit(import_core_events.PRELOAD_ENTRIES,{ids:toBePreloaded,options:{target:refId}})}}),provider.channel?.on(import_core_events.DOCS_PREPARED,function({id,...update2}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(id,{...update2,prepared:!0},ref)}),provider.channel?.on(import_core_events.SET_INDEX,function(index){let{ref}=getEventMetadata(this,fullAPI);if(ref)fullAPI.setRef(ref.id,{...ref,storyIndex:index},!0);else{api.setIndex(index);let options=api.getCurrentParameter("options");fullAPI.setOptions(removeRemovedOptions(options))}}),provider.channel?.on(import_core_events.SET_STORIES,function(data){let{ref}=getEventMetadata(this,fullAPI),setStoriesData=data.v?denormalizeStoryParameters(data):data.stories;if(ref)fullAPI.setRef(ref.id,{...ref,setStoriesData},!0);else throw new Error("Cannot call SET_STORIES for local frame")}),provider.channel?.on(import_core_events.SELECT_STORY,function({kind,title=kind,story,name=story,storyId,...rest}){let{ref}=getEventMetadata(this,fullAPI);ref?fullAPI.selectStory(storyId||title,name,{...rest,ref:ref.id}):fullAPI.selectStory(storyId||title,name,rest)}),provider.channel?.on(import_core_events.STORY_ARGS_UPDATED,function({storyId,args}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(storyId,{args},ref)}),provider.channel?.on(import_core_events.CONFIG_ERROR,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref)}),provider.channel?.on(import_core_events.STORY_MISSING,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref)}),provider.channel?.on(import_core_events.SET_CONFIG,()=>{let config2=provider.getConfig();config2?.sidebar?.filters&&store2.setState({filters:{...store2.getState().filters,...config2?.sidebar?.filters}})});let config=provider.getConfig();return{api,state:{storyId:initialStoryId,viewMode:initialViewMode,hasCalledSetOptions:!1,previewInitialized:!1,status:{},filters:config?.sidebar?.filters||{}},init:async()=>{provider.channel?.on(import_core_events.STORY_INDEX_INVALIDATED,()=>api.fetchIndex()),await api.fetchIndex()}}};var layout_exports={};__export(layout_exports,{ActiveTabs:()=>ActiveTabs,defaultLayoutState:()=>defaultLayoutState,focusableUIElements:()=>focusableUIElements,init:()=>init8});var import_global3=require("@storybook/global"),import_pick=__toESM(require("lodash/pick.js")),import_dequal=require("dequal"),import_create=require("@storybook/theming/create"),import_core_events2=require("@storybook/core-events");var{document}=import_global3.global,ActiveTabs={SIDEBAR:"sidebar",CANVAS:"canvas",ADDONS:"addons"},defaultLayoutState={ui:{enableShortcuts:!0},layout:{initialActive:ActiveTabs.CANVAS,showToolbar:!0,navSize:300,bottomPanelHeight:300,rightPanelWidth:400,recentVisibleSizes:{navSize:300,bottomPanelHeight:300,rightPanelWidth:400},panelPosition:"bottom",showTabs:!0},selectedPanel:void 0,theme:(0,import_create.create)()},focusableUIElements={storySearchField:"storybook-explorer-searchfield",storyListMenu:"storybook-explorer-menu",storyPanelRoot:"storybook-panel-root"},getIsNavShown=state=>state.layout.navSize>0,getIsPanelShown=state=>{let{bottomPanelHeight,rightPanelWidth,panelPosition}=state.layout;return panelPosition==="bottom"&&bottomPanelHeight>0||panelPosition==="right"&&rightPanelWidth>0},getIsFullscreen=state=>!getIsNavShown(state)&&!getIsPanelShown(state),getRecentVisibleSizes=layoutState=>({navSize:layoutState.navSize>0?layoutState.navSize:layoutState.recentVisibleSizes.navSize,bottomPanelHeight:layoutState.bottomPanelHeight>0?layoutState.bottomPanelHeight:layoutState.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:layoutState.rightPanelWidth>0?layoutState.rightPanelWidth:layoutState.recentVisibleSizes.rightPanelWidth}),init8=({store:store2,provider,singleStory})=>{let api={toggleFullscreen(nextState){return store2.setState(state=>{let isFullscreen=getIsFullscreen(state),shouldFullscreen=typeof nextState=="boolean"?nextState:!isFullscreen;return shouldFullscreen===isFullscreen?{layout:state.layout}:shouldFullscreen?{layout:{...state.layout,navSize:0,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}:{layout:{...state.layout,navSize:state.singleStory?0:state.layout.recentVisibleSizes.navSize,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"session"})},togglePanel(nextState){return store2.setState(state=>{let isPanelShown=getIsPanelShown(state),shouldShowPanel=typeof nextState=="boolean"?nextState:!isPanelShown;return shouldShowPanel===isPanelShown?{layout:state.layout}:shouldShowPanel?{layout:{...state.layout,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}:{layout:{...state.layout,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},togglePanelPosition(position){return store2.setState(state=>{let nextPosition=position||(state.layout.panelPosition==="right"?"bottom":"right");return{layout:{...state.layout,panelPosition:nextPosition,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"permanent"})},toggleNav(nextState){return store2.setState(state=>{if(state.singleStory)return{layout:state.layout};let isNavShown=getIsNavShown(state),shouldShowNav=typeof nextState=="boolean"?nextState:!isNavShown;return shouldShowNav===isNavShown?{layout:state.layout}:shouldShowNav?{layout:{...state.layout,navSize:state.layout.recentVisibleSizes.navSize}}:{layout:{...state.layout,navSize:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},toggleToolbar(toggled){return store2.setState(state=>{let value=typeof toggled<"u"?toggled:!state.layout.showToolbar;return{layout:{...state.layout,showToolbar:value}}},{persistence:"session"})},setSizes({navSize,bottomPanelHeight,rightPanelWidth}){return store2.setState(state=>{let nextLayoutState={...state.layout,navSize:navSize??state.layout.navSize,bottomPanelHeight:bottomPanelHeight??state.layout.bottomPanelHeight,rightPanelWidth:rightPanelWidth??state.layout.rightPanelWidth};return{layout:{...nextLayoutState,recentVisibleSizes:getRecentVisibleSizes(nextLayoutState)}}},{persistence:"session"})},focusOnUIElement(elementId,select){if(!elementId)return;let element=document.getElementById(elementId);element&&(element.focus(),select&&element.select())},getInitialOptions(){let{theme,selectedPanel,...options}=provider.getConfig();return{...defaultLayoutState,layout:{...defaultLayoutState.layout,...(0,import_pick.default)(options,Object.keys(defaultLayoutState.layout)),...singleStory&&{navSize:0}},ui:{...defaultLayoutState.ui,...(0,import_pick.default)(options,Object.keys(defaultLayoutState.ui))},selectedPanel:selectedPanel||defaultLayoutState.selectedPanel,theme:theme||defaultLayoutState.theme}},getIsFullscreen(){return getIsFullscreen(store2.getState())},getIsPanelShown(){return getIsPanelShown(store2.getState())},getIsNavShown(){return getIsNavShown(store2.getState())},setOptions:options=>{let{layout,ui,selectedPanel,theme}=store2.getState();if(!options)return;let updatedLayout={...layout,...options.layout,...(0,import_pick.default)(options,Object.keys(layout)),...singleStory&&{navSize:0}},updatedUi={...ui,...options.ui,...(0,import_pick.default)(options,Object.keys(ui))},updatedTheme={...theme,...options.theme},modification={};(0,import_dequal.dequal)(ui,updatedUi)||(modification.ui=updatedUi),(0,import_dequal.dequal)(layout,updatedLayout)||(modification.layout=updatedLayout),options.selectedPanel&&!(0,import_dequal.dequal)(selectedPanel,options.selectedPanel)&&(modification.selectedPanel=options.selectedPanel),Object.keys(modification).length&&store2.setState(modification,{persistence:"permanent"}),(0,import_dequal.dequal)(theme,updatedTheme)||store2.setState({theme:updatedTheme})}},persisted=(0,import_pick.default)(store2.getState(),"layout","selectedPanel");return provider.channel?.on(import_core_events2.SET_CONFIG,()=>{api.setOptions(merge_default(api.getInitialOptions(),persisted))}),{api,state:merge_default(api.getInitialOptions(),persisted)}};var shortcuts_exports={};__export(shortcuts_exports,{controlOrMetaKey:()=>controlOrMetaKey2,defaultShortcuts:()=>defaultShortcuts,init:()=>init9,isMacLike:()=>isMacLike2,keys:()=>keys});var import_global5=require("@storybook/global"),import_core_events3=require("@storybook/core-events");var import_global4=require("@storybook/global"),{navigator}=import_global4.global,isMacLike=()=>navigator&&navigator.platform?!!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaSymbol=()=>isMacLike()?"\u2318":"ctrl",controlOrMetaKey=()=>isMacLike()?"meta":"control",optionOrAltSymbol=()=>isMacLike()?"\u2325":"alt",isShortcutTaken=(arr1,arr2)=>JSON.stringify(arr1)===JSON.stringify(arr2),eventToShortcut=e=>{if(["Meta","Alt","Control","Shift"].includes(e.key))return null;let keys2=[];if(e.altKey&&keys2.push("alt"),e.ctrlKey&&keys2.push("control"),e.metaKey&&keys2.push("meta"),e.shiftKey&&keys2.push("shift"),e.key&&e.key.length===1&&e.key!==" "){let key=e.key.toUpperCase(),code=e.code?.toUpperCase().replace("KEY","").replace("DIGIT","");code&&code.length===1&&code!==key?keys2.push([key,code]):keys2.push(key)}return e.key===" "&&keys2.push("space"),e.key==="Escape"&&keys2.push("escape"),e.key==="ArrowRight"&&keys2.push("ArrowRight"),e.key==="ArrowDown"&&keys2.push("ArrowDown"),e.key==="ArrowUp"&&keys2.push("ArrowUp"),e.key==="ArrowLeft"&&keys2.push("ArrowLeft"),keys2.length>0?keys2:null},shortcutMatchesShortcut=(inputShortcut,shortcut)=>!inputShortcut||!shortcut||(inputShortcut.join("").startsWith("shift/")&&inputShortcut.shift(),inputShortcut.length!==shortcut.length)?!1:!inputShortcut.find((input,i)=>Array.isArray(input)?!input.includes(shortcut[i]):input!==shortcut[i]),eventMatchesShortcut=(e,shortcut)=>shortcutMatchesShortcut(eventToShortcut(e),shortcut),keyToSymbol=key=>key==="alt"?optionOrAltSymbol():key==="control"?"\u2303":key==="meta"?"\u2318":key==="shift"?"\u21E7\u200B":key==="Enter"||key==="Backspace"||key==="Esc"||key==="escape"?"":key===" "?"SPACE":key==="ArrowUp"?"\u2191":key==="ArrowDown"?"\u2193":key==="ArrowLeft"?"\u2190":key==="ArrowRight"?"\u2192":key.toUpperCase(),shortcutToHumanString=shortcut=>shortcut.map(keyToSymbol).join(" ");var{navigator:navigator2,document:document2}=import_global5.global,isMacLike2=()=>navigator2&&navigator2.platform?!!navigator2.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaKey2=()=>isMacLike2()?"meta":"control";function keys(o){return Object.keys(o)}var defaultShortcuts=Object.freeze({fullScreen:["alt","F"],togglePanel:["alt","A"],panelPosition:["alt","D"],toggleNav:["alt","S"],toolbar:["alt","T"],search:[controlOrMetaKey2(),"K"],focusNav:["1"],focusIframe:["2"],focusPanel:["3"],prevComponent:["alt","ArrowUp"],nextComponent:["alt","ArrowDown"],prevStory:["alt","ArrowLeft"],nextStory:["alt","ArrowRight"],shortcutsPage:[controlOrMetaKey2(),"shift",","],aboutPage:[controlOrMetaKey2(),","],escape:["escape"],collapseAll:[controlOrMetaKey2(),"shift","ArrowUp"],expandAll:[controlOrMetaKey2(),"shift","ArrowDown"],remount:["alt","R"]}),addonsShortcuts={};function focusInInput(event){let target=event.target;return/input|textarea/i.test(target.tagName)||target.getAttribute("contenteditable")!==null}var init9=({store:store2,fullAPI,provider})=>{let api={getShortcutKeys(){return store2.getState().shortcuts},getDefaultShortcuts(){return{...defaultShortcuts,...api.getAddonsShortcutDefaults()}},getAddonsShortcuts(){return addonsShortcuts},getAddonsShortcutLabels(){let labels={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{label}])=>{labels[actionName]=label}),labels},getAddonsShortcutDefaults(){let defaults={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{defaultShortcut}])=>{defaults[actionName]=defaultShortcut}),defaults},async setShortcuts(shortcuts){return await store2.setState({shortcuts},{persistence:"permanent"}),shortcuts},async restoreAllDefaultShortcuts(){return api.setShortcuts(api.getDefaultShortcuts())},async setShortcut(action,value){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[action]:value}),value},async setAddonShortcut(addon,shortcut){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[`${addon}-${shortcut.actionName}`]:shortcut.defaultShortcut}),addonsShortcuts[`${addon}-${shortcut.actionName}`]=shortcut,shortcut},async restoreDefaultShortcut(action){let defaultShortcut=api.getDefaultShortcuts()[action];return api.setShortcut(action,defaultShortcut)},handleKeydownEvent(event){let shortcut=eventToShortcut(event),shortcuts=api.getShortcutKeys(),matchedFeature=keys(shortcuts).find(feature=>shortcutMatchesShortcut(shortcut,shortcuts[feature]));matchedFeature&&api.handleShortcutFeature(matchedFeature,event)},handleShortcutFeature(feature,event){let{ui:{enableShortcuts},storyId}=store2.getState();if(enableShortcuts)switch(event?.preventDefault&&event.preventDefault(),feature){case"escape":{fullAPI.getIsFullscreen()?fullAPI.toggleFullscreen(!1):fullAPI.getIsNavShown()&&fullAPI.toggleNav(!0);break}case"focusNav":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),fullAPI.focusOnUIElement(focusableUIElements.storyListMenu);break}case"search":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),setTimeout(()=>{fullAPI.focusOnUIElement(focusableUIElements.storySearchField,!0)},0);break}case"focusIframe":{let element=document2.getElementById("storybook-preview-iframe");if(element)try{element.contentWindow.focus()}catch{}break}case"focusPanel":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.focusOnUIElement(focusableUIElements.storyPanelRoot);break}case"nextStory":{fullAPI.jumpToStory(1);break}case"prevStory":{fullAPI.jumpToStory(-1);break}case"nextComponent":{fullAPI.jumpToComponent(1);break}case"prevComponent":{fullAPI.jumpToComponent(-1);break}case"fullScreen":{fullAPI.toggleFullscreen();break}case"togglePanel":{fullAPI.togglePanel();break}case"toggleNav":{fullAPI.toggleNav();break}case"toolbar":{fullAPI.toggleToolbar();break}case"panelPosition":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.togglePanelPosition();break}case"aboutPage":{fullAPI.navigate("/settings/about");break}case"shortcutsPage":{fullAPI.navigate("/settings/shortcuts");break}case"collapseAll":{fullAPI.collapseAll();break}case"expandAll":{fullAPI.expandAll();break}case"remount":{fullAPI.emit(import_core_events3.FORCE_REMOUNT,{storyId});break}default:addonsShortcuts[feature].action();break}}},{shortcuts:persistedShortcuts=defaultShortcuts}=store2.getState(),state={shortcuts:keys(defaultShortcuts).reduce((acc,key)=>({...acc,[key]:persistedShortcuts[key]||defaultShortcuts[key]}),defaultShortcuts)};return{api,state,init:()=>{document2.addEventListener("keydown",event=>{focusInInput(event)||api.handleKeydownEvent(event)}),provider.channel?.on(import_core_events3.PREVIEW_KEYDOWN,data=>{api.handleKeydownEvent(data.event)})}}};var url_exports={};__export(url_exports,{init:()=>init10});var import_core_events4=require("@storybook/core-events"),import_router=require("@storybook/router"),import_dequal2=require("dequal"),import_global6=require("@storybook/global");var{window:globalWindow}=import_global6.global,parseBoolean=value=>{if(value==="true"||value==="1")return!0;if(value==="false"||value==="0")return!1},prevParams,initialUrlSupport=({state:{location:location2,path,viewMode,storyId:storyIdFromUrl},singleStory})=>{let{full,panel,nav,shortcuts,addonPanel,tabs,path:queryPath,...otherParams}=(0,import_router.queryFromLocation)(location2),navSize,bottomPanelHeight,rightPanelWidth;parseBoolean(full)===!0?(navSize=0,bottomPanelHeight=0,rightPanelWidth=0):parseBoolean(full)===!1&&(navSize=defaultLayoutState.layout.navSize,bottomPanelHeight=defaultLayoutState.layout.bottomPanelHeight,rightPanelWidth=defaultLayoutState.layout.rightPanelWidth),singleStory||(parseBoolean(nav)===!0&&(navSize=defaultLayoutState.layout.navSize),parseBoolean(nav)===!1&&(navSize=0)),parseBoolean(panel)===!1&&(bottomPanelHeight=0,rightPanelWidth=0);let layout={navSize,bottomPanelHeight,rightPanelWidth,panelPosition:["right","bottom"].includes(panel)?panel:void 0,showTabs:parseBoolean(tabs)},ui={enableShortcuts:parseBoolean(shortcuts)},selectedPanel=addonPanel||void 0,storyId=storyIdFromUrl,customQueryParams=(0,import_dequal2.dequal)(prevParams,otherParams)?prevParams:otherParams;return prevParams=customQueryParams,{viewMode,layout,ui,selectedPanel,location:location2,path,customQueryParams,storyId}},init10=moduleArgs=>{let{store:store2,navigate,provider,fullAPI}=moduleArgs,navigateTo=(path,queryParams={},options={})=>{let params=Object.entries(queryParams).filter(([,v])=>v).sort(([a],[b])=>a<b?-1:1).map(([k,v])=>`${k}=${v}`),to=[path,...params].join("&");return navigate(to,options)},api={getQueryParam(key){let{customQueryParams}=store2.getState();return customQueryParams?customQueryParams[key]:void 0},getUrlState(){let{path,customQueryParams,storyId,url,viewMode}=store2.getState();return{path,queryParams:customQueryParams,storyId,url,viewMode}},setQueryParams(input){let{customQueryParams}=store2.getState(),queryParams={},update2={...customQueryParams,...Object.entries(input).reduce((acc,[key,value])=>(value!==null&&(acc[key]=value),acc),queryParams)};(0,import_dequal2.dequal)(customQueryParams,update2)||(store2.setState({customQueryParams:update2}),provider.channel?.emit(import_core_events4.UPDATE_QUERY_PARAMS,update2))},applyQueryParams(input){let{path,queryParams}=api.getUrlState();navigateTo(path,{...queryParams,...input}),api.setQueryParams(input)},navigateUrl(url,options){navigate(url,{plain:!0,...options})}},updateArgsParam=()=>{let{path,queryParams,viewMode}=api.getUrlState();if(viewMode!=="story")return;let currentStory=fullAPI.getCurrentStoryData();if(currentStory?.type!=="story")return;let{args,initialArgs}=currentStory,argsString=(0,import_router.buildArgsParam)(initialArgs,args);navigateTo(path,{...queryParams,args:argsString},{replace:!0}),api.setQueryParams({args:argsString})};provider.channel?.on(import_core_events4.SET_CURRENT_STORY,()=>updateArgsParam());let handleOrId;return provider.channel?.on(import_core_events4.STORY_ARGS_UPDATED,()=>{"requestIdleCallback"in globalWindow?(handleOrId&&globalWindow.cancelIdleCallback(handleOrId),handleOrId=globalWindow.requestIdleCallback(updateArgsParam,{timeout:1e3})):(handleOrId&&clearTimeout(handleOrId),setTimeout(updateArgsParam,100))}),provider.channel?.on(import_core_events4.GLOBALS_UPDATED,({globals,initialGlobals})=>{let{path,queryParams}=api.getUrlState(),globalsString=(0,import_router.buildArgsParam)(initialGlobals,globals);navigateTo(path,{...queryParams,globals:globalsString},{replace:!0}),api.setQueryParams({globals:globalsString})}),provider.channel?.on(import_core_events4.NAVIGATE_URL,(url,options)=>{api.navigateUrl(url,options)}),{api,state:initialUrlSupport(moduleArgs)}};var versions_exports={};__export(versions_exports,{init:()=>init11});var import_global7=require("@storybook/global"),import_semver=__toESM(require_semver2()),import_memoizerific2=__toESM(require("memoizerific"));var version="8.0.0-rc.5";var{VERSIONCHECK}=import_global7.global,getVersionCheckData=(0,import_memoizerific2.default)(1)(()=>{try{return{...JSON.parse(VERSIONCHECK).data||{}}}catch{return{}}}),normalizeRendererName=renderer=>renderer.includes("vue")?"vue":renderer,init11=({store:store2})=>{let{dismissedVersionNotification}=store2.getState(),state={versions:{current:{version},...getVersionCheckData()},dismissedVersionNotification},api={getCurrentVersion:()=>{let{versions:{current}}=store2.getState();return current},getLatestVersion:()=>{let{versions:{latest,next,current}}=store2.getState();return current&&import_semver.default.prerelease(current.version)&&next?latest&&import_semver.default.gt(latest.version,next.version)?latest:next:latest},getDocsUrl:({subpath,versioned,renderer})=>{let{versions:{latest,current}}=store2.getState(),url="https://storybook.js.org/docs/";if(versioned&&current?.version&&latest?.version){let versionDiff=import_semver.default.diff(latest.version,current.version);versionDiff==="patch"||versionDiff===null||(url+=`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}/`)}if(subpath&&(url+=`${subpath}/`),renderer&&typeof import_global7.global.STORYBOOK_RENDERER<"u"){let rendererName=import_global7.global.STORYBOOK_RENDERER.split("/").pop()?.toLowerCase();rendererName&&(url+=`?renderer=${normalizeRendererName(rendererName)}`)}return url},versionUpdateAvailable:()=>{let latest=api.getLatestVersion(),current=api.getCurrentVersion();if(latest){if(!latest.version||!current.version)return!0;let actualCurrent=!!import_semver.default.prerelease(current.version)?`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}.${import_semver.default.patch(current.version)}`:current.version,diff=import_semver.default.diff(actualCurrent,latest.version);return import_semver.default.gt(latest.version,actualCurrent)&&diff!=="patch"&&!diff.includes("pre")}return!1}};return{init:async()=>{let{versions={}}=store2.getState(),{latest,next}=getVersionCheckData();await store2.setState({versions:{...versions,latest,next}})},state,api}};var whatsnew_exports={};__export(whatsnew_exports,{init:()=>init12});var import_global8=require("@storybook/global"),import_core_events5=require("@storybook/core-events"),WHATS_NEW_NOTIFICATION_ID="whats-new",init12=({fullAPI,store:store2,provider})=>{let state={whatsNewData:void 0};function setWhatsNewState(newState){store2.setState({whatsNewData:newState}),state.whatsNewData=newState}let api={isWhatsNewUnread(){return state.whatsNewData?.status==="SUCCESS"&&!state.whatsNewData.postIsRead},whatsNewHasBeenRead(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewCache({lastReadPost:state.whatsNewData.url}),setWhatsNewState({...state.whatsNewData,postIsRead:!0}),fullAPI.clearNotification(WHATS_NEW_NOTIFICATION_ID))},toggleWhatsNewNotifications(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewState({...state.whatsNewData,disableWhatsNewNotifications:!state.whatsNewData.disableWhatsNewNotifications}),provider.channel?.emit(import_core_events5.TOGGLE_WHATS_NEW_NOTIFICATIONS,{disableWhatsNewNotifications:state.whatsNewData.disableWhatsNewNotifications}))}};function getLatestWhatsNewPost(){return provider.channel?.emit(import_core_events5.REQUEST_WHATS_NEW_DATA),new Promise(resolve=>provider.channel?.once(import_core_events5.RESULT_WHATS_NEW_DATA,({data})=>resolve(data)))}function setWhatsNewCache(cache){provider.channel?.emit(import_core_events5.SET_WHATS_NEW_CACHE,cache)}return{init:async()=>{if(import_global8.global.CONFIG_TYPE!=="DEVELOPMENT")return;let whatsNewData=await getLatestWhatsNewPost();setWhatsNewState(whatsNewData);let urlState=fullAPI.getUrlState();!(urlState?.path==="/onboarding"||urlState.queryParams?.onboarding==="true")&&whatsNewData.status==="SUCCESS"&&!whatsNewData.disableWhatsNewNotifications&&whatsNewData.showNotification&&fullAPI.addNotification({id:WHATS_NEW_NOTIFICATION_ID,link:"/settings/whats-new",content:{headline:whatsNewData.title,subHeadline:"Learn what's new in Storybook"},icon:{name:"storybook"},onClear({dismissed}){dismissed&&setWhatsNewCache({lastDismissedPost:whatsNewData.url})}})},state,api}};var globals_exports={};__export(globals_exports,{init:()=>init13});var import_core_events6=require("@storybook/core-events"),import_client_logger4=require("@storybook/client-logger"),import_dequal3=require("dequal");var init13=({store:store2,fullAPI,provider})=>{let api={getGlobals(){return store2.getState().globals},getGlobalTypes(){return store2.getState().globalTypes},updateGlobals(newGlobals){provider.channel?.emit(import_core_events6.UPDATE_GLOBALS,{globals:newGlobals,options:{target:"storybook-preview-iframe"}})}},state={globals:{},globalTypes:{}},updateGlobals=globals=>{let currentGlobals=store2.getState()?.globals;(0,import_dequal3.dequal)(globals,currentGlobals)||store2.setState({globals})};return provider.channel?.on(import_core_events6.GLOBALS_UPDATED,function({globals}){let{ref}=getEventMetadata(this,fullAPI);ref?import_client_logger4.logger.warn("received a GLOBALS_UPDATED from a non-local ref. This is not currently supported."):updateGlobals(globals)}),provider.channel?.on(import_core_events6.SET_GLOBALS,function({globals,globalTypes}){let{ref}=getEventMetadata(this,fullAPI),currentGlobals=store2.getState()?.globals;ref?Object.keys(globals).length>0&&import_client_logger4.logger.warn("received globals from a non-local ref. This is not currently supported."):store2.setState({globals,globalTypes}),currentGlobals&&Object.keys(currentGlobals).length!==0&&!(0,import_dequal3.dequal)(globals,currentGlobals)&&api.updateGlobals(currentGlobals)}),{api,state}};var import_global9=require("@storybook/global"),import_core_events7=require("@storybook/core-events"),import_types2=require("@storybook/types"),import_client_logger5=require("@storybook/client-logger");var import_channels=require("@storybook/channels");function mockChannel(){let transport={setHandler:()=>{},send:()=>{}};return new import_channels.Channel({transport})}var AddonStore=class{constructor(){this.loaders={};this.elements={};this.config={};this.getChannel=()=>(this.channel||this.setChannel(mockChannel()),this.channel);this.ready=()=>this.promise;this.hasChannel=()=>!!this.channel;this.setChannel=channel=>{this.channel=channel,this.resolve()};this.setConfig=value=>{Object.assign(this.config,value),this.hasChannel()?this.getChannel().emit(import_core_events7.SET_CONFIG,this.config):this.ready().then(channel=>{channel.emit(import_core_events7.SET_CONFIG,this.config)})};this.getConfig=()=>this.config;this.register=(id,callback)=>{this.loaders[id]&&import_client_logger5.logger.warn(`${id} was loaded twice, this could have bad side-effects`),this.loaders[id]=callback};this.loadAddons=api=>{Object.values(this.loaders).forEach(value=>value(api))};this.promise=new Promise(res=>{this.resolve=()=>res(this.getChannel())})}getElements(type){return this.elements[type]||(this.elements[type]={}),this.elements[type]}add(id,addon){let{type}=addon,collection=this.getElements(type);collection[id]={...addon,id}}},KEY="__STORYBOOK_ADDONS_MANAGER";function getAddonsStore(){return import_global9.global[KEY]||(import_global9.global[KEY]=new AddonStore),import_global9.global[KEY]}var addons=getAddonsStore();var{ActiveTabs:ActiveTabs2}=layout_exports;var ManagerContext=createContext({api:void 0,state:initial_state_default({})}),combineParameters=(...parameterSets)=>(0,import_mergeWith2.default)({},...parameterSets,(objValue,srcValue)=>{if(Array.isArray(srcValue))return srcValue}),ManagerProvider=class extends import_react2.Component{constructor(props){super(props);this.api={};this.initModules=()=>{this.modules.forEach(module2=>{"init"in module2&&module2.init()})};let{location:location2,path,refId,viewMode=props.docsOptions.docsMode?"docs":props.viewMode,singleStory,storyId,docsOptions,navigate}=props,store2=new Store({getState:()=>this.state,setState:(stateChange,callback)=>(this.setState(stateChange,()=>callback(this.state)),this.state)}),routeData={location:location2,path,viewMode,singleStory,storyId,refId},optionsData={docsOptions};this.state=store2.getInitialState(initial_state_default({...routeData,...optionsData}));let apiData={navigate,store:store2,provider:props.provider};this.modules=[provider_exports,channel_exports,addons_exports,layout_exports,notifications_exports,settings_exports,shortcuts_exports,stories_exports,refs_exports,globals_exports,url_exports,versions_exports,whatsnew_exports].map(m=>m.init({...routeData,...optionsData,...apiData,state:this.state,fullAPI:this.api}));let state=initial_state_default(this.state,...this.modules.map(m=>m.state)),api=Object.assign(this.api,{navigate},...this.modules.map(m=>m.api));this.state=state,this.api=api}static{this.displayName="Manager"}static getDerivedStateFromProps(props,state){return state.path!==props.path?{...state,location:props.location,path:props.path,refId:props.refId,viewMode:props.viewMode,storyId:props.storyId}:null}shouldComponentUpdate(nextProps,nextState){let prevState=this.state,prevProps=this.props;return prevState!==nextState||prevProps.path!==nextProps.path}render(){let{children}=this.props,value={state:this.state,api:this.api};return import_react2.default.createElement(EffectOnMount,{effect:this.initModules},import_react2.default.createElement(ManagerContext.Provider,{value},import_react2.default.createElement(ManagerConsumer,null,children)))}},EffectOnMount=({children,effect})=>(import_react2.default.useEffect(effect,[]),children),defaultFilter=c=>c;function ManagerConsumer({filter=defaultFilter,children}){let managerContext=(0,import_react2.useContext)(ManagerContext),renderer=(0,import_react2.useRef)(children),filterer=(0,import_react2.useRef)(filter);if(typeof renderer.current!="function")return import_react2.default.createElement(import_react2.Fragment,null,renderer.current);let comboData=filterer.current(managerContext),comboDataArray=(0,import_react2.useMemo)(()=>[...Object.entries(comboData).reduce((acc,keyval)=>acc.concat(keyval),[])],[managerContext.state]);return(0,import_react2.useMemo)(()=>{let Child=renderer.current;return import_react2.default.createElement(Child,{...comboData})},comboDataArray)}function useStorybookState(){let{state}=(0,import_react2.useContext)(ManagerContext);return{...state,get storiesHash(){return(0,import_client_logger6.deprecate)("state.storiesHash is deprecated, please use state.index"),this.index||{}},get storiesConfigured(){return(0,import_client_logger6.deprecate)("state.storiesConfigured is deprecated, please use state.previewInitialized"),this.previewInitialized},get storiesFailed(){return(0,import_client_logger6.deprecate)("state.storiesFailed is deprecated, please use state.indexError"),this.indexError}}}function useStorybookApi(){let{api}=(0,import_react2.useContext)(ManagerContext);return api}function orDefault(fromStore,defaultState){return typeof fromStore>"u"?defaultState:fromStore}var useChannel=(eventMap,deps=[])=>{let api=useStorybookApi();return(0,import_react2.useEffect)(()=>(Object.entries(eventMap).forEach(([type,listener])=>api.on(type,listener)),()=>{Object.entries(eventMap).forEach(([type,listener])=>api.off(type,listener))}),deps),api.emit};function useStoryPrepared(storyId){return useStorybookApi().isPrepared(storyId)}function useParameter(parameterKey,defaultValue){let result=useStorybookApi().getCurrentParameter(parameterKey);return orDefault(result,defaultValue)}globalThis.STORYBOOK_ADDON_STATE={};var{STORYBOOK_ADDON_STATE}=globalThis;function useSharedState(stateId,defaultState){let api=useStorybookApi(),existingState=api.getAddonState(stateId)||STORYBOOK_ADDON_STATE[stateId],state=orDefault(existingState,STORYBOOK_ADDON_STATE[stateId]?STORYBOOK_ADDON_STATE[stateId]:defaultState),quicksync=!1;state===defaultState&&defaultState!==void 0&&(STORYBOOK_ADDON_STATE[stateId]=defaultState,quicksync=!0),(0,import_react2.useEffect)(()=>{quicksync&&api.setAddonState(stateId,defaultState)},[quicksync]);let setState=async(s,options)=>{await api.setAddonState(stateId,s,options);let result=api.getAddonState(stateId);return STORYBOOK_ADDON_STATE[stateId]=result,result},allListeners=(0,import_react2.useMemo)(()=>{let stateChangeHandlers={[`${import_core_events8.SHARED_STATE_CHANGED}-client-${stateId}`]:setState,[`${import_core_events8.SHARED_STATE_SET}-client-${stateId}`]:setState},stateInitializationHandlers={[import_core_events8.SET_STORIES]:async()=>{let currentState=api.getAddonState(stateId);currentState?(STORYBOOK_ADDON_STATE[stateId]=currentState,api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,currentState)):STORYBOOK_ADDON_STATE[stateId]?(await setState(STORYBOOK_ADDON_STATE[stateId]),api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,STORYBOOK_ADDON_STATE[stateId])):defaultState!==void 0&&(await setState(defaultState),STORYBOOK_ADDON_STATE[stateId]=defaultState,api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,defaultState))},[import_core_events8.STORY_CHANGED]:()=>{let currentState=api.getAddonState(stateId);currentState!==void 0&&api.emit(`${import_core_events8.SHARED_STATE_SET}-manager-${stateId}`,currentState)}};return{...stateChangeHandlers,...stateInitializationHandlers}},[stateId]),emit=useChannel(allListeners);return[state,async(newStateOrMerger,options)=>{await setState(newStateOrMerger,options);let result=api.getAddonState(stateId);emit(`${import_core_events8.SHARED_STATE_CHANGED}-manager-${stateId}`,result)}]}function useAddonState(addonId,defaultState){return useSharedState(addonId,defaultState)}function useArgs(){let{getCurrentStoryData,updateStoryArgs,resetStoryArgs}=useStorybookApi(),data=getCurrentStoryData(),args=data?.type==="story"?data.args:{},updateArgs=(0,import_react2.useCallback)(newArgs=>updateStoryArgs(data,newArgs),[data,updateStoryArgs]),resetArgs=(0,import_react2.useCallback)(argNames=>resetStoryArgs(data,argNames),[data,resetStoryArgs]);return[args,updateArgs,resetArgs]}function useGlobals(){let api=useStorybookApi();return[api.getGlobals(),api.updateGlobals]}function useGlobalTypes(){return useStorybookApi().getGlobalTypes()}function useCurrentStory(){let{getCurrentStoryData}=useStorybookApi();return getCurrentStoryData()}function useArgTypes(){let current=useCurrentStory();return current?.type==="story"&&current.argTypes||{}}var typesX=import_types2.Addon_TypesEnum;0&&(module.exports={ActiveTabs,Consumer,ManagerContext,Provider,addons,combineParameters,controlOrMetaKey,controlOrMetaSymbol,eventMatchesShortcut,eventToShortcut,isMacLike,isShortcutTaken,keyToSymbol,merge,mockChannel,optionOrAltSymbol,shortcutMatchesShortcut,shortcutToHumanString,types,useAddonState,useArgTypes,useArgs,useChannel,useGlobalTypes,useGlobals,useParameter,useSharedState,useStoryPrepared,useStorybookApi,useStorybookState});
package/dist/index.mjs CHANGED
@@ -22,7 +22,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
22
22
  Invalid part '${name}', leading to id === parentId ('${id}'), inside title '${title}'
23
23
 
24
24
  Did you create a path that uses the separator char accidentally, such as 'Vue <docs/>' where '/' is a separator char? See https://github.com/storybookjs/storybook/issues/6128
25
- `);return list.push(id),list},[]);return paths.forEach((id,idx)=>{let childId=paths[idx+1]||item.id;root.length&&idx===0?acc[id]=merge_default(acc[id]||{},{type:"root",id,name:names[idx],depth:idx,renderLabel,startCollapsed:collapsedRoots.includes(id),children:[childId]}):(!acc[id]||acc[id].type==="component")&&idx===paths.length-1?acc[id]=merge_default(acc[id]||{},{type:"component",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}}):acc[id]=merge_default(acc[id]||{},{type:"group",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}});}),acc[item.id]={type:"story",...item,depth:paths.length,parent:paths[paths.length-1],renderLabel,prepared:!!item.parameters},acc},{});function addItem(acc,item){return acc[item.id]||(acc[item.id]=item,(item.type==="root"||item.type==="group"||item.type==="component")&&item.children.forEach(childId=>addItem(acc,storiesHashOutOfOrder[childId]))),acc}let orphanHash=Object.values(storiesHashOutOfOrder).filter(i=>i.type!=="root"&&!i.parent).reduce(addItem,{});return Object.values(storiesHashOutOfOrder).filter(i=>i.type==="root").reduce(addItem,orphanHash)},addPreparedStories=(newHash,oldHash)=>oldHash?Object.fromEntries(Object.entries(newHash).map(([id,newEntry])=>{let oldEntry=oldHash[id];return newEntry.type==="story"&&oldEntry?.type==="story"&&oldEntry.prepared?[id,{...oldEntry,...newEntry,prepared:!0}]:[id,newEntry]})):newHash,getComponentLookupList=memoize(1)(hash=>Object.entries(hash).reduce((acc,i)=>{let value=i[1];return value.type==="component"&&acc.push([...value.children]),acc},[])),getStoriesLookupList=memoize(1)(hash=>Object.keys(hash).filter(k=>["story","docs"].includes(hash[k].type)));var{location,fetch}=global,getSourceType=(source,refId)=>{let{origin:localOrigin,pathname:localPathname}=location,{origin:sourceOrigin,pathname:sourcePathname}=new URL(source),localFull=`${localOrigin+localPathname}`.replace("/iframe.html","").replace(/\/$/,""),sourceFull=`${sourceOrigin+sourcePathname}`.replace("/iframe.html","").replace(/\/$/,"");return localFull===sourceFull?["local",sourceFull]:refId||source?["external",sourceFull]:[null,null]},defaultStoryMapper=(b,a)=>({...a,kind:a.kind.replace("|","/")}),addRefIds=(input,ref)=>Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:{...item,refId:ref.id}}),{});async function handleRequest(request){if(!request)return {};try{let response=await request;if(response===!1||response===!0)throw new Error("Unexpected boolean response");if(!response.ok)throw new Error(`Unexpected response not OK: ${response.statusText}`);let json=await response.json();return json.entries||json.stories?{storyIndex:json}:json}catch(err){return {indexError:err}}}var parseUrl=url=>{let credentialsRegex=/https?:\/\/(.+:.+)@/,cleanUrl=url,authorization,[,credentials]=url.match(credentialsRegex)||[];return credentials&&(cleanUrl=url.replace(`${credentials}@`,""),authorization=btoa(`${credentials}`)),{url:cleanUrl,authorization}},map=(input,ref,options)=>{let{storyMapper}=options;return storyMapper?Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:storyMapper(ref,item)}),{}):input},init6=({store:store2,provider,singleStory,docsOptions={}},{runCheck=!0}={})=>{let api={findRef:source=>{let refs2=api.getRefs();return Object.values(refs2).find(({url})=>url.match(source))},changeRefVersion:(id,url)=>{let{versions,title}=api.getRefs()[id],ref={id,url,versions,title,index:{},expanded:!0};api.setRef(id,{...ref,type:"unknown"},!1),api.checkRef(ref);},changeRefState:(id,previewInitialized)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,previewInitialized},store2.setState({refs:updated});},checkRef:async ref=>{let{id,url,version:version2,type}=ref,isPublic=type==="server-checked",loadedData={},query=version2?`?version=${version2}`:"",credentials=isPublic?"omit":"include",urlParseResult=parseUrl(url),headers={Accept:"application/json"};urlParseResult.authorization&&Object.assign(headers,{Authorization:`Basic ${urlParseResult.authorization}`});let[indexResult,storiesResult]=await Promise.all(["index.json","stories.json"].map(async file=>handleRequest(fetch(`${urlParseResult.url}/${file}${query}`,{headers,credentials}))));if(!indexResult.indexError||!storiesResult.indexError){let metadata=await handleRequest(fetch(`${urlParseResult.url}/metadata.json${query}`,{headers,credentials,cache:"no-cache"}).catch(()=>!1));Object.assign(loadedData,{...indexResult.indexError?storiesResult:indexResult,...!metadata.indexError&&metadata});}else isPublic||(loadedData.indexError={message:dedent`
25
+ `);return list.push(id),list},[]);return paths.forEach((id,idx)=>{let childId=paths[idx+1]||item.id;root.length&&idx===0?acc[id]=merge_default(acc[id]||{},{type:"root",id,name:names[idx],depth:idx,renderLabel,startCollapsed:collapsedRoots.includes(id),children:[childId]}):(!acc[id]||acc[id].type==="component")&&idx===paths.length-1?acc[id]=merge_default(acc[id]||{},{type:"component",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}}):acc[id]=merge_default(acc[id]||{},{type:"group",id,name:names[idx],parent:paths[idx-1],depth:idx,renderLabel,...childId&&{children:[childId]}});}),acc[item.id]={type:"story",...item,depth:paths.length,parent:paths[paths.length-1],renderLabel,prepared:!!item.parameters},acc},{});function addItem(acc,item){return acc[item.id]||(acc[item.id]=item,(item.type==="root"||item.type==="group"||item.type==="component")&&item.children.forEach(childId=>addItem(acc,storiesHashOutOfOrder[childId]))),acc}let orphanHash=Object.values(storiesHashOutOfOrder).filter(i=>i.type!=="root"&&!i.parent).reduce(addItem,{});return Object.values(storiesHashOutOfOrder).filter(i=>i.type==="root").reduce(addItem,orphanHash)},addPreparedStories=(newHash,oldHash)=>oldHash?Object.fromEntries(Object.entries(newHash).map(([id,newEntry])=>{let oldEntry=oldHash[id];return newEntry.type==="story"&&oldEntry?.type==="story"&&oldEntry.prepared?[id,{...oldEntry,...newEntry,prepared:!0}]:[id,newEntry]})):newHash,getComponentLookupList=memoize(1)(hash=>Object.entries(hash).reduce((acc,i)=>{let value=i[1];return value.type==="component"&&acc.push([...value.children]),acc},[])),getStoriesLookupList=memoize(1)(hash=>Object.keys(hash).filter(k=>["story","docs"].includes(hash[k].type)));var{location,fetch}=global,getSourceType=(source,refId)=>{let{origin:localOrigin,pathname:localPathname}=location,{origin:sourceOrigin,pathname:sourcePathname}=new URL(source),localFull=`${localOrigin+localPathname}`.replace("/iframe.html","").replace(/\/$/,""),sourceFull=`${sourceOrigin+sourcePathname}`.replace("/iframe.html","").replace(/\/$/,"");return localFull===sourceFull?["local",sourceFull]:refId||source?["external",sourceFull]:[null,null]},defaultStoryMapper=(b,a)=>({...a,kind:a.kind.replace("|","/")}),addRefIds=(input,ref)=>Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:{...item,refId:ref.id}}),{});async function handleRequest(request){if(!request)return {};try{let response=await request;if(response===!1||response===!0)throw new Error("Unexpected boolean response");if(!response.ok)throw new Error(`Unexpected response not OK: ${response.statusText}`);let json=await response.json();return json.entries||json.stories?{storyIndex:json}:json}catch(err){return {indexError:err}}}var parseUrl=url=>{let credentialsRegex=/https?:\/\/(.+:.+)@/,cleanUrl=url,authorization,[,credentials]=url.match(credentialsRegex)||[];return credentials&&(cleanUrl=url.replace(`${credentials}@`,""),authorization=btoa(`${credentials}`)),{url:cleanUrl,authorization}},map=(input,ref,options)=>{let{storyMapper}=options;return storyMapper?Object.entries(input).reduce((acc,[id,item])=>({...acc,[id]:storyMapper(ref,item)}),{}):input},init6=({store:store2,provider,singleStory,docsOptions={}},{runCheck=!0}={})=>{let api={findRef:source=>{let refs2=api.getRefs();return Object.values(refs2).find(({url})=>url.match(source))},changeRefVersion:async(id,url)=>{let{versions,title}=api.getRefs()[id],ref={id,url,versions,title,index:{},expanded:!0};await api.setRef(id,{...ref,type:"unknown"},!1),await api.checkRef(ref);},changeRefState:(id,previewInitialized)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,previewInitialized},store2.setState({refs:updated});},checkRef:async ref=>{let{id,url,version:version2,type}=ref,isPublic=type==="server-checked",loadedData={},query=version2?`?version=${version2}`:"",credentials=isPublic?"omit":"include",urlParseResult=parseUrl(url),headers={Accept:"application/json"};urlParseResult.authorization&&Object.assign(headers,{Authorization:`Basic ${urlParseResult.authorization}`});let[indexResult,storiesResult]=await Promise.all(["index.json","stories.json"].map(async file=>handleRequest(fetch(`${urlParseResult.url}/${file}${query}`,{headers,credentials}))));if(!indexResult.indexError||!storiesResult.indexError){let metadata=await handleRequest(fetch(`${urlParseResult.url}/metadata.json${query}`,{headers,credentials,cache:"no-cache"}).catch(()=>!1));Object.assign(loadedData,{...indexResult.indexError?storiesResult:indexResult,...!metadata.indexError&&metadata});}else isPublic||(loadedData.indexError={message:dedent`
26
26
  Error: Loading of ref failed
27
27
  at fetch (lib/api/src/modules/refs.ts)
28
28
 
@@ -32,6 +32,6 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
32
32
  it's possible a CORS error happened.
33
33
 
34
34
  Please check your dev-tools network tab.
35
- `});let versions=ref.versions&&Object.keys(ref.versions).length?ref.versions:loadedData.versions;await api.setRef(id,{id,url:urlParseResult.url,...loadedData,...versions?{versions}:{},type:loadedData.storyIndex?"lazy":"auto-inject"});},getRefs:()=>{let{refs:refs2={}}=store2.getState();return refs2},setRef:(id,{storyIndex,setStoriesData,...rest},ready=!1)=>{if(singleStory)return;let internal_index,index,{filters}=store2.getState(),{storyMapper=defaultStoryMapper}=provider.getConfig(),ref=api.getRefs()[id];(storyIndex||setStoriesData)&&(internal_index=setStoriesData?transformSetStoriesStoryDataToPreparedStoryIndex(map(setStoriesData,ref,{storyMapper})):storyIndex,index=transformStoryIndexToStoriesHash(storyIndex,{provider,docsOptions,filters,status:{}})),index&&(index=addRefIds(index,ref)),api.updateRef(id,{...ref,...rest,index,internal_index});},updateRef:(id,data)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,...data};let ordered=Object.keys(initialState).reduce((obj,key)=>(obj[key]=updated[key],obj),{});store2.setState({refs:ordered});}},refs=!singleStory&&global.REFS||{},initialState=refs;return runCheck&&Object.entries(refs).forEach(([id,ref])=>{api.checkRef({...ref,stories:{}});}),{api,state:{refs:initialState}}};var getEventMetadata=(context,fullAPI)=>{let{source,refId,type}=context,[sourceType,sourceLocation]=getSourceType(source,refId),ref;(refId||sourceType==="external")&&(ref=refId&&fullAPI.getRefs()[refId]?fullAPI.getRefs()[refId]:fullAPI.findRef(sourceLocation));let meta={source,sourceType,sourceLocation,refId,ref,type};switch(!0){case typeof refId=="string":case sourceType==="local":case sourceType==="external":return meta;default:return logger.warn(`Received a ${type} frame that was not configured as a ref`),null}};var{fetch:fetch2}=global,STORY_INDEX_PATH="./index.json",removedOptions=["enableShortcuts","theme","showRoots"];function removeRemovedOptions(options){if(!options||typeof options=="string")return options;let result={...options};return removedOptions.forEach(option=>{option in result&&delete result[option];}),result}var init7=({fullAPI,store:store2,navigate,provider,storyId:initialStoryId,viewMode:initialViewMode,docsOptions={}})=>{let api={storyId:toId,getData:(storyId,refId)=>{let result=api.resolveStory(storyId,refId);if(result?.type==="story"||result?.type==="docs")return result},isPrepared:(storyId,refId)=>{let data=api.getData(storyId,refId);return data?data.type==="story"?data.prepared:!0:!1},resolveStory:(storyId,refId)=>{let{refs,index}=store2.getState();if(!(refId&&!refs[refId]))return refId?refs[refId].index?refs[refId].index[storyId]:void 0:index?index[storyId]:void 0},getCurrentStoryData:()=>{let{storyId,refId}=store2.getState();return api.getData(storyId,refId)},getParameters:(storyIdOrCombo,parameterName)=>{let{storyId,refId}=typeof storyIdOrCombo=="string"?{storyId:storyIdOrCombo,refId:void 0}:storyIdOrCombo,data=api.getData(storyId,refId);if(["story","docs"].includes(data?.type)){let{parameters}=data;if(parameters)return parameterName?parameters[parameterName]:parameters}return null},getCurrentParameter:parameterName=>{let{storyId,refId}=store2.getState();return api.getParameters({storyId,refId},parameterName)||void 0},jumpToComponent:direction=>{let{index,storyId,refs,refId}=store2.getState();if(!api.getData(storyId,refId))return;let hash=refId?refs[refId].index||{}:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!0);result&&api.selectStory(result,void 0,{ref:refId});},jumpToStory:direction=>{let{index,storyId,refs,refId}=store2.getState(),story=api.getData(storyId,refId);if(!story)return;let hash=story.refId?refs[story.refId].index:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!1);result&&api.selectStory(result,void 0,{ref:refId});},selectFirstStory:()=>{let{index}=store2.getState();if(!index)return;let firstStory=Object.keys(index).find(id=>index[id].type==="story");if(firstStory){api.selectStory(firstStory);return}navigate("/");},selectStory:(titleOrId=void 0,name=void 0,options={})=>{let{ref}=options,{storyId,index,refs}=store2.getState(),hash=ref?refs[ref].index:index,kindSlug=storyId?.split("--",2)[0];if(hash)if(name)if(titleOrId){let id=ref?`${ref}_${toId(titleOrId,name)}`:toId(titleOrId,name);if(hash[id])api.selectStory(id,void 0,options);else {let entry=hash[sanitize(titleOrId)];if(entry?.type==="component"){let foundId=entry.children.find(childId=>hash[childId].name===name);foundId&&api.selectStory(foundId,void 0,options);}}}else {let id=toId(kindSlug,name);api.selectStory(id,void 0,options);}else {let entry=titleOrId?hash[titleOrId]||hash[sanitize(titleOrId)]:hash[kindSlug];if(!entry)throw new Error(`Unknown id or title: '${titleOrId}'`);store2.setState({settings:{...store2.getState().settings,lastTrackedStoryId:entry.id}});let leafEntry=api.findLeafEntry(hash,entry.id),fullId=leafEntry.refId?`${leafEntry.refId}_${leafEntry.id}`:leafEntry.id;navigate(`/${leafEntry.type}/${fullId}`);}},findLeafEntry(index,storyId){let entry=index[storyId];if(entry.type==="docs"||entry.type==="story")return entry;let childStoryId=entry.children[0];return api.findLeafEntry(index,childStoryId)},findLeafStoryId(index,storyId){return api.findLeafEntry(index,storyId)?.id},findSiblingStoryId(storyId,index,direction,toSiblingGroup){if(toSiblingGroup){let lookupList2=getComponentLookupList(index),position2=lookupList2.findIndex(i=>i.includes(storyId));return position2===lookupList2.length-1&&direction>0||position2===0&&direction<0?void 0:lookupList2[position2+direction]?lookupList2[position2+direction][0]:void 0}let lookupList=getStoriesLookupList(index),position=lookupList.indexOf(storyId);if(!(position===lookupList.length-1&&direction>0)&&!(position===0&&direction<0))return lookupList[position+direction]},updateStoryArgs:(story,updatedArgs)=>{let{id:storyId,refId}=story;provider.channel?.emit(UPDATE_STORY_ARGS,{storyId,updatedArgs,options:{target:refId}});},resetStoryArgs:(story,argNames)=>{let{id:storyId,refId}=story;provider.channel?.emit(RESET_STORY_ARGS,{storyId,argNames,options:{target:refId}});},fetchIndex:async()=>{try{let result=await fetch2(STORY_INDEX_PATH);if(result.status!==200)throw new Error(await result.text());let storyIndex=await result.json();if(storyIndex.v<3){logger.warn(`Skipping story index with version v${storyIndex.v}, awaiting SET_STORIES.`);return}await api.setIndex(storyIndex);}catch(err){await store2.setState({indexError:err});}},setIndex:async input=>{let{index:oldHash,status,filters}=store2.getState(),newHash=transformStoryIndexToStoriesHash(input,{provider,docsOptions,status,filters}),output=addPreparedStories(newHash,oldHash);await store2.setState({internal_index:input,index:output,indexError:void 0});},updateStory:async(storyId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[storyId]={...index[storyId],...update2},await fullAPI.updateRef(refId,{index});}else {let{index}=store2.getState();if(!index)return;index[storyId]={...index[storyId],...update2},await store2.setState({index});}},updateDocs:async(docsId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[docsId]={...index[docsId],...update2},await fullAPI.updateRef(refId,{index});}else {let{index}=store2.getState();if(!index)return;index[docsId]={...index[docsId],...update2},await store2.setState({index});}},setPreviewInitialized:async ref=>{ref?fullAPI.updateRef(ref.id,{previewInitialized:!0}):store2.setState({previewInitialized:!0});},experimental_updateStatus:async(id,input)=>{let{status,internal_index:index}=store2.getState(),newStatus={...status},update2=typeof input=="function"?input(status):input;if(Object.keys(update2).length!==0&&(Object.entries(update2).forEach(([storyId,value])=>{newStatus[storyId]={...newStatus[storyId]||{}},value===null?delete newStatus[storyId][id]:newStatus[storyId][id]=value,Object.keys(newStatus[storyId]).length===0&&delete newStatus[storyId];}),await store2.setState({status:newStatus},{persistence:"session"}),index)){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0);});}},experimental_setFilter:async(id,filterFunction)=>{let{internal_index:index}=store2.getState();if(await store2.setState({filters:{...store2.getState().filters,[id]:filterFunction}}),index){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0);});}}};provider.channel?.on(STORY_SPECIFIED,function({storyId,viewMode}){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let state=store2.getState(),isCanvasRoute=state.path==="/"||state.viewMode==="story"||state.viewMode==="docs",stateHasSelection=state.viewMode&&state.storyId,stateSelectionDifferent=state.viewMode!==viewMode||state.storyId!==storyId,{type}=state.index?.[state.storyId]||{};isCanvasRoute&&(stateHasSelection&&stateSelectionDifferent&&!(type==="root"||type==="component"||type==="group")?provider.channel?.emit(SET_CURRENT_STORY,{storyId:state.storyId,viewMode:state.viewMode}):stateSelectionDifferent&&navigate(`/${viewMode}/${storyId}`));}}),provider.channel?.on(CURRENT_STORY_WAS_SET,function(){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref);}),provider.channel?.on(STORY_CHANGED,function(){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let options=api.getCurrentParameter("options");options&&fullAPI.setOptions(removeRemovedOptions(options));}}),provider.channel?.on(STORY_PREPARED,function({id,...update2}){let{ref,sourceType}=getEventMetadata(this,fullAPI);if(api.updateStory(id,{...update2,prepared:!0},ref),!ref&&!store2.getState().hasCalledSetOptions){let{options}=update2.parameters;fullAPI.setOptions(removeRemovedOptions(options)),store2.setState({hasCalledSetOptions:!0});}if(sourceType==="local"){let{storyId,index,refId}=store2.getState();if(!index)return;let toBePreloaded=Array.from(new Set([api.findSiblingStoryId(storyId,index,1,!0),api.findSiblingStoryId(storyId,index,-1,!0)])).filter(Boolean);provider.channel?.emit(PRELOAD_ENTRIES,{ids:toBePreloaded,options:{target:refId}});}}),provider.channel?.on(DOCS_PREPARED,function({id,...update2}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(id,{...update2,prepared:!0},ref);}),provider.channel?.on(SET_INDEX,function(index){let{ref}=getEventMetadata(this,fullAPI);if(ref)fullAPI.setRef(ref.id,{...ref,storyIndex:index},!0);else {api.setIndex(index);let options=api.getCurrentParameter("options");fullAPI.setOptions(removeRemovedOptions(options));}}),provider.channel?.on(SET_STORIES,function(data){let{ref}=getEventMetadata(this,fullAPI),setStoriesData=data.v?denormalizeStoryParameters(data):data.stories;if(ref)fullAPI.setRef(ref.id,{...ref,setStoriesData},!0);else throw new Error("Cannot call SET_STORIES for local frame")}),provider.channel?.on(SELECT_STORY,function({kind,title=kind,story,name=story,storyId,...rest}){let{ref}=getEventMetadata(this,fullAPI);ref?fullAPI.selectStory(storyId||title,name,{...rest,ref:ref.id}):fullAPI.selectStory(storyId||title,name,rest);}),provider.channel?.on(STORY_ARGS_UPDATED,function({storyId,args}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(storyId,{args},ref);}),provider.channel?.on(CONFIG_ERROR,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref);}),provider.channel?.on(STORY_MISSING,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref);}),provider.channel?.on(SET_CONFIG,()=>{let config2=provider.getConfig();config2?.sidebar?.filters&&store2.setState({filters:{...store2.getState().filters,...config2?.sidebar?.filters}});});let config=provider.getConfig();return {api,state:{storyId:initialStoryId,viewMode:initialViewMode,hasCalledSetOptions:!1,previewInitialized:!1,status:{},filters:config?.sidebar?.filters||{}},init:async()=>{provider.channel?.on(STORY_INDEX_INVALIDATED,()=>api.fetchIndex()),await api.fetchIndex();}}};var layout_exports={};__export(layout_exports,{ActiveTabs:()=>ActiveTabs,defaultLayoutState:()=>defaultLayoutState,focusableUIElements:()=>focusableUIElements,init:()=>init8});var{document}=global,ActiveTabs={SIDEBAR:"sidebar",CANVAS:"canvas",ADDONS:"addons"},defaultLayoutState={ui:{enableShortcuts:!0},layout:{initialActive:ActiveTabs.CANVAS,showToolbar:!0,navSize:300,bottomPanelHeight:300,rightPanelWidth:400,recentVisibleSizes:{navSize:300,bottomPanelHeight:300,rightPanelWidth:400},panelPosition:"bottom",showTabs:!0},selectedPanel:void 0,theme:create()},focusableUIElements={storySearchField:"storybook-explorer-searchfield",storyListMenu:"storybook-explorer-menu",storyPanelRoot:"storybook-panel-root"},getIsNavShown=state=>state.layout.navSize>0,getIsPanelShown=state=>{let{bottomPanelHeight,rightPanelWidth,panelPosition}=state.layout;return panelPosition==="bottom"&&bottomPanelHeight>0||panelPosition==="right"&&rightPanelWidth>0},getIsFullscreen=state=>!getIsNavShown(state)&&!getIsPanelShown(state),getRecentVisibleSizes=layoutState=>({navSize:layoutState.navSize>0?layoutState.navSize:layoutState.recentVisibleSizes.navSize,bottomPanelHeight:layoutState.bottomPanelHeight>0?layoutState.bottomPanelHeight:layoutState.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:layoutState.rightPanelWidth>0?layoutState.rightPanelWidth:layoutState.recentVisibleSizes.rightPanelWidth}),init8=({store:store2,provider,singleStory})=>{let api={toggleFullscreen(nextState){return store2.setState(state=>{let isFullscreen=getIsFullscreen(state),shouldFullscreen=typeof nextState=="boolean"?nextState:!isFullscreen;return shouldFullscreen===isFullscreen?{layout:state.layout}:shouldFullscreen?{layout:{...state.layout,navSize:0,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}:{layout:{...state.layout,navSize:state.singleStory?0:state.layout.recentVisibleSizes.navSize,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"session"})},togglePanel(nextState){return store2.setState(state=>{let isPanelShown=getIsPanelShown(state),shouldShowPanel=typeof nextState=="boolean"?nextState:!isPanelShown;return shouldShowPanel===isPanelShown?{layout:state.layout}:shouldShowPanel?{layout:{...state.layout,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}:{layout:{...state.layout,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},togglePanelPosition(position){return store2.setState(state=>{let nextPosition=position||(state.layout.panelPosition==="right"?"bottom":"right");return {layout:{...state.layout,panelPosition:nextPosition,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"permanent"})},toggleNav(nextState){return store2.setState(state=>{if(state.singleStory)return {layout:state.layout};let isNavShown=getIsNavShown(state),shouldShowNav=typeof nextState=="boolean"?nextState:!isNavShown;return shouldShowNav===isNavShown?{layout:state.layout}:shouldShowNav?{layout:{...state.layout,navSize:state.layout.recentVisibleSizes.navSize}}:{layout:{...state.layout,navSize:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},toggleToolbar(toggled){return store2.setState(state=>{let value=typeof toggled<"u"?toggled:!state.layout.showToolbar;return {layout:{...state.layout,showToolbar:value}}},{persistence:"session"})},setSizes({navSize,bottomPanelHeight,rightPanelWidth}){return store2.setState(state=>{let nextLayoutState={...state.layout,navSize:navSize??state.layout.navSize,bottomPanelHeight:bottomPanelHeight??state.layout.bottomPanelHeight,rightPanelWidth:rightPanelWidth??state.layout.rightPanelWidth};return {layout:{...nextLayoutState,recentVisibleSizes:getRecentVisibleSizes(nextLayoutState)}}},{persistence:"session"})},focusOnUIElement(elementId,select){if(!elementId)return;let element=document.getElementById(elementId);element&&(element.focus(),select&&element.select());},getInitialOptions(){let{theme,selectedPanel,...options}=provider.getConfig();return {...defaultLayoutState,layout:{...defaultLayoutState.layout,...pick(options,Object.keys(defaultLayoutState.layout)),...singleStory&&{navSize:0}},ui:{...defaultLayoutState.ui,...pick(options,Object.keys(defaultLayoutState.ui))},selectedPanel:selectedPanel||defaultLayoutState.selectedPanel,theme:theme||defaultLayoutState.theme}},getIsFullscreen(){return getIsFullscreen(store2.getState())},getIsPanelShown(){return getIsPanelShown(store2.getState())},getIsNavShown(){return getIsNavShown(store2.getState())},setOptions:options=>{let{layout,ui,selectedPanel,theme}=store2.getState();if(!options)return;let updatedLayout={...layout,...options.layout,...pick(options,Object.keys(layout)),...singleStory&&{navSize:0}},updatedUi={...ui,...options.ui,...pick(options,Object.keys(ui))},updatedTheme={...theme,...options.theme},modification={};dequal(ui,updatedUi)||(modification.ui=updatedUi),dequal(layout,updatedLayout)||(modification.layout=updatedLayout),options.selectedPanel&&!dequal(selectedPanel,options.selectedPanel)&&(modification.selectedPanel=options.selectedPanel),Object.keys(modification).length&&store2.setState(modification,{persistence:"permanent"}),dequal(theme,updatedTheme)||store2.setState({theme:updatedTheme});}},persisted=pick(store2.getState(),"layout","selectedPanel");return provider.channel?.on(SET_CONFIG,()=>{api.setOptions(merge_default(api.getInitialOptions(),persisted));}),{api,state:merge_default(api.getInitialOptions(),persisted)}};var shortcuts_exports={};__export(shortcuts_exports,{controlOrMetaKey:()=>controlOrMetaKey2,defaultShortcuts:()=>defaultShortcuts,init:()=>init9,isMacLike:()=>isMacLike2,keys:()=>keys});var {navigator}=global,isMacLike=()=>navigator&&navigator.platform?!!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaSymbol=()=>isMacLike()?"\u2318":"ctrl",controlOrMetaKey=()=>isMacLike()?"meta":"control",optionOrAltSymbol=()=>isMacLike()?"\u2325":"alt",isShortcutTaken=(arr1,arr2)=>JSON.stringify(arr1)===JSON.stringify(arr2),eventToShortcut=e=>{if(["Meta","Alt","Control","Shift"].includes(e.key))return null;let keys2=[];if(e.altKey&&keys2.push("alt"),e.ctrlKey&&keys2.push("control"),e.metaKey&&keys2.push("meta"),e.shiftKey&&keys2.push("shift"),e.key&&e.key.length===1&&e.key!==" "){let key=e.key.toUpperCase(),code=e.code?.toUpperCase().replace("KEY","").replace("DIGIT","");code&&code.length===1&&code!==key?keys2.push([key,code]):keys2.push(key);}return e.key===" "&&keys2.push("space"),e.key==="Escape"&&keys2.push("escape"),e.key==="ArrowRight"&&keys2.push("ArrowRight"),e.key==="ArrowDown"&&keys2.push("ArrowDown"),e.key==="ArrowUp"&&keys2.push("ArrowUp"),e.key==="ArrowLeft"&&keys2.push("ArrowLeft"),keys2.length>0?keys2:null},shortcutMatchesShortcut=(inputShortcut,shortcut)=>!inputShortcut||!shortcut||(inputShortcut.join("").startsWith("shift/")&&inputShortcut.shift(),inputShortcut.length!==shortcut.length)?!1:!inputShortcut.find((input,i)=>Array.isArray(input)?!input.includes(shortcut[i]):input!==shortcut[i]),eventMatchesShortcut=(e,shortcut)=>shortcutMatchesShortcut(eventToShortcut(e),shortcut),keyToSymbol=key=>key==="alt"?optionOrAltSymbol():key==="control"?"\u2303":key==="meta"?"\u2318":key==="shift"?"\u21E7\u200B":key==="Enter"||key==="Backspace"||key==="Esc"||key==="escape"?"":key===" "?"SPACE":key==="ArrowUp"?"\u2191":key==="ArrowDown"?"\u2193":key==="ArrowLeft"?"\u2190":key==="ArrowRight"?"\u2192":key.toUpperCase(),shortcutToHumanString=shortcut=>shortcut.map(keyToSymbol).join(" ");var{navigator:navigator2,document:document2}=global,isMacLike2=()=>navigator2&&navigator2.platform?!!navigator2.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaKey2=()=>isMacLike2()?"meta":"control";function keys(o){return Object.keys(o)}var defaultShortcuts=Object.freeze({fullScreen:["alt","F"],togglePanel:["alt","A"],panelPosition:["alt","D"],toggleNav:["alt","S"],toolbar:["alt","T"],search:[controlOrMetaKey2(),"K"],focusNav:["1"],focusIframe:["2"],focusPanel:["3"],prevComponent:["alt","ArrowUp"],nextComponent:["alt","ArrowDown"],prevStory:["alt","ArrowLeft"],nextStory:["alt","ArrowRight"],shortcutsPage:[controlOrMetaKey2(),"shift",","],aboutPage:[controlOrMetaKey2(),","],escape:["escape"],collapseAll:[controlOrMetaKey2(),"shift","ArrowUp"],expandAll:[controlOrMetaKey2(),"shift","ArrowDown"],remount:["alt","R"]}),addonsShortcuts={};function focusInInput(event){let target=event.target;return /input|textarea/i.test(target.tagName)||target.getAttribute("contenteditable")!==null}var init9=({store:store2,fullAPI,provider})=>{let api={getShortcutKeys(){return store2.getState().shortcuts},getDefaultShortcuts(){return {...defaultShortcuts,...api.getAddonsShortcutDefaults()}},getAddonsShortcuts(){return addonsShortcuts},getAddonsShortcutLabels(){let labels={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{label}])=>{labels[actionName]=label;}),labels},getAddonsShortcutDefaults(){let defaults={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{defaultShortcut}])=>{defaults[actionName]=defaultShortcut;}),defaults},async setShortcuts(shortcuts){return await store2.setState({shortcuts},{persistence:"permanent"}),shortcuts},async restoreAllDefaultShortcuts(){return api.setShortcuts(api.getDefaultShortcuts())},async setShortcut(action,value){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[action]:value}),value},async setAddonShortcut(addon,shortcut){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[`${addon}-${shortcut.actionName}`]:shortcut.defaultShortcut}),addonsShortcuts[`${addon}-${shortcut.actionName}`]=shortcut,shortcut},async restoreDefaultShortcut(action){let defaultShortcut=api.getDefaultShortcuts()[action];return api.setShortcut(action,defaultShortcut)},handleKeydownEvent(event){let shortcut=eventToShortcut(event),shortcuts=api.getShortcutKeys(),matchedFeature=keys(shortcuts).find(feature=>shortcutMatchesShortcut(shortcut,shortcuts[feature]));matchedFeature&&api.handleShortcutFeature(matchedFeature,event);},handleShortcutFeature(feature,event){let{ui:{enableShortcuts},storyId}=store2.getState();if(enableShortcuts)switch(event?.preventDefault&&event.preventDefault(),feature){case"escape":{fullAPI.getIsFullscreen()?fullAPI.toggleFullscreen(!1):fullAPI.getIsNavShown()&&fullAPI.toggleNav(!0);break}case"focusNav":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),fullAPI.focusOnUIElement(focusableUIElements.storyListMenu);break}case"search":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),setTimeout(()=>{fullAPI.focusOnUIElement(focusableUIElements.storySearchField,!0);},0);break}case"focusIframe":{let element=document2.getElementById("storybook-preview-iframe");if(element)try{element.contentWindow.focus();}catch{}break}case"focusPanel":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.focusOnUIElement(focusableUIElements.storyPanelRoot);break}case"nextStory":{fullAPI.jumpToStory(1);break}case"prevStory":{fullAPI.jumpToStory(-1);break}case"nextComponent":{fullAPI.jumpToComponent(1);break}case"prevComponent":{fullAPI.jumpToComponent(-1);break}case"fullScreen":{fullAPI.toggleFullscreen();break}case"togglePanel":{fullAPI.togglePanel();break}case"toggleNav":{fullAPI.toggleNav();break}case"toolbar":{fullAPI.toggleToolbar();break}case"panelPosition":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.togglePanelPosition();break}case"aboutPage":{fullAPI.navigate("/settings/about");break}case"shortcutsPage":{fullAPI.navigate("/settings/shortcuts");break}case"collapseAll":{fullAPI.collapseAll();break}case"expandAll":{fullAPI.expandAll();break}case"remount":{fullAPI.emit(FORCE_REMOUNT,{storyId});break}default:addonsShortcuts[feature].action();break}}},{shortcuts:persistedShortcuts=defaultShortcuts}=store2.getState(),state={shortcuts:keys(defaultShortcuts).reduce((acc,key)=>({...acc,[key]:persistedShortcuts[key]||defaultShortcuts[key]}),defaultShortcuts)};return {api,state,init:()=>{document2.addEventListener("keydown",event=>{focusInInput(event)||api.handleKeydownEvent(event);}),provider.channel?.on(PREVIEW_KEYDOWN,data=>{api.handleKeydownEvent(data.event);});}}};var url_exports={};__export(url_exports,{init:()=>init10});var{window:globalWindow}=global,parseBoolean=value=>{if(value==="true"||value==="1")return !0;if(value==="false"||value==="0")return !1},prevParams,initialUrlSupport=({state:{location:location2,path,viewMode,storyId:storyIdFromUrl},singleStory})=>{let{full,panel,nav,shortcuts,addonPanel,tabs,path:queryPath,...otherParams}=queryFromLocation(location2),navSize,bottomPanelHeight,rightPanelWidth;parseBoolean(full)===!0?(navSize=0,bottomPanelHeight=0,rightPanelWidth=0):parseBoolean(full)===!1&&(navSize=defaultLayoutState.layout.navSize,bottomPanelHeight=defaultLayoutState.layout.bottomPanelHeight,rightPanelWidth=defaultLayoutState.layout.rightPanelWidth),singleStory||(parseBoolean(nav)===!0&&(navSize=defaultLayoutState.layout.navSize),parseBoolean(nav)===!1&&(navSize=0)),parseBoolean(panel)===!1&&(bottomPanelHeight=0,rightPanelWidth=0);let layout={navSize,bottomPanelHeight,rightPanelWidth,panelPosition:["right","bottom"].includes(panel)?panel:void 0,showTabs:parseBoolean(tabs)},ui={enableShortcuts:parseBoolean(shortcuts)},selectedPanel=addonPanel||void 0,storyId=storyIdFromUrl,customQueryParams=dequal(prevParams,otherParams)?prevParams:otherParams;return prevParams=customQueryParams,{viewMode,layout,ui,selectedPanel,location:location2,path,customQueryParams,storyId}},init10=moduleArgs=>{let{store:store2,navigate,provider,fullAPI}=moduleArgs,navigateTo=(path,queryParams={},options={})=>{let params=Object.entries(queryParams).filter(([,v])=>v).sort(([a],[b])=>a<b?-1:1).map(([k,v])=>`${k}=${v}`),to=[path,...params].join("&");return navigate(to,options)},api={getQueryParam(key){let{customQueryParams}=store2.getState();return customQueryParams?customQueryParams[key]:void 0},getUrlState(){let{path,customQueryParams,storyId,url,viewMode}=store2.getState();return {path,queryParams:customQueryParams,storyId,url,viewMode}},setQueryParams(input){let{customQueryParams}=store2.getState(),queryParams={},update2={...customQueryParams,...Object.entries(input).reduce((acc,[key,value])=>(value!==null&&(acc[key]=value),acc),queryParams)};dequal(customQueryParams,update2)||(store2.setState({customQueryParams:update2}),provider.channel?.emit(UPDATE_QUERY_PARAMS,update2));},applyQueryParams(input){let{path,queryParams}=api.getUrlState();navigateTo(path,{...queryParams,...input}),api.setQueryParams(input);},navigateUrl(url,options){navigate(url,{plain:!0,...options});}},updateArgsParam=()=>{let{path,queryParams,viewMode}=api.getUrlState();if(viewMode!=="story")return;let currentStory=fullAPI.getCurrentStoryData();if(currentStory?.type!=="story")return;let{args,initialArgs}=currentStory,argsString=buildArgsParam(initialArgs,args);navigateTo(path,{...queryParams,args:argsString},{replace:!0}),api.setQueryParams({args:argsString});};provider.channel?.on(SET_CURRENT_STORY,()=>updateArgsParam());let handleOrId;return provider.channel?.on(STORY_ARGS_UPDATED,()=>{"requestIdleCallback"in globalWindow?(handleOrId&&globalWindow.cancelIdleCallback(handleOrId),handleOrId=globalWindow.requestIdleCallback(updateArgsParam,{timeout:1e3})):(handleOrId&&clearTimeout(handleOrId),setTimeout(updateArgsParam,100));}),provider.channel?.on(GLOBALS_UPDATED,({globals,initialGlobals})=>{let{path,queryParams}=api.getUrlState(),globalsString=buildArgsParam(initialGlobals,globals);navigateTo(path,{...queryParams,globals:globalsString},{replace:!0}),api.setQueryParams({globals:globalsString});}),provider.channel?.on(NAVIGATE_URL,(url,options)=>{api.navigateUrl(url,options);}),{api,state:initialUrlSupport(moduleArgs)}};var versions_exports={};__export(versions_exports,{init:()=>init11});var import_semver=__toESM(require_semver2());var version="8.0.0-rc.3";var{VERSIONCHECK}=global,getVersionCheckData=memoize(1)(()=>{try{return {...JSON.parse(VERSIONCHECK).data||{}}}catch{return {}}}),normalizeRendererName=renderer=>renderer.includes("vue")?"vue":renderer,init11=({store:store2})=>{let{dismissedVersionNotification}=store2.getState(),state={versions:{current:{version},...getVersionCheckData()},dismissedVersionNotification},api={getCurrentVersion:()=>{let{versions:{current}}=store2.getState();return current},getLatestVersion:()=>{let{versions:{latest,next,current}}=store2.getState();return current&&import_semver.default.prerelease(current.version)&&next?latest&&import_semver.default.gt(latest.version,next.version)?latest:next:latest},getDocsUrl:({subpath,versioned,renderer})=>{let{versions:{latest,current}}=store2.getState(),url="https://storybook.js.org/docs/";if(versioned&&current?.version&&latest?.version){let versionDiff=import_semver.default.diff(latest.version,current.version);versionDiff==="patch"||versionDiff===null||(url+=`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}/`);}if(subpath&&(url+=`${subpath}/`),renderer&&typeof global.STORYBOOK_RENDERER<"u"){let rendererName=global.STORYBOOK_RENDERER.split("/").pop()?.toLowerCase();rendererName&&(url+=`?renderer=${normalizeRendererName(rendererName)}`);}return url},versionUpdateAvailable:()=>{let latest=api.getLatestVersion(),current=api.getCurrentVersion();if(latest){if(!latest.version||!current.version)return !0;let actualCurrent=!!import_semver.default.prerelease(current.version)?`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}.${import_semver.default.patch(current.version)}`:current.version,diff=import_semver.default.diff(actualCurrent,latest.version);return import_semver.default.gt(latest.version,actualCurrent)&&diff!=="patch"&&!diff.includes("pre")}return !1}};return {init:async()=>{let{versions={}}=store2.getState(),{latest,next}=getVersionCheckData();await store2.setState({versions:{...versions,latest,next}});},state,api}};var whatsnew_exports={};__export(whatsnew_exports,{init:()=>init12});var WHATS_NEW_NOTIFICATION_ID="whats-new",init12=({fullAPI,store:store2,provider})=>{let state={whatsNewData:void 0};function setWhatsNewState(newState){store2.setState({whatsNewData:newState}),state.whatsNewData=newState;}let api={isWhatsNewUnread(){return state.whatsNewData?.status==="SUCCESS"&&!state.whatsNewData.postIsRead},whatsNewHasBeenRead(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewCache({lastReadPost:state.whatsNewData.url}),setWhatsNewState({...state.whatsNewData,postIsRead:!0}),fullAPI.clearNotification(WHATS_NEW_NOTIFICATION_ID));},toggleWhatsNewNotifications(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewState({...state.whatsNewData,disableWhatsNewNotifications:!state.whatsNewData.disableWhatsNewNotifications}),provider.channel?.emit(TOGGLE_WHATS_NEW_NOTIFICATIONS,{disableWhatsNewNotifications:state.whatsNewData.disableWhatsNewNotifications}));}};function getLatestWhatsNewPost(){return provider.channel?.emit(REQUEST_WHATS_NEW_DATA),new Promise(resolve=>provider.channel?.once(RESULT_WHATS_NEW_DATA,({data})=>resolve(data)))}function setWhatsNewCache(cache){provider.channel?.emit(SET_WHATS_NEW_CACHE,cache);}return {init:async()=>{if(global.CONFIG_TYPE!=="DEVELOPMENT")return;let whatsNewData=await getLatestWhatsNewPost();setWhatsNewState(whatsNewData);let urlState=fullAPI.getUrlState();!(urlState?.path==="/onboarding"||urlState.queryParams?.onboarding==="true")&&whatsNewData.status==="SUCCESS"&&!whatsNewData.disableWhatsNewNotifications&&whatsNewData.showNotification&&fullAPI.addNotification({id:WHATS_NEW_NOTIFICATION_ID,link:"/settings/whats-new",content:{headline:whatsNewData.excerpt,subHeadline:"Click to learn what's new in Storybook"},icon:{name:"hearthollow"},onClear({dismissed}){dismissed&&setWhatsNewCache({lastDismissedPost:whatsNewData.url});}});},state,api}};var globals_exports={};__export(globals_exports,{init:()=>init13});var init13=({store:store2,fullAPI,provider})=>{let api={getGlobals(){return store2.getState().globals},getGlobalTypes(){return store2.getState().globalTypes},updateGlobals(newGlobals){provider.channel?.emit(UPDATE_GLOBALS,{globals:newGlobals,options:{target:"storybook-preview-iframe"}});}},state={globals:{},globalTypes:{}},updateGlobals=globals=>{let currentGlobals=store2.getState()?.globals;dequal(globals,currentGlobals)||store2.setState({globals});};return provider.channel?.on(GLOBALS_UPDATED,function({globals}){let{ref}=getEventMetadata(this,fullAPI);ref?logger.warn("received a GLOBALS_UPDATED from a non-local ref. This is not currently supported."):updateGlobals(globals);}),provider.channel?.on(SET_GLOBALS,function({globals,globalTypes}){let{ref}=getEventMetadata(this,fullAPI),currentGlobals=store2.getState()?.globals;ref?Object.keys(globals).length>0&&logger.warn("received globals from a non-local ref. This is not currently supported."):store2.setState({globals,globalTypes}),currentGlobals&&Object.keys(currentGlobals).length!==0&&!dequal(globals,currentGlobals)&&api.updateGlobals(currentGlobals);}),{api,state}};function mockChannel(){let transport={setHandler:()=>{},send:()=>{}};return new Channel({transport})}var AddonStore=class{constructor(){this.loaders={};this.elements={};this.config={};this.getChannel=()=>(this.channel||this.setChannel(mockChannel()),this.channel);this.ready=()=>this.promise;this.hasChannel=()=>!!this.channel;this.setChannel=channel=>{this.channel=channel,this.resolve();};this.setConfig=value=>{Object.assign(this.config,value),this.hasChannel()?this.getChannel().emit(SET_CONFIG,this.config):this.ready().then(channel=>{channel.emit(SET_CONFIG,this.config);});};this.getConfig=()=>this.config;this.register=(id,callback)=>{this.loaders[id]&&logger.warn(`${id} was loaded twice, this could have bad side-effects`),this.loaders[id]=callback;};this.loadAddons=api=>{Object.values(this.loaders).forEach(value=>value(api));};this.promise=new Promise(res=>{this.resolve=()=>res(this.getChannel());});}getElements(type){return this.elements[type]||(this.elements[type]={}),this.elements[type]}add(id,addon){let{type}=addon,collection=this.getElements(type);collection[id]={...addon,id};}},KEY="__STORYBOOK_ADDONS_MANAGER";function getAddonsStore(){return global[KEY]||(global[KEY]=new AddonStore),global[KEY]}var addons=getAddonsStore();var {ActiveTabs:ActiveTabs2}=layout_exports;var ManagerContext=createContext({api:void 0,state:initial_state_default({})}),combineParameters=(...parameterSets)=>mergeWith({},...parameterSets,(objValue,srcValue)=>{if(Array.isArray(srcValue))return srcValue}),ManagerProvider=class extends Component{constructor(props){super(props);this.api={};this.initModules=()=>{this.modules.forEach(module=>{"init"in module&&module.init();});};let{location:location2,path,refId,viewMode=props.docsOptions.docsMode?"docs":props.viewMode,singleStory,storyId,docsOptions,navigate}=props,store2=new Store({getState:()=>this.state,setState:(stateChange,callback)=>(this.setState(stateChange,()=>callback(this.state)),this.state)}),routeData={location:location2,path,viewMode,singleStory,storyId,refId},optionsData={docsOptions};this.state=store2.getInitialState(initial_state_default({...routeData,...optionsData}));let apiData={navigate,store:store2,provider:props.provider};this.modules=[provider_exports,channel_exports,addons_exports,layout_exports,notifications_exports,settings_exports,shortcuts_exports,stories_exports,refs_exports,globals_exports,url_exports,versions_exports,whatsnew_exports].map(m=>m.init({...routeData,...optionsData,...apiData,state:this.state,fullAPI:this.api}));let state=initial_state_default(this.state,...this.modules.map(m=>m.state)),api=Object.assign(this.api,{navigate},...this.modules.map(m=>m.api));this.state=state,this.api=api;}static getDerivedStateFromProps(props,state){return state.path!==props.path?{...state,location:props.location,path:props.path,refId:props.refId,viewMode:props.viewMode,storyId:props.storyId}:null}shouldComponentUpdate(nextProps,nextState){let prevState=this.state,prevProps=this.props;return prevState!==nextState||prevProps.path!==nextProps.path}render(){let{children}=this.props,value={state:this.state,api:this.api};return React.createElement(EffectOnMount,{effect:this.initModules},React.createElement(ManagerContext.Provider,{value},React.createElement(ManagerConsumer,null,children)))}};ManagerProvider.displayName="Manager";var EffectOnMount=({children,effect})=>(React.useEffect(effect,[]),children),defaultFilter=c=>c;function ManagerConsumer({filter=defaultFilter,children}){let managerContext=useContext(ManagerContext),renderer=useRef(children),filterer=useRef(filter);if(typeof renderer.current!="function")return React.createElement(Fragment,null,renderer.current);let comboData=filterer.current(managerContext),comboDataArray=useMemo(()=>[...Object.entries(comboData).reduce((acc,keyval)=>acc.concat(keyval),[])],[managerContext.state]);return useMemo(()=>{let Child=renderer.current;return React.createElement(Child,{...comboData})},comboDataArray)}function useStorybookState(){let{state}=useContext(ManagerContext);return {...state,get storiesHash(){return deprecate("state.storiesHash is deprecated, please use state.index"),this.index||{}},get storiesConfigured(){return deprecate("state.storiesConfigured is deprecated, please use state.previewInitialized"),this.previewInitialized},get storiesFailed(){return deprecate("state.storiesFailed is deprecated, please use state.indexError"),this.indexError}}}function useStorybookApi(){let{api}=useContext(ManagerContext);return api}function orDefault(fromStore,defaultState){return typeof fromStore>"u"?defaultState:fromStore}var useChannel=(eventMap,deps=[])=>{let api=useStorybookApi();return useEffect(()=>(Object.entries(eventMap).forEach(([type,listener])=>api.on(type,listener)),()=>{Object.entries(eventMap).forEach(([type,listener])=>api.off(type,listener));}),deps),api.emit};function useStoryPrepared(storyId){return useStorybookApi().isPrepared(storyId)}function useParameter(parameterKey,defaultValue){let result=useStorybookApi().getCurrentParameter(parameterKey);return orDefault(result,defaultValue)}globalThis.STORYBOOK_ADDON_STATE={};var{STORYBOOK_ADDON_STATE}=globalThis;function useSharedState(stateId,defaultState){let api=useStorybookApi(),existingState=api.getAddonState(stateId)||STORYBOOK_ADDON_STATE[stateId],state=orDefault(existingState,STORYBOOK_ADDON_STATE[stateId]?STORYBOOK_ADDON_STATE[stateId]:defaultState),quicksync=!1;state===defaultState&&defaultState!==void 0&&(STORYBOOK_ADDON_STATE[stateId]=defaultState,quicksync=!0),useEffect(()=>{quicksync&&api.setAddonState(stateId,defaultState);},[quicksync]);let setState=async(s,options)=>{await api.setAddonState(stateId,s,options);let result=api.getAddonState(stateId);return STORYBOOK_ADDON_STATE[stateId]=result,result},allListeners=useMemo(()=>{let stateChangeHandlers={[`${SHARED_STATE_CHANGED}-client-${stateId}`]:setState,[`${SHARED_STATE_SET}-client-${stateId}`]:setState},stateInitializationHandlers={[SET_STORIES]:async()=>{let currentState=api.getAddonState(stateId);currentState?(STORYBOOK_ADDON_STATE[stateId]=currentState,api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,currentState)):STORYBOOK_ADDON_STATE[stateId]?(await setState(STORYBOOK_ADDON_STATE[stateId]),api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,STORYBOOK_ADDON_STATE[stateId])):defaultState!==void 0&&(await setState(defaultState),STORYBOOK_ADDON_STATE[stateId]=defaultState,api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,defaultState));},[STORY_CHANGED]:()=>{let currentState=api.getAddonState(stateId);currentState!==void 0&&api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,currentState);}};return {...stateChangeHandlers,...stateInitializationHandlers}},[stateId]),emit=useChannel(allListeners);return [state,async(newStateOrMerger,options)=>{await setState(newStateOrMerger,options);let result=api.getAddonState(stateId);emit(`${SHARED_STATE_CHANGED}-manager-${stateId}`,result);}]}function useAddonState(addonId,defaultState){return useSharedState(addonId,defaultState)}function useArgs(){let{getCurrentStoryData,updateStoryArgs,resetStoryArgs}=useStorybookApi(),data=getCurrentStoryData(),args=data?.type==="story"?data.args:{},updateArgs=useCallback(newArgs=>updateStoryArgs(data,newArgs),[data,updateStoryArgs]),resetArgs=useCallback(argNames=>resetStoryArgs(data,argNames),[data,resetStoryArgs]);return [args,updateArgs,resetArgs]}function useGlobals(){let api=useStorybookApi();return [api.getGlobals(),api.updateGlobals]}function useGlobalTypes(){return useStorybookApi().getGlobalTypes()}function useCurrentStory(){let{getCurrentStoryData}=useStorybookApi();return getCurrentStoryData()}function useArgTypes(){let current=useCurrentStory();return current?.type==="story"&&current.argTypes||{}}var typesX=Addon_TypesEnum;
35
+ `});let versions=ref.versions&&Object.keys(ref.versions).length?ref.versions:loadedData.versions;await api.setRef(id,{id,url:urlParseResult.url,...loadedData,...versions?{versions}:{},type:loadedData.storyIndex?"lazy":"auto-inject"});},getRefs:()=>{let{refs:refs2={}}=store2.getState();return refs2},setRef:async(id,{storyIndex,setStoriesData,...rest},ready=!1)=>{if(singleStory)return;let internal_index,index,{filters}=store2.getState(),{storyMapper=defaultStoryMapper}=provider.getConfig(),ref=api.getRefs()[id];(storyIndex||setStoriesData)&&(internal_index=setStoriesData?transformSetStoriesStoryDataToPreparedStoryIndex(map(setStoriesData,ref,{storyMapper})):storyIndex,index=transformStoryIndexToStoriesHash(storyIndex,{provider,docsOptions,filters,status:{}})),index&&(index=addRefIds(index,ref)),await api.updateRef(id,{...ref,...rest,index,internal_index});},updateRef:async(id,data)=>{let{[id]:ref,...updated}=api.getRefs();updated[id]={...ref,...data};let ordered=Object.keys(initialState).reduce((obj,key)=>(obj[key]=updated[key],obj),{});await store2.setState({refs:ordered});}},refs=!singleStory&&global.REFS||{},initialState=refs;return runCheck&&new Promise(async resolve=>{for(let ref of Object.values(refs))await api.checkRef({...ref,stories:{}});resolve(void 0);}),{api,state:{refs:initialState}}};var getEventMetadata=(context,fullAPI)=>{let{source,refId,type}=context,[sourceType,sourceLocation]=getSourceType(source,refId),ref;(refId||sourceType==="external")&&(ref=refId&&fullAPI.getRefs()[refId]?fullAPI.getRefs()[refId]:fullAPI.findRef(sourceLocation));let meta={source,sourceType,sourceLocation,refId,ref,type};switch(!0){case typeof refId=="string":case sourceType==="local":case sourceType==="external":return meta;default:return logger.warn(`Received a ${type} frame that was not configured as a ref`),null}};var{fetch:fetch2}=global,STORY_INDEX_PATH="./index.json",removedOptions=["enableShortcuts","theme","showRoots"];function removeRemovedOptions(options){if(!options||typeof options=="string")return options;let result={...options};return removedOptions.forEach(option=>{option in result&&delete result[option];}),result}var init7=({fullAPI,store:store2,navigate,provider,storyId:initialStoryId,viewMode:initialViewMode,docsOptions={}})=>{let api={storyId:toId,getData:(storyId,refId)=>{let result=api.resolveStory(storyId,refId);if(result?.type==="story"||result?.type==="docs")return result},isPrepared:(storyId,refId)=>{let data=api.getData(storyId,refId);return data?data.type==="story"?data.prepared:!0:!1},resolveStory:(storyId,refId)=>{let{refs,index}=store2.getState();if(!(refId&&!refs[refId]))return refId?refs[refId].index?refs[refId].index[storyId]:void 0:index?index[storyId]:void 0},getCurrentStoryData:()=>{let{storyId,refId}=store2.getState();return api.getData(storyId,refId)},getParameters:(storyIdOrCombo,parameterName)=>{let{storyId,refId}=typeof storyIdOrCombo=="string"?{storyId:storyIdOrCombo,refId:void 0}:storyIdOrCombo,data=api.getData(storyId,refId);if(["story","docs"].includes(data?.type)){let{parameters}=data;if(parameters)return parameterName?parameters[parameterName]:parameters}return null},getCurrentParameter:parameterName=>{let{storyId,refId}=store2.getState();return api.getParameters({storyId,refId},parameterName)||void 0},jumpToComponent:direction=>{let{index,storyId,refs,refId}=store2.getState();if(!api.getData(storyId,refId))return;let hash=refId?refs[refId].index||{}:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!0);result&&api.selectStory(result,void 0,{ref:refId});},jumpToStory:direction=>{let{index,storyId,refs,refId}=store2.getState(),story=api.getData(storyId,refId);if(!story)return;let hash=story.refId?refs[story.refId].index:index;if(!hash)return;let result=api.findSiblingStoryId(storyId,hash,direction,!1);result&&api.selectStory(result,void 0,{ref:refId});},selectFirstStory:()=>{let{index}=store2.getState();if(!index)return;let firstStory=Object.keys(index).find(id=>index[id].type==="story");if(firstStory){api.selectStory(firstStory);return}navigate("/");},selectStory:(titleOrId=void 0,name=void 0,options={})=>{let{ref}=options,{storyId,index,refs}=store2.getState(),hash=ref?refs[ref].index:index,kindSlug=storyId?.split("--",2)[0];if(hash)if(name)if(titleOrId){let id=ref?`${ref}_${toId(titleOrId,name)}`:toId(titleOrId,name);if(hash[id])api.selectStory(id,void 0,options);else {let entry=hash[sanitize(titleOrId)];if(entry?.type==="component"){let foundId=entry.children.find(childId=>hash[childId].name===name);foundId&&api.selectStory(foundId,void 0,options);}}}else {let id=toId(kindSlug,name);api.selectStory(id,void 0,options);}else {let entry=titleOrId?hash[titleOrId]||hash[sanitize(titleOrId)]:hash[kindSlug];if(!entry)throw new Error(`Unknown id or title: '${titleOrId}'`);store2.setState({settings:{...store2.getState().settings,lastTrackedStoryId:entry.id}});let leafEntry=api.findLeafEntry(hash,entry.id),fullId=leafEntry.refId?`${leafEntry.refId}_${leafEntry.id}`:leafEntry.id;navigate(`/${leafEntry.type}/${fullId}`);}},findLeafEntry(index,storyId){let entry=index[storyId];if(entry.type==="docs"||entry.type==="story")return entry;let childStoryId=entry.children[0];return api.findLeafEntry(index,childStoryId)},findLeafStoryId(index,storyId){return api.findLeafEntry(index,storyId)?.id},findSiblingStoryId(storyId,index,direction,toSiblingGroup){if(toSiblingGroup){let lookupList2=getComponentLookupList(index),position2=lookupList2.findIndex(i=>i.includes(storyId));return position2===lookupList2.length-1&&direction>0||position2===0&&direction<0?void 0:lookupList2[position2+direction]?lookupList2[position2+direction][0]:void 0}let lookupList=getStoriesLookupList(index),position=lookupList.indexOf(storyId);if(!(position===lookupList.length-1&&direction>0)&&!(position===0&&direction<0))return lookupList[position+direction]},updateStoryArgs:(story,updatedArgs)=>{let{id:storyId,refId}=story;provider.channel?.emit(UPDATE_STORY_ARGS,{storyId,updatedArgs,options:{target:refId}});},resetStoryArgs:(story,argNames)=>{let{id:storyId,refId}=story;provider.channel?.emit(RESET_STORY_ARGS,{storyId,argNames,options:{target:refId}});},fetchIndex:async()=>{try{let result=await fetch2(STORY_INDEX_PATH);if(result.status!==200)throw new Error(await result.text());let storyIndex=await result.json();if(storyIndex.v<3){logger.warn(`Skipping story index with version v${storyIndex.v}, awaiting SET_STORIES.`);return}await api.setIndex(storyIndex);}catch(err){await store2.setState({indexError:err});}},setIndex:async input=>{let{index:oldHash,status,filters}=store2.getState(),newHash=transformStoryIndexToStoriesHash(input,{provider,docsOptions,status,filters}),output=addPreparedStories(newHash,oldHash);await store2.setState({internal_index:input,index:output,indexError:void 0});},updateStory:async(storyId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[storyId]={...index[storyId],...update2},await fullAPI.updateRef(refId,{index});}else {let{index}=store2.getState();if(!index)return;index[storyId]={...index[storyId],...update2},await store2.setState({index});}},updateDocs:async(docsId,update2,ref)=>{if(ref){let{id:refId,index}=ref;index[docsId]={...index[docsId],...update2},await fullAPI.updateRef(refId,{index});}else {let{index}=store2.getState();if(!index)return;index[docsId]={...index[docsId],...update2},await store2.setState({index});}},setPreviewInitialized:async ref=>{ref?fullAPI.updateRef(ref.id,{previewInitialized:!0}):store2.setState({previewInitialized:!0});},experimental_updateStatus:async(id,input)=>{let{status,internal_index:index}=store2.getState(),newStatus={...status},update2=typeof input=="function"?input(status):input;if(Object.keys(update2).length!==0&&(Object.entries(update2).forEach(([storyId,value])=>{newStatus[storyId]={...newStatus[storyId]||{}},value===null?delete newStatus[storyId][id]:newStatus[storyId][id]=value,Object.keys(newStatus[storyId]).length===0&&delete newStatus[storyId];}),await store2.setState({status:newStatus},{persistence:"session"}),index)){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0);});}},experimental_setFilter:async(id,filterFunction)=>{let{internal_index:index}=store2.getState();if(await store2.setState({filters:{...store2.getState().filters,[id]:filterFunction}}),index){await api.setIndex(index);let refs=await fullAPI.getRefs();Object.entries(refs).forEach(([refId,{internal_index,...ref}])=>{fullAPI.setRef(refId,{...ref,storyIndex:internal_index},!0);});}}};provider.channel?.on(STORY_SPECIFIED,function({storyId,viewMode}){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let state=store2.getState(),isCanvasRoute=state.path==="/"||state.viewMode==="story"||state.viewMode==="docs",stateHasSelection=state.viewMode&&state.storyId,stateSelectionDifferent=state.viewMode!==viewMode||state.storyId!==storyId,{type}=state.index?.[state.storyId]||{};isCanvasRoute&&(stateHasSelection&&stateSelectionDifferent&&!(type==="root"||type==="component"||type==="group")?provider.channel?.emit(SET_CURRENT_STORY,{storyId:state.storyId,viewMode:state.viewMode}):stateSelectionDifferent&&navigate(`/${viewMode}/${storyId}`));}}),provider.channel?.on(CURRENT_STORY_WAS_SET,function(){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref);}),provider.channel?.on(STORY_CHANGED,function(){let{sourceType}=getEventMetadata(this,fullAPI);if(sourceType==="local"){let options=api.getCurrentParameter("options");options&&fullAPI.setOptions(removeRemovedOptions(options));}}),provider.channel?.on(STORY_PREPARED,function({id,...update2}){let{ref,sourceType}=getEventMetadata(this,fullAPI);if(api.updateStory(id,{...update2,prepared:!0},ref),!ref&&!store2.getState().hasCalledSetOptions){let{options}=update2.parameters;fullAPI.setOptions(removeRemovedOptions(options)),store2.setState({hasCalledSetOptions:!0});}if(sourceType==="local"){let{storyId,index,refId}=store2.getState();if(!index)return;let toBePreloaded=Array.from(new Set([api.findSiblingStoryId(storyId,index,1,!0),api.findSiblingStoryId(storyId,index,-1,!0)])).filter(Boolean);provider.channel?.emit(PRELOAD_ENTRIES,{ids:toBePreloaded,options:{target:refId}});}}),provider.channel?.on(DOCS_PREPARED,function({id,...update2}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(id,{...update2,prepared:!0},ref);}),provider.channel?.on(SET_INDEX,function(index){let{ref}=getEventMetadata(this,fullAPI);if(ref)fullAPI.setRef(ref.id,{...ref,storyIndex:index},!0);else {api.setIndex(index);let options=api.getCurrentParameter("options");fullAPI.setOptions(removeRemovedOptions(options));}}),provider.channel?.on(SET_STORIES,function(data){let{ref}=getEventMetadata(this,fullAPI),setStoriesData=data.v?denormalizeStoryParameters(data):data.stories;if(ref)fullAPI.setRef(ref.id,{...ref,setStoriesData},!0);else throw new Error("Cannot call SET_STORIES for local frame")}),provider.channel?.on(SELECT_STORY,function({kind,title=kind,story,name=story,storyId,...rest}){let{ref}=getEventMetadata(this,fullAPI);ref?fullAPI.selectStory(storyId||title,name,{...rest,ref:ref.id}):fullAPI.selectStory(storyId||title,name,rest);}),provider.channel?.on(STORY_ARGS_UPDATED,function({storyId,args}){let{ref}=getEventMetadata(this,fullAPI);api.updateStory(storyId,{args},ref);}),provider.channel?.on(CONFIG_ERROR,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref);}),provider.channel?.on(STORY_MISSING,function(err){let{ref}=getEventMetadata(this,fullAPI);api.setPreviewInitialized(ref);}),provider.channel?.on(SET_CONFIG,()=>{let config2=provider.getConfig();config2?.sidebar?.filters&&store2.setState({filters:{...store2.getState().filters,...config2?.sidebar?.filters}});});let config=provider.getConfig();return {api,state:{storyId:initialStoryId,viewMode:initialViewMode,hasCalledSetOptions:!1,previewInitialized:!1,status:{},filters:config?.sidebar?.filters||{}},init:async()=>{provider.channel?.on(STORY_INDEX_INVALIDATED,()=>api.fetchIndex()),await api.fetchIndex();}}};var layout_exports={};__export(layout_exports,{ActiveTabs:()=>ActiveTabs,defaultLayoutState:()=>defaultLayoutState,focusableUIElements:()=>focusableUIElements,init:()=>init8});var{document}=global,ActiveTabs={SIDEBAR:"sidebar",CANVAS:"canvas",ADDONS:"addons"},defaultLayoutState={ui:{enableShortcuts:!0},layout:{initialActive:ActiveTabs.CANVAS,showToolbar:!0,navSize:300,bottomPanelHeight:300,rightPanelWidth:400,recentVisibleSizes:{navSize:300,bottomPanelHeight:300,rightPanelWidth:400},panelPosition:"bottom",showTabs:!0},selectedPanel:void 0,theme:create()},focusableUIElements={storySearchField:"storybook-explorer-searchfield",storyListMenu:"storybook-explorer-menu",storyPanelRoot:"storybook-panel-root"},getIsNavShown=state=>state.layout.navSize>0,getIsPanelShown=state=>{let{bottomPanelHeight,rightPanelWidth,panelPosition}=state.layout;return panelPosition==="bottom"&&bottomPanelHeight>0||panelPosition==="right"&&rightPanelWidth>0},getIsFullscreen=state=>!getIsNavShown(state)&&!getIsPanelShown(state),getRecentVisibleSizes=layoutState=>({navSize:layoutState.navSize>0?layoutState.navSize:layoutState.recentVisibleSizes.navSize,bottomPanelHeight:layoutState.bottomPanelHeight>0?layoutState.bottomPanelHeight:layoutState.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:layoutState.rightPanelWidth>0?layoutState.rightPanelWidth:layoutState.recentVisibleSizes.rightPanelWidth}),init8=({store:store2,provider,singleStory})=>{let api={toggleFullscreen(nextState){return store2.setState(state=>{let isFullscreen=getIsFullscreen(state),shouldFullscreen=typeof nextState=="boolean"?nextState:!isFullscreen;return shouldFullscreen===isFullscreen?{layout:state.layout}:shouldFullscreen?{layout:{...state.layout,navSize:0,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}:{layout:{...state.layout,navSize:state.singleStory?0:state.layout.recentVisibleSizes.navSize,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"session"})},togglePanel(nextState){return store2.setState(state=>{let isPanelShown=getIsPanelShown(state),shouldShowPanel=typeof nextState=="boolean"?nextState:!isPanelShown;return shouldShowPanel===isPanelShown?{layout:state.layout}:shouldShowPanel?{layout:{...state.layout,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}:{layout:{...state.layout,bottomPanelHeight:0,rightPanelWidth:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},togglePanelPosition(position){return store2.setState(state=>{let nextPosition=position||(state.layout.panelPosition==="right"?"bottom":"right");return {layout:{...state.layout,panelPosition:nextPosition,bottomPanelHeight:state.layout.recentVisibleSizes.bottomPanelHeight,rightPanelWidth:state.layout.recentVisibleSizes.rightPanelWidth}}},{persistence:"permanent"})},toggleNav(nextState){return store2.setState(state=>{if(state.singleStory)return {layout:state.layout};let isNavShown=getIsNavShown(state),shouldShowNav=typeof nextState=="boolean"?nextState:!isNavShown;return shouldShowNav===isNavShown?{layout:state.layout}:shouldShowNav?{layout:{...state.layout,navSize:state.layout.recentVisibleSizes.navSize}}:{layout:{...state.layout,navSize:0,recentVisibleSizes:getRecentVisibleSizes(state.layout)}}},{persistence:"session"})},toggleToolbar(toggled){return store2.setState(state=>{let value=typeof toggled<"u"?toggled:!state.layout.showToolbar;return {layout:{...state.layout,showToolbar:value}}},{persistence:"session"})},setSizes({navSize,bottomPanelHeight,rightPanelWidth}){return store2.setState(state=>{let nextLayoutState={...state.layout,navSize:navSize??state.layout.navSize,bottomPanelHeight:bottomPanelHeight??state.layout.bottomPanelHeight,rightPanelWidth:rightPanelWidth??state.layout.rightPanelWidth};return {layout:{...nextLayoutState,recentVisibleSizes:getRecentVisibleSizes(nextLayoutState)}}},{persistence:"session"})},focusOnUIElement(elementId,select){if(!elementId)return;let element=document.getElementById(elementId);element&&(element.focus(),select&&element.select());},getInitialOptions(){let{theme,selectedPanel,...options}=provider.getConfig();return {...defaultLayoutState,layout:{...defaultLayoutState.layout,...pick(options,Object.keys(defaultLayoutState.layout)),...singleStory&&{navSize:0}},ui:{...defaultLayoutState.ui,...pick(options,Object.keys(defaultLayoutState.ui))},selectedPanel:selectedPanel||defaultLayoutState.selectedPanel,theme:theme||defaultLayoutState.theme}},getIsFullscreen(){return getIsFullscreen(store2.getState())},getIsPanelShown(){return getIsPanelShown(store2.getState())},getIsNavShown(){return getIsNavShown(store2.getState())},setOptions:options=>{let{layout,ui,selectedPanel,theme}=store2.getState();if(!options)return;let updatedLayout={...layout,...options.layout,...pick(options,Object.keys(layout)),...singleStory&&{navSize:0}},updatedUi={...ui,...options.ui,...pick(options,Object.keys(ui))},updatedTheme={...theme,...options.theme},modification={};dequal(ui,updatedUi)||(modification.ui=updatedUi),dequal(layout,updatedLayout)||(modification.layout=updatedLayout),options.selectedPanel&&!dequal(selectedPanel,options.selectedPanel)&&(modification.selectedPanel=options.selectedPanel),Object.keys(modification).length&&store2.setState(modification,{persistence:"permanent"}),dequal(theme,updatedTheme)||store2.setState({theme:updatedTheme});}},persisted=pick(store2.getState(),"layout","selectedPanel");return provider.channel?.on(SET_CONFIG,()=>{api.setOptions(merge_default(api.getInitialOptions(),persisted));}),{api,state:merge_default(api.getInitialOptions(),persisted)}};var shortcuts_exports={};__export(shortcuts_exports,{controlOrMetaKey:()=>controlOrMetaKey2,defaultShortcuts:()=>defaultShortcuts,init:()=>init9,isMacLike:()=>isMacLike2,keys:()=>keys});var {navigator}=global,isMacLike=()=>navigator&&navigator.platform?!!navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaSymbol=()=>isMacLike()?"\u2318":"ctrl",controlOrMetaKey=()=>isMacLike()?"meta":"control",optionOrAltSymbol=()=>isMacLike()?"\u2325":"alt",isShortcutTaken=(arr1,arr2)=>JSON.stringify(arr1)===JSON.stringify(arr2),eventToShortcut=e=>{if(["Meta","Alt","Control","Shift"].includes(e.key))return null;let keys2=[];if(e.altKey&&keys2.push("alt"),e.ctrlKey&&keys2.push("control"),e.metaKey&&keys2.push("meta"),e.shiftKey&&keys2.push("shift"),e.key&&e.key.length===1&&e.key!==" "){let key=e.key.toUpperCase(),code=e.code?.toUpperCase().replace("KEY","").replace("DIGIT","");code&&code.length===1&&code!==key?keys2.push([key,code]):keys2.push(key);}return e.key===" "&&keys2.push("space"),e.key==="Escape"&&keys2.push("escape"),e.key==="ArrowRight"&&keys2.push("ArrowRight"),e.key==="ArrowDown"&&keys2.push("ArrowDown"),e.key==="ArrowUp"&&keys2.push("ArrowUp"),e.key==="ArrowLeft"&&keys2.push("ArrowLeft"),keys2.length>0?keys2:null},shortcutMatchesShortcut=(inputShortcut,shortcut)=>!inputShortcut||!shortcut||(inputShortcut.join("").startsWith("shift/")&&inputShortcut.shift(),inputShortcut.length!==shortcut.length)?!1:!inputShortcut.find((input,i)=>Array.isArray(input)?!input.includes(shortcut[i]):input!==shortcut[i]),eventMatchesShortcut=(e,shortcut)=>shortcutMatchesShortcut(eventToShortcut(e),shortcut),keyToSymbol=key=>key==="alt"?optionOrAltSymbol():key==="control"?"\u2303":key==="meta"?"\u2318":key==="shift"?"\u21E7\u200B":key==="Enter"||key==="Backspace"||key==="Esc"||key==="escape"?"":key===" "?"SPACE":key==="ArrowUp"?"\u2191":key==="ArrowDown"?"\u2193":key==="ArrowLeft"?"\u2190":key==="ArrowRight"?"\u2192":key.toUpperCase(),shortcutToHumanString=shortcut=>shortcut.map(keyToSymbol).join(" ");var{navigator:navigator2,document:document2}=global,isMacLike2=()=>navigator2&&navigator2.platform?!!navigator2.platform.match(/(Mac|iPhone|iPod|iPad)/i):!1,controlOrMetaKey2=()=>isMacLike2()?"meta":"control";function keys(o){return Object.keys(o)}var defaultShortcuts=Object.freeze({fullScreen:["alt","F"],togglePanel:["alt","A"],panelPosition:["alt","D"],toggleNav:["alt","S"],toolbar:["alt","T"],search:[controlOrMetaKey2(),"K"],focusNav:["1"],focusIframe:["2"],focusPanel:["3"],prevComponent:["alt","ArrowUp"],nextComponent:["alt","ArrowDown"],prevStory:["alt","ArrowLeft"],nextStory:["alt","ArrowRight"],shortcutsPage:[controlOrMetaKey2(),"shift",","],aboutPage:[controlOrMetaKey2(),","],escape:["escape"],collapseAll:[controlOrMetaKey2(),"shift","ArrowUp"],expandAll:[controlOrMetaKey2(),"shift","ArrowDown"],remount:["alt","R"]}),addonsShortcuts={};function focusInInput(event){let target=event.target;return /input|textarea/i.test(target.tagName)||target.getAttribute("contenteditable")!==null}var init9=({store:store2,fullAPI,provider})=>{let api={getShortcutKeys(){return store2.getState().shortcuts},getDefaultShortcuts(){return {...defaultShortcuts,...api.getAddonsShortcutDefaults()}},getAddonsShortcuts(){return addonsShortcuts},getAddonsShortcutLabels(){let labels={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{label}])=>{labels[actionName]=label;}),labels},getAddonsShortcutDefaults(){let defaults={};return Object.entries(api.getAddonsShortcuts()).forEach(([actionName,{defaultShortcut}])=>{defaults[actionName]=defaultShortcut;}),defaults},async setShortcuts(shortcuts){return await store2.setState({shortcuts},{persistence:"permanent"}),shortcuts},async restoreAllDefaultShortcuts(){return api.setShortcuts(api.getDefaultShortcuts())},async setShortcut(action,value){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[action]:value}),value},async setAddonShortcut(addon,shortcut){let shortcuts=api.getShortcutKeys();return await api.setShortcuts({...shortcuts,[`${addon}-${shortcut.actionName}`]:shortcut.defaultShortcut}),addonsShortcuts[`${addon}-${shortcut.actionName}`]=shortcut,shortcut},async restoreDefaultShortcut(action){let defaultShortcut=api.getDefaultShortcuts()[action];return api.setShortcut(action,defaultShortcut)},handleKeydownEvent(event){let shortcut=eventToShortcut(event),shortcuts=api.getShortcutKeys(),matchedFeature=keys(shortcuts).find(feature=>shortcutMatchesShortcut(shortcut,shortcuts[feature]));matchedFeature&&api.handleShortcutFeature(matchedFeature,event);},handleShortcutFeature(feature,event){let{ui:{enableShortcuts},storyId}=store2.getState();if(enableShortcuts)switch(event?.preventDefault&&event.preventDefault(),feature){case"escape":{fullAPI.getIsFullscreen()?fullAPI.toggleFullscreen(!1):fullAPI.getIsNavShown()&&fullAPI.toggleNav(!0);break}case"focusNav":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),fullAPI.focusOnUIElement(focusableUIElements.storyListMenu);break}case"search":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsNavShown()||fullAPI.toggleNav(!0),setTimeout(()=>{fullAPI.focusOnUIElement(focusableUIElements.storySearchField,!0);},0);break}case"focusIframe":{let element=document2.getElementById("storybook-preview-iframe");if(element)try{element.contentWindow.focus();}catch{}break}case"focusPanel":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.focusOnUIElement(focusableUIElements.storyPanelRoot);break}case"nextStory":{fullAPI.jumpToStory(1);break}case"prevStory":{fullAPI.jumpToStory(-1);break}case"nextComponent":{fullAPI.jumpToComponent(1);break}case"prevComponent":{fullAPI.jumpToComponent(-1);break}case"fullScreen":{fullAPI.toggleFullscreen();break}case"togglePanel":{fullAPI.togglePanel();break}case"toggleNav":{fullAPI.toggleNav();break}case"toolbar":{fullAPI.toggleToolbar();break}case"panelPosition":{fullAPI.getIsFullscreen()&&fullAPI.toggleFullscreen(!1),fullAPI.getIsPanelShown()||fullAPI.togglePanel(!0),fullAPI.togglePanelPosition();break}case"aboutPage":{fullAPI.navigate("/settings/about");break}case"shortcutsPage":{fullAPI.navigate("/settings/shortcuts");break}case"collapseAll":{fullAPI.collapseAll();break}case"expandAll":{fullAPI.expandAll();break}case"remount":{fullAPI.emit(FORCE_REMOUNT,{storyId});break}default:addonsShortcuts[feature].action();break}}},{shortcuts:persistedShortcuts=defaultShortcuts}=store2.getState(),state={shortcuts:keys(defaultShortcuts).reduce((acc,key)=>({...acc,[key]:persistedShortcuts[key]||defaultShortcuts[key]}),defaultShortcuts)};return {api,state,init:()=>{document2.addEventListener("keydown",event=>{focusInInput(event)||api.handleKeydownEvent(event);}),provider.channel?.on(PREVIEW_KEYDOWN,data=>{api.handleKeydownEvent(data.event);});}}};var url_exports={};__export(url_exports,{init:()=>init10});var{window:globalWindow}=global,parseBoolean=value=>{if(value==="true"||value==="1")return !0;if(value==="false"||value==="0")return !1},prevParams,initialUrlSupport=({state:{location:location2,path,viewMode,storyId:storyIdFromUrl},singleStory})=>{let{full,panel,nav,shortcuts,addonPanel,tabs,path:queryPath,...otherParams}=queryFromLocation(location2),navSize,bottomPanelHeight,rightPanelWidth;parseBoolean(full)===!0?(navSize=0,bottomPanelHeight=0,rightPanelWidth=0):parseBoolean(full)===!1&&(navSize=defaultLayoutState.layout.navSize,bottomPanelHeight=defaultLayoutState.layout.bottomPanelHeight,rightPanelWidth=defaultLayoutState.layout.rightPanelWidth),singleStory||(parseBoolean(nav)===!0&&(navSize=defaultLayoutState.layout.navSize),parseBoolean(nav)===!1&&(navSize=0)),parseBoolean(panel)===!1&&(bottomPanelHeight=0,rightPanelWidth=0);let layout={navSize,bottomPanelHeight,rightPanelWidth,panelPosition:["right","bottom"].includes(panel)?panel:void 0,showTabs:parseBoolean(tabs)},ui={enableShortcuts:parseBoolean(shortcuts)},selectedPanel=addonPanel||void 0,storyId=storyIdFromUrl,customQueryParams=dequal(prevParams,otherParams)?prevParams:otherParams;return prevParams=customQueryParams,{viewMode,layout,ui,selectedPanel,location:location2,path,customQueryParams,storyId}},init10=moduleArgs=>{let{store:store2,navigate,provider,fullAPI}=moduleArgs,navigateTo=(path,queryParams={},options={})=>{let params=Object.entries(queryParams).filter(([,v])=>v).sort(([a],[b])=>a<b?-1:1).map(([k,v])=>`${k}=${v}`),to=[path,...params].join("&");return navigate(to,options)},api={getQueryParam(key){let{customQueryParams}=store2.getState();return customQueryParams?customQueryParams[key]:void 0},getUrlState(){let{path,customQueryParams,storyId,url,viewMode}=store2.getState();return {path,queryParams:customQueryParams,storyId,url,viewMode}},setQueryParams(input){let{customQueryParams}=store2.getState(),queryParams={},update2={...customQueryParams,...Object.entries(input).reduce((acc,[key,value])=>(value!==null&&(acc[key]=value),acc),queryParams)};dequal(customQueryParams,update2)||(store2.setState({customQueryParams:update2}),provider.channel?.emit(UPDATE_QUERY_PARAMS,update2));},applyQueryParams(input){let{path,queryParams}=api.getUrlState();navigateTo(path,{...queryParams,...input}),api.setQueryParams(input);},navigateUrl(url,options){navigate(url,{plain:!0,...options});}},updateArgsParam=()=>{let{path,queryParams,viewMode}=api.getUrlState();if(viewMode!=="story")return;let currentStory=fullAPI.getCurrentStoryData();if(currentStory?.type!=="story")return;let{args,initialArgs}=currentStory,argsString=buildArgsParam(initialArgs,args);navigateTo(path,{...queryParams,args:argsString},{replace:!0}),api.setQueryParams({args:argsString});};provider.channel?.on(SET_CURRENT_STORY,()=>updateArgsParam());let handleOrId;return provider.channel?.on(STORY_ARGS_UPDATED,()=>{"requestIdleCallback"in globalWindow?(handleOrId&&globalWindow.cancelIdleCallback(handleOrId),handleOrId=globalWindow.requestIdleCallback(updateArgsParam,{timeout:1e3})):(handleOrId&&clearTimeout(handleOrId),setTimeout(updateArgsParam,100));}),provider.channel?.on(GLOBALS_UPDATED,({globals,initialGlobals})=>{let{path,queryParams}=api.getUrlState(),globalsString=buildArgsParam(initialGlobals,globals);navigateTo(path,{...queryParams,globals:globalsString},{replace:!0}),api.setQueryParams({globals:globalsString});}),provider.channel?.on(NAVIGATE_URL,(url,options)=>{api.navigateUrl(url,options);}),{api,state:initialUrlSupport(moduleArgs)}};var versions_exports={};__export(versions_exports,{init:()=>init11});var import_semver=__toESM(require_semver2());var version="8.0.0-rc.5";var{VERSIONCHECK}=global,getVersionCheckData=memoize(1)(()=>{try{return {...JSON.parse(VERSIONCHECK).data||{}}}catch{return {}}}),normalizeRendererName=renderer=>renderer.includes("vue")?"vue":renderer,init11=({store:store2})=>{let{dismissedVersionNotification}=store2.getState(),state={versions:{current:{version},...getVersionCheckData()},dismissedVersionNotification},api={getCurrentVersion:()=>{let{versions:{current}}=store2.getState();return current},getLatestVersion:()=>{let{versions:{latest,next,current}}=store2.getState();return current&&import_semver.default.prerelease(current.version)&&next?latest&&import_semver.default.gt(latest.version,next.version)?latest:next:latest},getDocsUrl:({subpath,versioned,renderer})=>{let{versions:{latest,current}}=store2.getState(),url="https://storybook.js.org/docs/";if(versioned&&current?.version&&latest?.version){let versionDiff=import_semver.default.diff(latest.version,current.version);versionDiff==="patch"||versionDiff===null||(url+=`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}/`);}if(subpath&&(url+=`${subpath}/`),renderer&&typeof global.STORYBOOK_RENDERER<"u"){let rendererName=global.STORYBOOK_RENDERER.split("/").pop()?.toLowerCase();rendererName&&(url+=`?renderer=${normalizeRendererName(rendererName)}`);}return url},versionUpdateAvailable:()=>{let latest=api.getLatestVersion(),current=api.getCurrentVersion();if(latest){if(!latest.version||!current.version)return !0;let actualCurrent=!!import_semver.default.prerelease(current.version)?`${import_semver.default.major(current.version)}.${import_semver.default.minor(current.version)}.${import_semver.default.patch(current.version)}`:current.version,diff=import_semver.default.diff(actualCurrent,latest.version);return import_semver.default.gt(latest.version,actualCurrent)&&diff!=="patch"&&!diff.includes("pre")}return !1}};return {init:async()=>{let{versions={}}=store2.getState(),{latest,next}=getVersionCheckData();await store2.setState({versions:{...versions,latest,next}});},state,api}};var whatsnew_exports={};__export(whatsnew_exports,{init:()=>init12});var WHATS_NEW_NOTIFICATION_ID="whats-new",init12=({fullAPI,store:store2,provider})=>{let state={whatsNewData:void 0};function setWhatsNewState(newState){store2.setState({whatsNewData:newState}),state.whatsNewData=newState;}let api={isWhatsNewUnread(){return state.whatsNewData?.status==="SUCCESS"&&!state.whatsNewData.postIsRead},whatsNewHasBeenRead(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewCache({lastReadPost:state.whatsNewData.url}),setWhatsNewState({...state.whatsNewData,postIsRead:!0}),fullAPI.clearNotification(WHATS_NEW_NOTIFICATION_ID));},toggleWhatsNewNotifications(){state.whatsNewData?.status==="SUCCESS"&&(setWhatsNewState({...state.whatsNewData,disableWhatsNewNotifications:!state.whatsNewData.disableWhatsNewNotifications}),provider.channel?.emit(TOGGLE_WHATS_NEW_NOTIFICATIONS,{disableWhatsNewNotifications:state.whatsNewData.disableWhatsNewNotifications}));}};function getLatestWhatsNewPost(){return provider.channel?.emit(REQUEST_WHATS_NEW_DATA),new Promise(resolve=>provider.channel?.once(RESULT_WHATS_NEW_DATA,({data})=>resolve(data)))}function setWhatsNewCache(cache){provider.channel?.emit(SET_WHATS_NEW_CACHE,cache);}return {init:async()=>{if(global.CONFIG_TYPE!=="DEVELOPMENT")return;let whatsNewData=await getLatestWhatsNewPost();setWhatsNewState(whatsNewData);let urlState=fullAPI.getUrlState();!(urlState?.path==="/onboarding"||urlState.queryParams?.onboarding==="true")&&whatsNewData.status==="SUCCESS"&&!whatsNewData.disableWhatsNewNotifications&&whatsNewData.showNotification&&fullAPI.addNotification({id:WHATS_NEW_NOTIFICATION_ID,link:"/settings/whats-new",content:{headline:whatsNewData.title,subHeadline:"Learn what's new in Storybook"},icon:{name:"storybook"},onClear({dismissed}){dismissed&&setWhatsNewCache({lastDismissedPost:whatsNewData.url});}});},state,api}};var globals_exports={};__export(globals_exports,{init:()=>init13});var init13=({store:store2,fullAPI,provider})=>{let api={getGlobals(){return store2.getState().globals},getGlobalTypes(){return store2.getState().globalTypes},updateGlobals(newGlobals){provider.channel?.emit(UPDATE_GLOBALS,{globals:newGlobals,options:{target:"storybook-preview-iframe"}});}},state={globals:{},globalTypes:{}},updateGlobals=globals=>{let currentGlobals=store2.getState()?.globals;dequal(globals,currentGlobals)||store2.setState({globals});};return provider.channel?.on(GLOBALS_UPDATED,function({globals}){let{ref}=getEventMetadata(this,fullAPI);ref?logger.warn("received a GLOBALS_UPDATED from a non-local ref. This is not currently supported."):updateGlobals(globals);}),provider.channel?.on(SET_GLOBALS,function({globals,globalTypes}){let{ref}=getEventMetadata(this,fullAPI),currentGlobals=store2.getState()?.globals;ref?Object.keys(globals).length>0&&logger.warn("received globals from a non-local ref. This is not currently supported."):store2.setState({globals,globalTypes}),currentGlobals&&Object.keys(currentGlobals).length!==0&&!dequal(globals,currentGlobals)&&api.updateGlobals(currentGlobals);}),{api,state}};function mockChannel(){let transport={setHandler:()=>{},send:()=>{}};return new Channel({transport})}var AddonStore=class{constructor(){this.loaders={};this.elements={};this.config={};this.getChannel=()=>(this.channel||this.setChannel(mockChannel()),this.channel);this.ready=()=>this.promise;this.hasChannel=()=>!!this.channel;this.setChannel=channel=>{this.channel=channel,this.resolve();};this.setConfig=value=>{Object.assign(this.config,value),this.hasChannel()?this.getChannel().emit(SET_CONFIG,this.config):this.ready().then(channel=>{channel.emit(SET_CONFIG,this.config);});};this.getConfig=()=>this.config;this.register=(id,callback)=>{this.loaders[id]&&logger.warn(`${id} was loaded twice, this could have bad side-effects`),this.loaders[id]=callback;};this.loadAddons=api=>{Object.values(this.loaders).forEach(value=>value(api));};this.promise=new Promise(res=>{this.resolve=()=>res(this.getChannel());});}getElements(type){return this.elements[type]||(this.elements[type]={}),this.elements[type]}add(id,addon){let{type}=addon,collection=this.getElements(type);collection[id]={...addon,id};}},KEY="__STORYBOOK_ADDONS_MANAGER";function getAddonsStore(){return global[KEY]||(global[KEY]=new AddonStore),global[KEY]}var addons=getAddonsStore();var {ActiveTabs:ActiveTabs2}=layout_exports;var ManagerContext=createContext({api:void 0,state:initial_state_default({})}),combineParameters=(...parameterSets)=>mergeWith({},...parameterSets,(objValue,srcValue)=>{if(Array.isArray(srcValue))return srcValue}),ManagerProvider=class extends Component{constructor(props){super(props);this.api={};this.initModules=()=>{this.modules.forEach(module=>{"init"in module&&module.init();});};let{location:location2,path,refId,viewMode=props.docsOptions.docsMode?"docs":props.viewMode,singleStory,storyId,docsOptions,navigate}=props,store2=new Store({getState:()=>this.state,setState:(stateChange,callback)=>(this.setState(stateChange,()=>callback(this.state)),this.state)}),routeData={location:location2,path,viewMode,singleStory,storyId,refId},optionsData={docsOptions};this.state=store2.getInitialState(initial_state_default({...routeData,...optionsData}));let apiData={navigate,store:store2,provider:props.provider};this.modules=[provider_exports,channel_exports,addons_exports,layout_exports,notifications_exports,settings_exports,shortcuts_exports,stories_exports,refs_exports,globals_exports,url_exports,versions_exports,whatsnew_exports].map(m=>m.init({...routeData,...optionsData,...apiData,state:this.state,fullAPI:this.api}));let state=initial_state_default(this.state,...this.modules.map(m=>m.state)),api=Object.assign(this.api,{navigate},...this.modules.map(m=>m.api));this.state=state,this.api=api;}static getDerivedStateFromProps(props,state){return state.path!==props.path?{...state,location:props.location,path:props.path,refId:props.refId,viewMode:props.viewMode,storyId:props.storyId}:null}shouldComponentUpdate(nextProps,nextState){let prevState=this.state,prevProps=this.props;return prevState!==nextState||prevProps.path!==nextProps.path}render(){let{children}=this.props,value={state:this.state,api:this.api};return React.createElement(EffectOnMount,{effect:this.initModules},React.createElement(ManagerContext.Provider,{value},React.createElement(ManagerConsumer,null,children)))}};ManagerProvider.displayName="Manager";var EffectOnMount=({children,effect})=>(React.useEffect(effect,[]),children),defaultFilter=c=>c;function ManagerConsumer({filter=defaultFilter,children}){let managerContext=useContext(ManagerContext),renderer=useRef(children),filterer=useRef(filter);if(typeof renderer.current!="function")return React.createElement(Fragment,null,renderer.current);let comboData=filterer.current(managerContext),comboDataArray=useMemo(()=>[...Object.entries(comboData).reduce((acc,keyval)=>acc.concat(keyval),[])],[managerContext.state]);return useMemo(()=>{let Child=renderer.current;return React.createElement(Child,{...comboData})},comboDataArray)}function useStorybookState(){let{state}=useContext(ManagerContext);return {...state,get storiesHash(){return deprecate("state.storiesHash is deprecated, please use state.index"),this.index||{}},get storiesConfigured(){return deprecate("state.storiesConfigured is deprecated, please use state.previewInitialized"),this.previewInitialized},get storiesFailed(){return deprecate("state.storiesFailed is deprecated, please use state.indexError"),this.indexError}}}function useStorybookApi(){let{api}=useContext(ManagerContext);return api}function orDefault(fromStore,defaultState){return typeof fromStore>"u"?defaultState:fromStore}var useChannel=(eventMap,deps=[])=>{let api=useStorybookApi();return useEffect(()=>(Object.entries(eventMap).forEach(([type,listener])=>api.on(type,listener)),()=>{Object.entries(eventMap).forEach(([type,listener])=>api.off(type,listener));}),deps),api.emit};function useStoryPrepared(storyId){return useStorybookApi().isPrepared(storyId)}function useParameter(parameterKey,defaultValue){let result=useStorybookApi().getCurrentParameter(parameterKey);return orDefault(result,defaultValue)}globalThis.STORYBOOK_ADDON_STATE={};var{STORYBOOK_ADDON_STATE}=globalThis;function useSharedState(stateId,defaultState){let api=useStorybookApi(),existingState=api.getAddonState(stateId)||STORYBOOK_ADDON_STATE[stateId],state=orDefault(existingState,STORYBOOK_ADDON_STATE[stateId]?STORYBOOK_ADDON_STATE[stateId]:defaultState),quicksync=!1;state===defaultState&&defaultState!==void 0&&(STORYBOOK_ADDON_STATE[stateId]=defaultState,quicksync=!0),useEffect(()=>{quicksync&&api.setAddonState(stateId,defaultState);},[quicksync]);let setState=async(s,options)=>{await api.setAddonState(stateId,s,options);let result=api.getAddonState(stateId);return STORYBOOK_ADDON_STATE[stateId]=result,result},allListeners=useMemo(()=>{let stateChangeHandlers={[`${SHARED_STATE_CHANGED}-client-${stateId}`]:setState,[`${SHARED_STATE_SET}-client-${stateId}`]:setState},stateInitializationHandlers={[SET_STORIES]:async()=>{let currentState=api.getAddonState(stateId);currentState?(STORYBOOK_ADDON_STATE[stateId]=currentState,api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,currentState)):STORYBOOK_ADDON_STATE[stateId]?(await setState(STORYBOOK_ADDON_STATE[stateId]),api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,STORYBOOK_ADDON_STATE[stateId])):defaultState!==void 0&&(await setState(defaultState),STORYBOOK_ADDON_STATE[stateId]=defaultState,api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,defaultState));},[STORY_CHANGED]:()=>{let currentState=api.getAddonState(stateId);currentState!==void 0&&api.emit(`${SHARED_STATE_SET}-manager-${stateId}`,currentState);}};return {...stateChangeHandlers,...stateInitializationHandlers}},[stateId]),emit=useChannel(allListeners);return [state,async(newStateOrMerger,options)=>{await setState(newStateOrMerger,options);let result=api.getAddonState(stateId);emit(`${SHARED_STATE_CHANGED}-manager-${stateId}`,result);}]}function useAddonState(addonId,defaultState){return useSharedState(addonId,defaultState)}function useArgs(){let{getCurrentStoryData,updateStoryArgs,resetStoryArgs}=useStorybookApi(),data=getCurrentStoryData(),args=data?.type==="story"?data.args:{},updateArgs=useCallback(newArgs=>updateStoryArgs(data,newArgs),[data,updateStoryArgs]),resetArgs=useCallback(argNames=>resetStoryArgs(data,argNames),[data,resetStoryArgs]);return [args,updateArgs,resetArgs]}function useGlobals(){let api=useStorybookApi();return [api.getGlobals(),api.updateGlobals]}function useGlobalTypes(){return useStorybookApi().getGlobalTypes()}function useCurrentStory(){let{getCurrentStoryData}=useStorybookApi();return getCurrentStoryData()}function useArgTypes(){let current=useCurrentStory();return current?.type==="story"&&current.argTypes||{}}var typesX=Addon_TypesEnum;
36
36
 
37
37
  export { ActiveTabs2 as ActiveTabs, ManagerConsumer as Consumer, ManagerContext, ManagerProvider as Provider, addons, combineParameters, controlOrMetaKey, controlOrMetaSymbol, eventMatchesShortcut, eventToShortcut, isMacLike, isShortcutTaken, keyToSymbol, merge_default as merge, mockChannel, optionOrAltSymbol, shortcutMatchesShortcut, shortcutToHumanString, typesX as types, useAddonState, useArgTypes, useArgs, useChannel, useGlobalTypes, useGlobals, useParameter, useSharedState, useStoryPrepared, useStorybookApi, useStorybookState };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/manager-api",
3
- "version": "8.0.0-rc.3",
3
+ "version": "8.0.0-rc.5",
4
4
  "description": "Core Storybook Manager API & Context",
5
5
  "keywords": [
6
6
  "storybook"
@@ -44,14 +44,14 @@
44
44
  "prep": "node --loader ../../../scripts/node_modules/esbuild-register/loader.js -r ../../../scripts/node_modules/esbuild-register/register.js ../../../scripts/prepare/bundle.ts"
45
45
  },
46
46
  "dependencies": {
47
- "@storybook/channels": "8.0.0-rc.3",
48
- "@storybook/client-logger": "8.0.0-rc.3",
49
- "@storybook/core-events": "8.0.0-rc.3",
47
+ "@storybook/channels": "8.0.0-rc.5",
48
+ "@storybook/client-logger": "8.0.0-rc.5",
49
+ "@storybook/core-events": "8.0.0-rc.5",
50
50
  "@storybook/csf": "^0.1.2",
51
51
  "@storybook/global": "^5.0.0",
52
- "@storybook/router": "8.0.0-rc.3",
53
- "@storybook/theming": "8.0.0-rc.3",
54
- "@storybook/types": "8.0.0-rc.3",
52
+ "@storybook/router": "8.0.0-rc.5",
53
+ "@storybook/theming": "8.0.0-rc.5",
54
+ "@storybook/types": "8.0.0-rc.5",
55
55
  "dequal": "^2.0.2",
56
56
  "lodash": "^4.17.21",
57
57
  "memoizerific": "^1.11.3",