@storybook/vue
Version:
Storybook Vue renderer
2 lines (1 loc) • 6.55 kB
JavaScript
var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var entry_preview_docs_exports={};__export(entry_preview_docs_exports,{argTypesEnhancers:()=>argTypesEnhancers,decorators:()=>decorators,parameters:()=>parameters});module.exports=__toCommonJS(entry_preview_docs_exports);var import_docs_tools3=require("@storybook/docs-tools");var import_docs_tools=require("@storybook/docs-tools"),SECTIONS=["props","events","slots","methods"];function inferEnum(propDef,docgenInfo){let{type,values}=docgenInfo;if(!(Array.isArray(values)&&values.length&&type&&type.name!=="enum"))return!1;let enumString=values.join(", "),{summary}=propDef.type;return summary=summary?`${summary}: ${enumString}`:enumString,Object.assign(propDef.type,{...propDef.type,name:"enum",value:values,summary}),propDef}function verifyPropDef(propDef,docgenInfo){let def=propDef,isChanged=!1,callbacks=[inferEnum];for(let i=0,len=callbacks.length;i<len;i+=1){let matched=callbacks[i](propDef,docgenInfo);matched&&(def=matched,isChanged=!0)}return[def,isChanged]}var extractArgTypes=component=>{if(!(0,import_docs_tools.hasDocgen)(component))return null;let results={};return SECTIONS.forEach(section=>{(0,import_docs_tools.extractComponentProps)(component,section).forEach(({propDef,docgenInfo,jsDocTags})=>{let[result,isPropDefChanged]=verifyPropDef(propDef,docgenInfo),{name,type,description,defaultValue:defaultSummary,required}=result,sbType;isPropDefChanged?sbType=type:sbType=section==="props"?(0,import_docs_tools.convert)(docgenInfo):{name:"void"},results[name]={name,description,type:{required,...sbType},table:{type,jsDocTags,defaultValue:defaultSummary,category:section}}})}),results};var import_preview_api=require("@storybook/preview-api"),import_client_logger=require("@storybook/client-logger"),import_docs_tools2=require("@storybook/docs-tools"),skipSourceRender=context=>{var _a;let sourceParams=(_a=context==null?void 0:context.parameters.docs)==null?void 0:_a.source,isArgsStory=context==null?void 0:context.parameters.__isArgsStory;return(sourceParams==null?void 0:sourceParams.type)===import_docs_tools2.SourceType.DYNAMIC?!1:!isArgsStory||(sourceParams==null?void 0:sourceParams.code)||(sourceParams==null?void 0:sourceParams.type)===import_docs_tools2.SourceType.CODE},sourceDecorator=(storyFn,context)=>{let story=storyFn(),source="";if(skipSourceRender(context))return story;let channel=import_preview_api.addons.getChannel(),storyComponent=getStoryComponent(story.options.STORYBOOK_WRAPS),generateSource=vueInstance=>{try{let storyNode=lookupStoryInstance(vueInstance,storyComponent);if(!storyNode){import_client_logger.logger.warn(`Failed to find story component in the rendered tree: ${storyComponent}`);return}vueInstance.source=vnodeToString(storyNode._vnode)}catch(e){import_client_logger.logger.warn(`Failed to generate dynamic story source: ${e}`)}};return{components:{Story:story},data(){return{source}},updated(){generateSource(this)},mounted(){this.$watch("source",val=>channel.emit(import_docs_tools2.SNIPPET_RENDERED,context.id,`<template>${val}</template>`,"vue")),generateSource(this)},template:"<story />"}};function vnodeToString(vnode){var _a,_b,_c;let attrString=[...(_a=vnode.data)!=null&&_a.slot?[["slot",vnode.data.slot]]:[],["class",stringifyClassAttribute(vnode)],...(_b=vnode.componentOptions)!=null&&_b.propsData?Object.entries(vnode.componentOptions.propsData):[],...(_c=vnode.data)!=null&&_c.attrs?Object.entries(vnode.data.attrs):[]].filter(([name],index,list)=>list.findIndex(item=>item[0]===name)===index).map(([name,value])=>stringifyAttr(name,value)).filter(Boolean).join(" ");if(!vnode.componentOptions)return vnode.tag?vnode.children?`<${vnode.tag} ${attrString}>${vnode.children.map(vnodeToString).join("")}</${vnode.tag}>`:`<${vnode.tag} ${attrString}/>`:vnode.text?/[<>"&]/.test(vnode.text)?`{{\`${vnode.text.replace(/`/g,"\\`")}\`}}`:vnode.text:"";let tag=vnode.componentOptions.tag||vnode.tag||"unknown-component";return vnode.componentOptions.children?`<${tag} ${attrString}>${vnode.componentOptions.children.map(vnodeToString).join("")}</${tag}>`:`<${tag} ${attrString}/>`}function stringifyClassAttribute(vnode){var _a;if(!(!vnode.data||!vnode.data.staticClass&&!vnode.data.class))return[...((_a=vnode.data.staticClass)==null?void 0:_a.split(" "))??[],...normalizeClassBinding(vnode.data.class)].filter(Boolean).join(" ")||void 0}function normalizeClassBinding(binding){return binding?typeof binding=="string"?[binding]:binding instanceof Array?binding.map(normalizeClassBinding).reduce((a,b)=>[...a,...b],[]):typeof binding=="object"?Object.entries(binding).filter(([,active])=>!!active).map(([className])=>className):[]:[]}function stringifyAttr(attrName,value){return typeof value>"u"||typeof value=="function"?null:value===!0?attrName:typeof value=="string"?`${attrName}=${quote(value)}`:`:${attrName}=${quote(JSON.stringify(value))}`}function quote(value){return value.includes('"')&&!value.includes("'")?`'${value}'`:`"${value.replace(/"/g,""")}"`}function getStoryComponent(w){let matched=w;for(;matched&&matched.options&&matched.options.components&&matched.options.components.story&&matched.options.components.story.options&&matched.options.components.story.options.STORYBOOK_WRAPS;)matched=matched.options.components.story.options.STORYBOOK_WRAPS;return matched}function lookupStoryInstance(instance,storyComponent){if(instance.$vnode&&instance.$vnode.componentOptions&&instance.$vnode.componentOptions.Ctor===storyComponent)return instance;for(let i=0,l=instance.$children.length;i<l;i+=1){let found=lookupStoryInstance(instance.$children[i],storyComponent);if(found)return found}return null}var parameters={docs:{story:{inline:!0,iframeHeight:"120px"},extractArgTypes,extractComponentDescription:import_docs_tools3.extractComponentDescription}},decorators=[sourceDecorator],argTypesEnhancers=[import_docs_tools3.enhanceArgTypes];0&&(module.exports={argTypesEnhancers,decorators,parameters});
;