@storybook/vue3 8.3.0-alpha.0 → 8.3.0-alpha.10
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/entry-preview-docs.d.ts +8 -6
- package/dist/entry-preview-docs.js +16 -5
- package/dist/entry-preview-docs.mjs +18 -9
- package/dist/entry-preview.d.ts +1 -1
- package/dist/entry-preview.js +1 -1
- package/dist/entry-preview.mjs +1 -1
- package/dist/index.d.ts +40 -65
- package/dist/index.js +1 -1
- package/dist/index.mjs +4 -5
- package/dist/preset.js +1 -1
- package/dist/public-types-bcb3e860.d.ts +40 -0
- package/package.json +12 -8
- package/template/cli/js/Button.stories.js +1 -0
- package/template/cli/js/Header.stories.js +1 -0
- package/template/cli/js/Page.stories.js +2 -1
- package/template/cli/ts-3-8/Button.stories.ts +2 -1
- package/template/cli/ts-3-8/Page.stories.ts +2 -1
- package/template/cli/ts-4-9/Button.stories.ts +2 -1
- package/template/cli/ts-4-9/Header.stories.ts +1 -1
- package/template/cli/ts-4-9/Page.stories.ts +2 -1
- package/template/components/index.js +1 -1
- package/template/stories/preview.js +0 -2
- package/dist/{chunk-ERN3BQXJ.mjs → chunk-IBPFZ7LW.mjs} +0 -0
- package/dist/{render-866998d8.d.ts → render-0377a2e9.d.ts} +1 -1
@@ -1,19 +1,21 @@
|
|
1
|
-
import
|
2
|
-
import {
|
3
|
-
import {
|
1
|
+
import { D as Decorator } from './public-types-bcb3e860.js';
|
2
|
+
import { ArgTypesExtractor } from 'storybook/internal/docs-tools';
|
3
|
+
import { ArgTypesEnhancer } from 'storybook/internal/types';
|
4
4
|
import { V as VueRenderer } from './types-1ede6954.js';
|
5
|
+
import 'type-fest';
|
5
6
|
import 'vue';
|
7
|
+
import 'vue-component-type-helpers';
|
6
8
|
|
7
9
|
declare const parameters: {
|
8
10
|
docs: {
|
9
11
|
story: {
|
10
12
|
inline: boolean;
|
11
13
|
};
|
12
|
-
extractArgTypes:
|
13
|
-
extractComponentDescription:
|
14
|
+
extractArgTypes: ArgTypesExtractor;
|
15
|
+
extractComponentDescription: (component?: any) => string;
|
14
16
|
};
|
15
17
|
};
|
16
|
-
declare const decorators:
|
18
|
+
declare const decorators: Decorator[];
|
17
19
|
declare const argTypesEnhancers: ArgTypesEnhancer<VueRenderer>[];
|
18
20
|
|
19
21
|
export { argTypesEnhancers, decorators, parameters };
|
@@ -1,5 +1,16 @@
|
|
1
|
-
"use strict";var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__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 __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__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/internal/docs-tools");var import_docs_tools=require("storybook/internal/docs-tools"),ARG_TYPE_SECTIONS=["props","events","slots","exposed","expose"],extractArgTypes=component=>{if(!(0,import_docs_tools.hasDocgen)(component))return null;let usedDocgenPlugin="exposed"in component.__docgenInfo?"vue-component-meta":"vue-docgen-api",argTypes2={};return ARG_TYPE_SECTIONS.forEach(section=>{(0,import_docs_tools.extractComponentProps)(component,section).forEach(extractedProp=>{let argType;if(usedDocgenPlugin==="vue-docgen-api"){let docgenInfo=extractedProp.docgenInfo;argType=extractFromVueDocgenApi(docgenInfo,section,extractedProp)}else{let docgenInfo=extractedProp.docgenInfo;argType=extractFromVueComponentMeta(docgenInfo,section)}if(!argType||argTypes2[argType.name])return;["events","expose","exposed"].includes(section)&&(argType.control={disable:!0}),argTypes2[argType.name]=argType})}),argTypes2},extractFromVueDocgenApi=(docgenInfo,section,extractedProp)=>{let type,sbType;if(section==="events"&&(type=docgenInfo.type?.names.join(),sbType={name:"other",value:type??"",required:!1}),section==="slots"){let slotBindings=docgenInfo.bindings?.filter(binding=>!!binding.name).map(binding=>`${binding.name}: ${binding.type?.name??"unknown"}`).join("; ");type=slotBindings?`{ ${slotBindings} }`:void 0,sbType={name:"other",value:type??"",required:!1}}if(section==="props"){let propInfo=docgenInfo;if(type=propInfo.type?.name,sbType=extractedProp?(0,import_docs_tools.convert)(extractedProp.docgenInfo):{name:"other",value:type},propInfo.type&&"elements"in propInfo.type&&Array.isArray(propInfo.type.elements)&&propInfo.type.elements.length>0){let elements=propInfo.type.elements.map(i=>i.name);type==="Array"&&(type=`${elements.length===1?elements[0]:`(${elements.join(" | ")})`}[]`),type==="union"?type=elements.join(" | "):type==="intersection"&&(type=elements.join(" & "))}}let required="required"in docgenInfo?docgenInfo.required??!1:!1;return{name:docgenInfo.name,description:docgenInfo.description,type:sbType?{...sbType,required}:{name:"other",value:type??""},table:{type:type?{summary:type}:void 0,defaultValue:extractedProp?.propDef.defaultValue??void 0,jsDocTags:extractedProp?.propDef.jsDocTags,category:section}}},extractFromVueComponentMeta=(docgenInfo,section)=>{if("global"in docgenInfo&&docgenInfo.global)return;let tableType={summary:docgenInfo.type.replace(" | undefined","")};if(section==="props"){let propInfo=docgenInfo,defaultValue=propInfo.default?{summary:propInfo.default}:void 0;return{name:propInfo.name,description:formatDescriptionWithTags(propInfo.description,propInfo.tags),defaultValue,type:convertVueComponentMetaProp(propInfo),table:{type:tableType,defaultValue,category:section}}}else return{name:docgenInfo.name,description:"description"in docgenInfo?docgenInfo.description:"",type:{name:"other",value:docgenInfo.type},table:{type:tableType,category:section}}},convertVueComponentMetaProp=propInfo=>{let schema=propInfo.schema,required=propInfo.required,fallbackSbType={name:"other",value:propInfo.type,required},KNOWN_SCHEMAS=["string","number","function","boolean","symbol"];if(typeof schema=="string")return KNOWN_SCHEMAS.includes(schema)?{name:schema,required}:fallbackSbType;switch(schema.kind){case"enum":{let definedSchemas=schema.schema?.filter(item=>item!=="undefined")??[];return isBooleanSchema(definedSchemas)?{name:"boolean",required}:isLiteralUnionSchema(definedSchemas)||isEnumSchema(definedSchemas)?{name:"enum",value:definedSchemas.map(literal=>literal.replace(/"/g,"")),required}:definedSchemas.length===1?convertVueComponentMetaProp({schema:definedSchemas[0],type:propInfo.type,required}):(definedSchemas.length>2&&definedSchemas.includes("true")&&definedSchemas.includes("false")&&(definedSchemas=definedSchemas.filter(i=>i!=="true"&&i!=="false"),definedSchemas.push("boolean")),{name:"union",value:definedSchemas.map(i=>convertVueComponentMetaProp(typeof i=="object"?{schema:i,type:i.type,required:!1}:{schema:i,type:i,required:!1})),required})}case"array":{let definedSchemas=schema.schema?.filter(item=>item!=="undefined")??[];return definedSchemas.length===0?fallbackSbType:definedSchemas.length===1?{name:"array",value:convertVueComponentMetaProp({schema:definedSchemas[0],type:propInfo.type,required:!1}),required}:{name:"union",value:definedSchemas.map(i=>convertVueComponentMetaProp(typeof i=="object"?{schema:i,type:i.type,required:!1}:{schema:i,type:i,required:!1})),required}}case"object":return{name:"object",value:Object.entries(schema.schema??{}).reduce((obj,[propName,propSchema])=>(obj[propName]=convertVueComponentMetaProp(propSchema),obj),{}),required};default:return fallbackSbType}},formatDescriptionWithTags=(description,tags)=>!tags?.length||!description?description??"":`${tags.map(tag=>`@${tag.name}: ${tag.text}`).join("<br>")}<br><br>${description}`,isLiteralUnionSchema=schemas=>schemas.every(schema=>typeof schema=="string"&&schema.startsWith('"')&&schema.endsWith('"')),isEnumSchema=schemas=>schemas.every(schema=>typeof schema=="string"&&schema.includes(".")),isBooleanSchema=schemas=>schemas.length===2&&schemas.includes("true")&&schemas.includes("false");var import_preview_api=require("storybook/internal/preview-api"),import_docs_tools2=require("storybook/internal/docs-tools"),import_compiler_core=require("@vue/compiler-core"),import_vue=require("vue"),import_kebabCase=__toESM(require("lodash/kebabCase"));var omitEvent=args2=>args2?Object.fromEntries(Object.entries(args2).filter(([key,value])=>!key.startsWith("on"))):{},displayObject=obj=>obj&&typeof obj=="object"?`{${Object.keys(obj).map(key=>`${key}:${displayObject(obj[key])}`).join(",")}}`:typeof obj=="string"?`'${obj}'`:obj?.toString(),htmlEventAttributeToVueEventAttribute=key=>/^on[A-Za-z]/.test(key)?key.replace(/^on/,"v-on:").toLowerCase():key,directiveSource=(key,value)=>key.toLowerCase().startsWith("on")?`${htmlEventAttributeToVueEventAttribute(key)}='()=>({})'`:`${key}="${value||""}"`,attributeSource=(key,value,dynamic)=>["boolean","number","object"].includes(typeof value)||dynamic&&["style","class"].includes(key)?`:${key}="${displayObject(value)}"`:directiveSource(key,value),evalExp=(argExpValue,args2)=>{let evalVal=argExpValue;return evalVal&&/v-bind="(\w+)"/.test(evalVal)?evalVal.replace(/"(\w+)"/g,`"${displayObject(args2)}"`):(Object.keys(args2).forEach(akey=>{let regexMatch=new RegExp(`(\\w+)\\.${akey}`,"g"),regexTarget=new RegExp(`(\\w+)\\.${akey}`,"g");regexMatch.test(evalVal)&&(evalVal=evalVal.replace(regexTarget,displayObject(args2[akey])))}),evalVal)},replaceValueWithRef=(source2,args2,ref)=>{let value=ref?args2[ref]:"args",bindValue=()=>{let argsRef=Object.fromEntries(Object.entries(args2).map(([key])=>[key,key]));return displayObject(argsRef).replace(/'/g,"")},regexMatch=new RegExp(`="${value}"`,"g");return source2.replace(regexMatch,`="${ref??bindValue()}"`)};function generateExpression(slot){let body=slot.toString().split("=>")[1].trim().replace("return","").trim();return body.startsWith("{")&&body.endsWith("}")&&(body=body.substring(1,body.length-1).trim()),`{{${body}}}`}var skipSourceRender=context=>{let sourceParams=context?.parameters.docs?.source,isArgsStory=context?.parameters.__isArgsStory,isDocsViewMode=context?.viewMode==="docs";return sourceParams?.type===import_docs_tools2.SourceType.DYNAMIC?!1:!isDocsViewMode||!isArgsStory||sourceParams?.code||sourceParams?.type===import_docs_tools2.SourceType.CODE};function generateAttributesSource(tempArgs,args2,argTypes2,byRef2){return Object.keys(tempArgs).map(key=>{let source2=tempArgs[key].loc.source.replace(/\$props/g,"args"),argKey=tempArgs[key].arg?.loc.source;return byRef2&&argKey?replaceValueWithRef(source2,args2,argKey):evalExp(source2,omitEvent(args2))}).join(" ")}function mapAttributesAndDirectives(props){let tranformKey=key=>key.startsWith("on")?key:(0,import_kebabCase.default)(key);return Object.keys(props).map(key=>({name:"bind",type:["v-","@","v-on"].includes(key)?7:6,arg:{content:tranformKey(key),loc:{source:tranformKey(key)}},loc:{source:attributeSource(tranformKey(key),props[key])},exp:{isStatic:!1,loc:{source:props[key]}},modifiers:[""]}))}function mapSlots(slotsArgs,generateComponentSource2,slots){return Object.keys(slotsArgs).map(key=>{let slot=slotsArgs[key],slotContent="",scropedArgs=slots.find(s=>s.name===key&&s.scoped)?.bindings?.map(b=>b.name).join(",");typeof slot=="string"?slotContent=slot:typeof slot=="function"?slotContent=generateExpression(slot):(0,import_vue.isVNode)(slot)?slotContent=generateComponentSource2(slot):typeof slot=="object"&&!(0,import_vue.isVNode)(slot)&&(slotContent=JSON.stringify(slot));let bindingsString=scropedArgs?`="{${scropedArgs}}"`:"";return slotContent=slot?`<template #${key}${bindingsString}>${slotContent}</template>`:"",{type:2,content:slotContent,loc:{source:slotContent,start:{offset:0,line:1,column:0},end:{offset:0,line:1,column:0}}}})}function generateScriptSetup(args2,argTypes2,components){let scriptLines=Object.keys(args2).map(key=>`const ${key} = ${typeof args2[key]=="function"?"()=>{}":`ref(${JSON.stringify(args2[key])});`}`);return scriptLines.unshift('import { ref } from "vue";'),`<script lang='ts' setup>${scriptLines.join(`
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
"use strict";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/internal/docs-tools");var import_docs_tools=require("storybook/internal/docs-tools"),ARG_TYPE_SECTIONS=["props","events","slots","exposed","expose"],extractArgTypes=component=>{if(!(0,import_docs_tools.hasDocgen)(component))return null;let usedDocgenPlugin="exposed"in component.__docgenInfo?"vue-component-meta":"vue-docgen-api",argTypes={};return ARG_TYPE_SECTIONS.forEach(section=>{(0,import_docs_tools.extractComponentProps)(component,section).forEach(extractedProp=>{let argType;if(usedDocgenPlugin==="vue-docgen-api"){let docgenInfo=extractedProp.docgenInfo;argType=extractFromVueDocgenApi(docgenInfo,section,extractedProp)}else{let docgenInfo=extractedProp.docgenInfo;argType=extractFromVueComponentMeta(docgenInfo,section)}if(!argType||argTypes[argType.name])return;["events","expose","exposed"].includes(section)&&(argType.control={disable:!0}),argTypes[argType.name]=argType})}),argTypes},extractFromVueDocgenApi=(docgenInfo,section,extractedProp)=>{let type,sbType;if(section==="events"&&(type=docgenInfo.type?.names.join(),sbType={name:"other",value:type??"",required:!1}),section==="slots"){let slotBindings=docgenInfo.bindings?.filter(binding=>!!binding.name).map(binding=>`${binding.name}: ${binding.type?.name??"unknown"}`).join("; ");type=slotBindings?`{ ${slotBindings} }`:void 0,sbType={name:"other",value:type??"",required:!1}}if(section==="props"){let propInfo=docgenInfo;if(type=propInfo.type?.name,sbType=extractedProp?(0,import_docs_tools.convert)(extractedProp.docgenInfo):{name:"other",value:type},propInfo.type&&"elements"in propInfo.type&&Array.isArray(propInfo.type.elements)&&propInfo.type.elements.length>0){let elements=propInfo.type.elements.map(i=>i.name);type==="Array"&&(type=`${elements.length===1?elements[0]:`(${elements.join(" | ")})`}[]`),type==="union"?type=elements.join(" | "):type==="intersection"&&(type=elements.join(" & "))}}let required="required"in docgenInfo?docgenInfo.required??!1:!1;return{name:docgenInfo.name,description:docgenInfo.description,type:sbType?{...sbType,required}:{name:"other",value:type??""},table:{type:type?{summary:type}:void 0,defaultValue:extractedProp?.propDef.defaultValue??void 0,jsDocTags:extractedProp?.propDef.jsDocTags,category:section}}},extractFromVueComponentMeta=(docgenInfo,section)=>{if("global"in docgenInfo&&docgenInfo.global)return;let tableType={summary:docgenInfo.type.replace(" | undefined","")};if(section==="props"){let propInfo=docgenInfo,defaultValue=propInfo.default?{summary:propInfo.default}:void 0;return{name:propInfo.name,description:formatDescriptionWithTags(propInfo.description,propInfo.tags),defaultValue,type:convertVueComponentMetaProp(propInfo),table:{type:tableType,defaultValue,category:section}}}else return{name:docgenInfo.name,description:"description"in docgenInfo?docgenInfo.description:"",type:{name:"other",value:docgenInfo.type},table:{type:tableType,category:section}}},convertVueComponentMetaProp=propInfo=>{let schema=propInfo.schema,required=propInfo.required,fallbackSbType={name:"other",value:propInfo.type,required},KNOWN_SCHEMAS=["string","number","function","boolean","symbol"];if(typeof schema=="string")return KNOWN_SCHEMAS.includes(schema)?{name:schema,required}:fallbackSbType;switch(schema.kind){case"enum":{let definedSchemas=schema.schema?.filter(item=>item!=="undefined")??[];return isBooleanSchema(definedSchemas)?{name:"boolean",required}:isLiteralUnionSchema(definedSchemas)||isEnumSchema(definedSchemas)?{name:"enum",value:definedSchemas.map(literal=>literal.replace(/"/g,"")),required}:definedSchemas.length===1?convertVueComponentMetaProp({schema:definedSchemas[0],type:propInfo.type,required}):(definedSchemas.length>2&&definedSchemas.includes("true")&&definedSchemas.includes("false")&&(definedSchemas=definedSchemas.filter(i=>i!=="true"&&i!=="false"),definedSchemas.push("boolean")),{name:"union",value:definedSchemas.map(i=>convertVueComponentMetaProp(typeof i=="object"?{schema:i,type:i.type,required:!1}:{schema:i,type:i,required:!1})),required})}case"array":{let definedSchemas=schema.schema?.filter(item=>item!=="undefined")??[];return definedSchemas.length===0?fallbackSbType:definedSchemas.length===1?{name:"array",value:convertVueComponentMetaProp({schema:definedSchemas[0],type:propInfo.type,required:!1}),required}:{name:"union",value:definedSchemas.map(i=>convertVueComponentMetaProp(typeof i=="object"?{schema:i,type:i.type,required:!1}:{schema:i,type:i,required:!1})),required}}case"object":return{name:"object",value:{},required};default:return fallbackSbType}},formatDescriptionWithTags=(description,tags)=>!tags?.length||!description?description??"":`${tags.map(tag=>`@${tag.name}: ${tag.text}`).join("<br>")}<br><br>${description}`,isLiteralUnionSchema=schemas=>schemas.every(schema=>typeof schema=="string"&&schema.startsWith('"')&&schema.endsWith('"')),isEnumSchema=schemas=>schemas.every(schema=>typeof schema=="string"&&schema.includes(".")),isBooleanSchema=schemas=>schemas.length===2&&schemas.includes("true")&&schemas.includes("false");var import_docs_tools2=require("storybook/internal/docs-tools"),import_preview_api=require("storybook/internal/preview-api"),import_vue=require("vue"),sourceDecorator=(storyFn,ctx)=>{let story=storyFn();if(shouldSkipSourceCodeGeneration(ctx))return story;let channel=import_preview_api.addons.getChannel();return(0,import_vue.watch)(()=>ctx.args,()=>{let sourceCode=generateSourceCode(ctx);channel.emit(import_docs_tools2.SNIPPET_RENDERED,{id:ctx.id,args:ctx.args,source:sourceCode,format:"vue"})},{immediate:!0,deep:!0}),story},generateSourceCode=ctx=>{let sourceCodeContext={imports:{},scriptVariables:{}},{displayName,slotNames,eventNames}=parseDocgenInfo(ctx.component),props=generatePropsSourceCode(ctx.args,slotNames,eventNames,sourceCodeContext),slotSourceCode=generateSlotSourceCode(ctx.args,slotNames,sourceCodeContext),componentName=displayName||ctx.title.split("/").at(-1),templateCode=slotSourceCode?`<${componentName} ${props}> ${slotSourceCode} </${componentName}>`:`<${componentName} ${props} />`,variablesCode=Object.entries(sourceCodeContext.scriptVariables).map(([name,value])=>`const ${name} = ${value};`).join(`
|
2
|
+
|
3
|
+
`),importsCode=Object.entries(sourceCodeContext.imports).map(([packageName,imports])=>`import { ${Array.from(imports.values()).sort().join(", ")} } from "${packageName}";`).join(`
|
4
|
+
`),template=`<template>
|
5
|
+
${templateCode}
|
6
|
+
</template>`;return!importsCode&&!variablesCode?template:`<script lang="ts" setup>
|
7
|
+
${importsCode?`${importsCode}
|
8
|
+
|
9
|
+
${variablesCode}`:variablesCode}
|
10
|
+
</script>
|
11
|
+
|
12
|
+
${template}`},shouldSkipSourceCodeGeneration=context=>{let sourceParams=context?.parameters.docs?.source;if(sourceParams?.type===import_docs_tools2.SourceType.DYNAMIC)return!1;let isArgsStory=context?.parameters.__isArgsStory;return!(context?.viewMode==="docs")||!isArgsStory||sourceParams?.code||sourceParams?.type===import_docs_tools2.SourceType.CODE},parseDocgenInfo=component=>{if(!component||!("__docgenInfo"in component)||!component.__docgenInfo||typeof component.__docgenInfo!="object")return{displayName:component?.__name,eventNames:[],slotNames:[]};let docgenInfo=component.__docgenInfo,displayName="displayName"in docgenInfo&&typeof docgenInfo.displayName=="string"?docgenInfo.displayName:void 0,parseNames=key=>!(key in docgenInfo)||!Array.isArray(docgenInfo[key])?[]:docgenInfo[key].map(i=>i&&typeof i=="object"&&"name"in i?i.name:void 0).filter(i=>typeof i=="string");return{displayName:displayName||component.__name,slotNames:parseNames("slots").sort((a,b)=>a==="default"?-1:b==="default"?1:a.localeCompare(b)),eventNames:parseNames("events")}},generatePropsSourceCode=(args,slotNames,eventNames,ctx)=>{let properties=[];Object.entries(args).forEach(([propName,value])=>{if(!slotNames.includes(propName)&&value!=null)switch(typeof value){case"string":if(value==="")return;properties.push({name:propName,value:value.includes('"')?`'${value}'`:`"${value}"`,templateFn:(name,propValue)=>`${name}=${propValue}`});break;case"number":properties.push({name:propName,value:value.toString(),templateFn:(name,propValue)=>`:${name}="${propValue}"`});break;case"bigint":properties.push({name:propName,value:`BigInt(${value.toString()})`,templateFn:(name,propValue)=>`:${name}="${propValue}"`});break;case"boolean":properties.push({name:propName,value:value?"true":"false",templateFn:(name,propValue)=>propValue==="true"?name:`:${name}="false"`});break;case"symbol":properties.push({name:propName,value:`Symbol(${value.description?`'${value.description}'`:""})`,templateFn:(name,propValue)=>`:${name}="${propValue}"`});break;case"object":{properties.push({name:propName,value:formatObject(value),templateFn:void 0});break}case"function":break}}),properties.sort((a,b)=>a.name.localeCompare(b.name));let props=[];return properties.forEach(prop=>{let isVModel=eventNames.includes(`update:${prop.name}`);if(!isVModel&&prop.templateFn){props.push(prop.templateFn(prop.name,prop.value));return}let variableName=prop.name;if(variableName in ctx.scriptVariables){let index=1;do variableName=`${prop.name}${index}`,index++;while(variableName in ctx.scriptVariables)}if(!isVModel){ctx.scriptVariables[variableName]=prop.value,props.push(`:${prop.name}="${variableName}"`);return}ctx.scriptVariables[variableName]=`ref(${prop.value})`,ctx.imports.vue||(ctx.imports.vue=new Set),ctx.imports.vue.add("ref"),prop.name==="modelValue"?props.push(`v-model="${variableName}"`):props.push(`v-model:${prop.name}="${variableName}"`)}),props.join(" ")},generateSlotSourceCode=(args,slotNames,ctx)=>{let slotSourceCodes=[];return slotNames.forEach(slotName=>{let arg=args[slotName];if(!arg)return;let slotContent=generateSlotChildrenSourceCode([arg],ctx);if(!slotContent)return;let slotBindings=typeof arg=="function"?getFunctionParamNames(arg):[];slotName==="default"&&!slotBindings.length?slotSourceCodes.push(slotContent):slotSourceCodes.push(`<template ${slotBindingsToString(slotName,slotBindings)}>${slotContent}</template>`)}),slotSourceCodes.join(`
|
13
|
+
|
14
|
+
`)},generateSlotChildrenSourceCode=(children,ctx)=>{let slotChildrenSourceCodes=[],generateSingleChildSourceCode=child=>{if((0,import_vue.isVNode)(child))return generateVNodeSourceCode(child,ctx);switch(typeof child){case"string":case"number":case"boolean":return child.toString();case"object":return child===null?"":Array.isArray(child)?child.map(generateSingleChildSourceCode).filter(code=>code!=="").join(`
|
15
|
+
`):JSON.stringify(child);case"function":{let paramNames=getFunctionParamNames(child).filter(param=>!["{","}"].includes(param)),parameters2=paramNames.reduce((obj,param)=>(obj[param]=`{{ ${param} }}`,obj),{}),returnValue=child(parameters2),slotSourceCode=generateSlotChildrenSourceCode([returnValue],ctx);return paramNames.forEach(param=>{slotSourceCode=slotSourceCode.replaceAll(new RegExp(` (\\S+)="{{ ${param} }}"`,"g"),` :$1="${param}"`)}),slotSourceCode}case"bigint":return`{{ BigInt(${child.toString()}) }}`;default:return""}};return children.forEach(child=>{let sourceCode=generateSingleChildSourceCode(child);sourceCode!==""&&slotChildrenSourceCodes.push(sourceCode)}),slotChildrenSourceCodes.join(`
|
16
|
+
`)},generateVNodeSourceCode=(vnode,ctx)=>{let componentName=getVNodeName(vnode),childrenCode="";typeof vnode.children=="string"?childrenCode=vnode.children:Array.isArray(vnode.children)?childrenCode=generateSlotChildrenSourceCode(vnode.children,ctx):vnode.children&&(childrenCode=generateSlotSourceCode(vnode.children,Object.keys(vnode.children).filter(i=>i!=="$stable"),ctx));let props=vnode.props?generatePropsSourceCode(vnode.props,[],[],ctx):"";return childrenCode?`<${componentName}${props?` ${props}`:""}>${childrenCode}</${componentName}>`:`<${componentName}${props?` ${props}`:""} />`},getVNodeName=vnode=>{if(typeof vnode.type=="string")return vnode.type;if(typeof vnode.type=="object"){if("name"in vnode.type&&vnode.type.name)return vnode.type.name;if("__name"in vnode.type&&vnode.type.__name)return vnode.type.__name}return"component"},getFunctionParamNames=func=>{let STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,ARGUMENT_NAMES=/([^\s,]+)/g,fnStr=func.toString().replace(STRIP_COMMENTS,""),result=fnStr.slice(fnStr.indexOf("(")+1,fnStr.indexOf(")")).match(ARGUMENT_NAMES);return result?result.flatMap(param=>{if(["{","}"].includes(param))return param;let nonMinifiedName=param.split(":")[0].trim();return nonMinifiedName.startsWith("{")?["{",nonMinifiedName.substring(1)]:param.endsWith("}")&&!nonMinifiedName.endsWith("}")?[nonMinifiedName,"}"]:nonMinifiedName}):[]},slotBindingsToString=(slotName,params)=>params.length?params.length===1?`#${slotName}="${params[0]}"`:`#${slotName}="{ ${params.filter(i=>!["{","}"].includes(i)).join(", ")} }"`:`#${slotName}`,formatObject=obj=>Object.values(obj).every(value=>value==null||typeof value!="object")?JSON.stringify(obj):JSON.stringify(obj,null,2);var parameters={docs:{story:{inline:!0},extractArgTypes,extractComponentDescription:import_docs_tools3.extractComponentDescription}},decorators=[sourceDecorator],argTypesEnhancers=[import_docs_tools3.enhanceArgTypes];0&&(module.exports={argTypesEnhancers,decorators,parameters});
|
@@ -1,14 +1,23 @@
|
|
1
1
|
import './chunk-CEH6MNVV.mjs';
|
2
2
|
import { extractComponentDescription, enhanceArgTypes, hasDocgen, extractComponentProps, convert, SNIPPET_RENDERED, SourceType } from 'storybook/internal/docs-tools';
|
3
3
|
import { addons } from 'storybook/internal/preview-api';
|
4
|
-
import {
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
`)
|
10
|
-
|
11
|
-
|
12
|
-
|
4
|
+
import { watch, isVNode } from 'vue';
|
5
|
+
|
6
|
+
var ARG_TYPE_SECTIONS=["props","events","slots","exposed","expose"],extractArgTypes=component=>{if(!hasDocgen(component))return null;let usedDocgenPlugin="exposed"in component.__docgenInfo?"vue-component-meta":"vue-docgen-api",argTypes={};return ARG_TYPE_SECTIONS.forEach(section=>{extractComponentProps(component,section).forEach(extractedProp=>{let argType;if(usedDocgenPlugin==="vue-docgen-api"){let docgenInfo=extractedProp.docgenInfo;argType=extractFromVueDocgenApi(docgenInfo,section,extractedProp);}else {let docgenInfo=extractedProp.docgenInfo;argType=extractFromVueComponentMeta(docgenInfo,section);}if(!argType||argTypes[argType.name])return;["events","expose","exposed"].includes(section)&&(argType.control={disable:!0}),argTypes[argType.name]=argType;});}),argTypes},extractFromVueDocgenApi=(docgenInfo,section,extractedProp)=>{let type,sbType;if(section==="events"&&(type=docgenInfo.type?.names.join(),sbType={name:"other",value:type??"",required:!1}),section==="slots"){let slotBindings=docgenInfo.bindings?.filter(binding=>!!binding.name).map(binding=>`${binding.name}: ${binding.type?.name??"unknown"}`).join("; ");type=slotBindings?`{ ${slotBindings} }`:void 0,sbType={name:"other",value:type??"",required:!1};}if(section==="props"){let propInfo=docgenInfo;if(type=propInfo.type?.name,sbType=extractedProp?convert(extractedProp.docgenInfo):{name:"other",value:type},propInfo.type&&"elements"in propInfo.type&&Array.isArray(propInfo.type.elements)&&propInfo.type.elements.length>0){let elements=propInfo.type.elements.map(i=>i.name);type==="Array"&&(type=`${elements.length===1?elements[0]:`(${elements.join(" | ")})`}[]`),type==="union"?type=elements.join(" | "):type==="intersection"&&(type=elements.join(" & "));}}let required="required"in docgenInfo?docgenInfo.required??!1:!1;return {name:docgenInfo.name,description:docgenInfo.description,type:sbType?{...sbType,required}:{name:"other",value:type??""},table:{type:type?{summary:type}:void 0,defaultValue:extractedProp?.propDef.defaultValue??void 0,jsDocTags:extractedProp?.propDef.jsDocTags,category:section}}},extractFromVueComponentMeta=(docgenInfo,section)=>{if("global"in docgenInfo&&docgenInfo.global)return;let tableType={summary:docgenInfo.type.replace(" | undefined","")};if(section==="props"){let propInfo=docgenInfo,defaultValue=propInfo.default?{summary:propInfo.default}:void 0;return {name:propInfo.name,description:formatDescriptionWithTags(propInfo.description,propInfo.tags),defaultValue,type:convertVueComponentMetaProp(propInfo),table:{type:tableType,defaultValue,category:section}}}else return {name:docgenInfo.name,description:"description"in docgenInfo?docgenInfo.description:"",type:{name:"other",value:docgenInfo.type},table:{type:tableType,category:section}}},convertVueComponentMetaProp=propInfo=>{let schema=propInfo.schema,required=propInfo.required,fallbackSbType={name:"other",value:propInfo.type,required},KNOWN_SCHEMAS=["string","number","function","boolean","symbol"];if(typeof schema=="string")return KNOWN_SCHEMAS.includes(schema)?{name:schema,required}:fallbackSbType;switch(schema.kind){case"enum":{let definedSchemas=schema.schema?.filter(item=>item!=="undefined")??[];return isBooleanSchema(definedSchemas)?{name:"boolean",required}:isLiteralUnionSchema(definedSchemas)||isEnumSchema(definedSchemas)?{name:"enum",value:definedSchemas.map(literal=>literal.replace(/"/g,"")),required}:definedSchemas.length===1?convertVueComponentMetaProp({schema:definedSchemas[0],type:propInfo.type,required}):(definedSchemas.length>2&&definedSchemas.includes("true")&&definedSchemas.includes("false")&&(definedSchemas=definedSchemas.filter(i=>i!=="true"&&i!=="false"),definedSchemas.push("boolean")),{name:"union",value:definedSchemas.map(i=>convertVueComponentMetaProp(typeof i=="object"?{schema:i,type:i.type,required:!1}:{schema:i,type:i,required:!1})),required})}case"array":{let definedSchemas=schema.schema?.filter(item=>item!=="undefined")??[];return definedSchemas.length===0?fallbackSbType:definedSchemas.length===1?{name:"array",value:convertVueComponentMetaProp({schema:definedSchemas[0],type:propInfo.type,required:!1}),required}:{name:"union",value:definedSchemas.map(i=>convertVueComponentMetaProp(typeof i=="object"?{schema:i,type:i.type,required:!1}:{schema:i,type:i,required:!1})),required}}case"object":return {name:"object",value:{},required};default:return fallbackSbType}},formatDescriptionWithTags=(description,tags)=>!tags?.length||!description?description??"":`${tags.map(tag=>`@${tag.name}: ${tag.text}`).join("<br>")}<br><br>${description}`,isLiteralUnionSchema=schemas=>schemas.every(schema=>typeof schema=="string"&&schema.startsWith('"')&&schema.endsWith('"')),isEnumSchema=schemas=>schemas.every(schema=>typeof schema=="string"&&schema.includes(".")),isBooleanSchema=schemas=>schemas.length===2&&schemas.includes("true")&&schemas.includes("false");var sourceDecorator=(storyFn,ctx)=>{let story=storyFn();if(shouldSkipSourceCodeGeneration(ctx))return story;let channel=addons.getChannel();return watch(()=>ctx.args,()=>{let sourceCode=generateSourceCode(ctx);channel.emit(SNIPPET_RENDERED,{id:ctx.id,args:ctx.args,source:sourceCode,format:"vue"});},{immediate:!0,deep:!0}),story},generateSourceCode=ctx=>{let sourceCodeContext={imports:{},scriptVariables:{}},{displayName,slotNames,eventNames}=parseDocgenInfo(ctx.component),props=generatePropsSourceCode(ctx.args,slotNames,eventNames,sourceCodeContext),slotSourceCode=generateSlotSourceCode(ctx.args,slotNames,sourceCodeContext),componentName=displayName||ctx.title.split("/").at(-1),templateCode=slotSourceCode?`<${componentName} ${props}> ${slotSourceCode} </${componentName}>`:`<${componentName} ${props} />`,variablesCode=Object.entries(sourceCodeContext.scriptVariables).map(([name,value])=>`const ${name} = ${value};`).join(`
|
7
|
+
|
8
|
+
`),importsCode=Object.entries(sourceCodeContext.imports).map(([packageName,imports])=>`import { ${Array.from(imports.values()).sort().join(", ")} } from "${packageName}";`).join(`
|
9
|
+
`),template=`<template>
|
10
|
+
${templateCode}
|
11
|
+
</template>`;return !importsCode&&!variablesCode?template:`<script lang="ts" setup>
|
12
|
+
${importsCode?`${importsCode}
|
13
|
+
|
14
|
+
${variablesCode}`:variablesCode}
|
15
|
+
<\/script>
|
16
|
+
|
17
|
+
${template}`},shouldSkipSourceCodeGeneration=context=>{let sourceParams=context?.parameters.docs?.source;if(sourceParams?.type===SourceType.DYNAMIC)return !1;let isArgsStory=context?.parameters.__isArgsStory;return !(context?.viewMode==="docs")||!isArgsStory||sourceParams?.code||sourceParams?.type===SourceType.CODE},parseDocgenInfo=component=>{if(!component||!("__docgenInfo"in component)||!component.__docgenInfo||typeof component.__docgenInfo!="object")return {displayName:component?.__name,eventNames:[],slotNames:[]};let docgenInfo=component.__docgenInfo,displayName="displayName"in docgenInfo&&typeof docgenInfo.displayName=="string"?docgenInfo.displayName:void 0,parseNames=key=>!(key in docgenInfo)||!Array.isArray(docgenInfo[key])?[]:docgenInfo[key].map(i=>i&&typeof i=="object"&&"name"in i?i.name:void 0).filter(i=>typeof i=="string");return {displayName:displayName||component.__name,slotNames:parseNames("slots").sort((a,b)=>a==="default"?-1:b==="default"?1:a.localeCompare(b)),eventNames:parseNames("events")}},generatePropsSourceCode=(args,slotNames,eventNames,ctx)=>{let properties=[];Object.entries(args).forEach(([propName,value])=>{if(!slotNames.includes(propName)&&value!=null)switch(typeof value){case"string":if(value==="")return;properties.push({name:propName,value:value.includes('"')?`'${value}'`:`"${value}"`,templateFn:(name,propValue)=>`${name}=${propValue}`});break;case"number":properties.push({name:propName,value:value.toString(),templateFn:(name,propValue)=>`:${name}="${propValue}"`});break;case"bigint":properties.push({name:propName,value:`BigInt(${value.toString()})`,templateFn:(name,propValue)=>`:${name}="${propValue}"`});break;case"boolean":properties.push({name:propName,value:value?"true":"false",templateFn:(name,propValue)=>propValue==="true"?name:`:${name}="false"`});break;case"symbol":properties.push({name:propName,value:`Symbol(${value.description?`'${value.description}'`:""})`,templateFn:(name,propValue)=>`:${name}="${propValue}"`});break;case"object":{properties.push({name:propName,value:formatObject(value),templateFn:void 0});break}}}),properties.sort((a,b)=>a.name.localeCompare(b.name));let props=[];return properties.forEach(prop=>{let isVModel=eventNames.includes(`update:${prop.name}`);if(!isVModel&&prop.templateFn){props.push(prop.templateFn(prop.name,prop.value));return}let variableName=prop.name;if(variableName in ctx.scriptVariables){let index=1;do variableName=`${prop.name}${index}`,index++;while(variableName in ctx.scriptVariables)}if(!isVModel){ctx.scriptVariables[variableName]=prop.value,props.push(`:${prop.name}="${variableName}"`);return}ctx.scriptVariables[variableName]=`ref(${prop.value})`,ctx.imports.vue||(ctx.imports.vue=new Set),ctx.imports.vue.add("ref"),prop.name==="modelValue"?props.push(`v-model="${variableName}"`):props.push(`v-model:${prop.name}="${variableName}"`);}),props.join(" ")},generateSlotSourceCode=(args,slotNames,ctx)=>{let slotSourceCodes=[];return slotNames.forEach(slotName=>{let arg=args[slotName];if(!arg)return;let slotContent=generateSlotChildrenSourceCode([arg],ctx);if(!slotContent)return;let slotBindings=typeof arg=="function"?getFunctionParamNames(arg):[];slotName==="default"&&!slotBindings.length?slotSourceCodes.push(slotContent):slotSourceCodes.push(`<template ${slotBindingsToString(slotName,slotBindings)}>${slotContent}</template>`);}),slotSourceCodes.join(`
|
18
|
+
|
19
|
+
`)},generateSlotChildrenSourceCode=(children,ctx)=>{let slotChildrenSourceCodes=[],generateSingleChildSourceCode=child=>{if(isVNode(child))return generateVNodeSourceCode(child,ctx);switch(typeof child){case"string":case"number":case"boolean":return child.toString();case"object":return child===null?"":Array.isArray(child)?child.map(generateSingleChildSourceCode).filter(code=>code!=="").join(`
|
20
|
+
`):JSON.stringify(child);case"function":{let paramNames=getFunctionParamNames(child).filter(param=>!["{","}"].includes(param)),parameters2=paramNames.reduce((obj,param)=>(obj[param]=`{{ ${param} }}`,obj),{}),returnValue=child(parameters2),slotSourceCode=generateSlotChildrenSourceCode([returnValue],ctx);return paramNames.forEach(param=>{slotSourceCode=slotSourceCode.replaceAll(new RegExp(` (\\S+)="{{ ${param} }}"`,"g"),` :$1="${param}"`);}),slotSourceCode}case"bigint":return `{{ BigInt(${child.toString()}) }}`;default:return ""}};return children.forEach(child=>{let sourceCode=generateSingleChildSourceCode(child);sourceCode!==""&&slotChildrenSourceCodes.push(sourceCode);}),slotChildrenSourceCodes.join(`
|
21
|
+
`)},generateVNodeSourceCode=(vnode,ctx)=>{let componentName=getVNodeName(vnode),childrenCode="";typeof vnode.children=="string"?childrenCode=vnode.children:Array.isArray(vnode.children)?childrenCode=generateSlotChildrenSourceCode(vnode.children,ctx):vnode.children&&(childrenCode=generateSlotSourceCode(vnode.children,Object.keys(vnode.children).filter(i=>i!=="$stable"),ctx));let props=vnode.props?generatePropsSourceCode(vnode.props,[],[],ctx):"";return childrenCode?`<${componentName}${props?` ${props}`:""}>${childrenCode}</${componentName}>`:`<${componentName}${props?` ${props}`:""} />`},getVNodeName=vnode=>{if(typeof vnode.type=="string")return vnode.type;if(typeof vnode.type=="object"){if("name"in vnode.type&&vnode.type.name)return vnode.type.name;if("__name"in vnode.type&&vnode.type.__name)return vnode.type.__name}return "component"},getFunctionParamNames=func=>{let STRIP_COMMENTS=/((\/\/.*$)|(\/\*[\s\S]*?\*\/))/gm,ARGUMENT_NAMES=/([^\s,]+)/g,fnStr=func.toString().replace(STRIP_COMMENTS,""),result=fnStr.slice(fnStr.indexOf("(")+1,fnStr.indexOf(")")).match(ARGUMENT_NAMES);return result?result.flatMap(param=>{if(["{","}"].includes(param))return param;let nonMinifiedName=param.split(":")[0].trim();return nonMinifiedName.startsWith("{")?["{",nonMinifiedName.substring(1)]:param.endsWith("}")&&!nonMinifiedName.endsWith("}")?[nonMinifiedName,"}"]:nonMinifiedName}):[]},slotBindingsToString=(slotName,params)=>params.length?params.length===1?`#${slotName}="${params[0]}"`:`#${slotName}="{ ${params.filter(i=>!["{","}"].includes(i)).join(", ")} }"`:`#${slotName}`,formatObject=obj=>Object.values(obj).every(value=>value==null||typeof value!="object")?JSON.stringify(obj):JSON.stringify(obj,null,2);var parameters={docs:{story:{inline:!0},extractArgTypes,extractComponentDescription}},decorators=[sourceDecorator],argTypesEnhancers=[enhanceArgTypes];
|
13
22
|
|
14
23
|
export { argTypesEnhancers, decorators, parameters };
|
package/dist/entry-preview.d.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
export { r as render, a as renderToCanvas } from './render-
|
1
|
+
export { r as render, a as renderToCanvas } from './render-0377a2e9.js';
|
2
2
|
import { LegacyStoryFn, DecoratorFunction, BaseAnnotations } from 'storybook/internal/types';
|
3
3
|
import { V as VueRenderer } from './types-1ede6954.js';
|
4
4
|
import 'vue';
|
package/dist/entry-preview.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";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_exports={};__export(entry_preview_exports,{applyDecorators:()=>decorateStory,mount:()=>mount,parameters:()=>parameters,render:()=>render,renderToCanvas:()=>renderToCanvas});module.exports=__toCommonJS(entry_preview_exports);var import_vue=require("vue"),render=(props,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return()=>(0,import_vue.h)(Component,props,getSlots(props,context))};var runSetupFunctions=async(app,storyContext)=>{globalThis&&globalThis.PLUGINS_SETUP_FUNCTIONS&&await Promise.all([...globalThis.PLUGINS_SETUP_FUNCTIONS].map(fn=>fn(app,storyContext)))},map=new Map;async function renderToCanvas({storyFn,forceRemount,showMain,showException,storyContext,id},canvasElement){let existingApp=map.get(canvasElement);if(existingApp&&!forceRemount){let element=storyFn(),args=getArgs(element,storyContext);return updateArgs(existingApp.reactiveArgs,args),()=>{teardown(existingApp.vueApp,canvasElement)}}existingApp&&forceRemount&&teardown(existingApp.vueApp,canvasElement);let vueApp=(0,import_vue.createApp)({setup(){storyContext.args=(0,import_vue.reactive)(storyContext.args);let rootElement=storyFn(),args=getArgs(rootElement,storyContext),appState={vueApp,reactiveArgs:(0,import_vue.reactive)(args)};return map.set(canvasElement,appState),()=>(0,import_vue.h)(rootElement)}});return vueApp.config.errorHandler=(e,instance,info)=>{window.__STORYBOOK_PREVIEW__?.storyRenders.some(renderer=>renderer.id===id&&renderer.phase==="playing")?setTimeout(()=>{throw e},0):showException(e)},await runSetupFunctions(vueApp,storyContext),vueApp.mount(canvasElement),showMain(),()=>{teardown(vueApp,canvasElement)}}function getSlots(props,context){let{argTypes}=context,slots=Object.entries(props).filter(([key])=>argTypes[key]?.table?.category==="slots").map(([key,value])=>[key,typeof value=="function"?value:()=>value]);return Object.fromEntries(slots)}function getArgs(element,storyContext){return element.props&&(0,import_vue.isVNode)(element)?element.props:storyContext.args}function updateArgs(reactiveArgs,nextArgs){if(Object.keys(nextArgs).length===0)return;let currentArgs=(0,import_vue.isReactive)(reactiveArgs)?reactiveArgs:(0,import_vue.reactive)(reactiveArgs);Object.keys(currentArgs).forEach(key=>{key in nextArgs||delete currentArgs[key]}),Object.assign(currentArgs,nextArgs)}function teardown(storybookApp,canvasElement){storybookApp?.unmount(),map.has(canvasElement)&&map.delete(canvasElement)}var
|
1
|
+
"use strict";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_exports={};__export(entry_preview_exports,{applyDecorators:()=>decorateStory,mount:()=>mount,parameters:()=>parameters,render:()=>render,renderToCanvas:()=>renderToCanvas});module.exports=__toCommonJS(entry_preview_exports);var import_vue=require("vue"),render=(props,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return()=>(0,import_vue.h)(Component,props,getSlots(props,context))};var runSetupFunctions=async(app,storyContext)=>{globalThis&&globalThis.PLUGINS_SETUP_FUNCTIONS&&await Promise.all([...globalThis.PLUGINS_SETUP_FUNCTIONS].map(fn=>fn(app,storyContext)))},map=new Map;async function renderToCanvas({storyFn,forceRemount,showMain,showException,storyContext,id},canvasElement){let existingApp=map.get(canvasElement);if(existingApp&&!forceRemount){let element=storyFn(),args=getArgs(element,storyContext);return updateArgs(existingApp.reactiveArgs,args),()=>{teardown(existingApp.vueApp,canvasElement)}}existingApp&&forceRemount&&teardown(existingApp.vueApp,canvasElement);let vueApp=(0,import_vue.createApp)({setup(){storyContext.args=(0,import_vue.reactive)(storyContext.args);let rootElement=storyFn(),args=getArgs(rootElement,storyContext),appState={vueApp,reactiveArgs:(0,import_vue.reactive)(args)};return map.set(canvasElement,appState),()=>(0,import_vue.h)(rootElement)}});return vueApp.config.errorHandler=(e,instance,info)=>{window.__STORYBOOK_PREVIEW__?.storyRenders.some(renderer=>renderer.id===id&&renderer.phase==="playing")?setTimeout(()=>{throw e},0):showException(e)},await runSetupFunctions(vueApp,storyContext),vueApp.mount(canvasElement),showMain(),()=>{teardown(vueApp,canvasElement)}}function getSlots(props,context){let{argTypes}=context,slots=Object.entries(props).filter(([key])=>argTypes[key]?.table?.category==="slots").map(([key,value])=>[key,typeof value=="function"?value:()=>value]);return Object.fromEntries(slots)}function getArgs(element,storyContext){return element.props&&(0,import_vue.isVNode)(element)?element.props:storyContext.args}function updateArgs(reactiveArgs,nextArgs){if(Object.keys(nextArgs).length===0)return;let currentArgs=(0,import_vue.isReactive)(reactiveArgs)?reactiveArgs:(0,import_vue.reactive)(reactiveArgs);Object.keys(currentArgs).forEach(key=>{key in nextArgs||delete currentArgs[key]}),Object.assign(currentArgs,nextArgs)}function teardown(storybookApp,canvasElement){storybookApp?.unmount(),map.has(canvasElement)&&map.delete(canvasElement)}var import_preview_api=require("storybook/internal/preview-api"),import_vue2=require("vue");function normalizeFunctionalComponent(options){return typeof options=="function"?{render:options,name:options.name}:options}function prepare(rawStory,innerStory){let story=rawStory;return story===null?null:typeof story=="function"?story:innerStory?{...normalizeFunctionalComponent(story),components:{...story.components||{},story:innerStory}}:{render(){return(0,import_vue2.h)(story)}}}function decorateStory(storyFn,decorators){return decorators.reduce((decorated,decorator)=>context=>{let story,decoratedStory=decorator(update=>{let sanitizedUpdate=(0,import_preview_api.sanitizeStoryContextUpdate)(update);return update&&(sanitizedUpdate.args=Object.assign(context.args,sanitizedUpdate.args)),story=decorated({...context,...sanitizedUpdate}),story},context);return story||(story=decorated(context)),decoratedStory===story?story:prepare(decoratedStory,()=>(0,import_vue2.h)(story))},context=>prepare(storyFn(context)))}var import_vue3=require("vue"),mount=context=>async(Component,options)=>(Component&&(context.originalStoryFn=()=>()=>(0,import_vue3.h)(Component,options?.props,options?.slots)),await context.renderToCanvas(),context.canvas);var parameters={renderer:"vue3"};0&&(module.exports={applyDecorators,mount,parameters,render,renderToCanvas});
|
package/dist/entry-preview.mjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export { decorateStory as applyDecorators, mount, parameters, render, renderToCanvas } from './chunk-
|
1
|
+
export { decorateStory as applyDecorators, mount, parameters, render, renderToCanvas } from './chunk-IBPFZ7LW.mjs';
|
2
2
|
import './chunk-CEH6MNVV.mjs';
|
package/dist/index.d.ts
CHANGED
@@ -1,44 +1,12 @@
|
|
1
|
-
export { s as setup } from './render-
|
2
|
-
import {
|
1
|
+
export { s as setup } from './render-0377a2e9.js';
|
2
|
+
import { M as Meta } from './public-types-bcb3e860.js';
|
3
|
+
export { C as ComponentPropsAndSlots, D as Decorator, L as Loader, P as Preview, b as StoryContext, S as StoryFn, a as StoryObj } from './public-types-bcb3e860.js';
|
4
|
+
import { NamedOrDefaultProjectAnnotations, NormalizedProjectAnnotations, ProjectAnnotations, Args, StoryAnnotationsOrFn, ComposedStoryFn, Store_CSFExports, StoriesWithPartialProps } from 'storybook/internal/types';
|
3
5
|
export { ArgTypes, Args, Parameters, StrictArgs } from 'storybook/internal/types';
|
4
|
-
import { Simplify, SetOptional, Constructor, RemoveIndexSignature } from 'type-fest';
|
5
|
-
import { FunctionalComponent, VNodeChild } from 'vue';
|
6
|
-
import { ComponentProps, ComponentSlots } from 'vue-component-type-helpers';
|
7
6
|
import { V as VueRenderer } from './types-1ede6954.js';
|
8
|
-
import
|
9
|
-
|
10
|
-
|
11
|
-
* Metadata to configure the stories for a component.
|
12
|
-
*
|
13
|
-
* @see [Default export](https://storybook.js.org/docs/formats/component-story-format/#default-export)
|
14
|
-
*/
|
15
|
-
type Meta<TCmpOrArgs = Args> = ComponentAnnotations<VueRenderer, ComponentPropsOrProps<TCmpOrArgs>>;
|
16
|
-
/**
|
17
|
-
* Story function that represents a CSFv2 component example.
|
18
|
-
*
|
19
|
-
* @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
|
20
|
-
*/
|
21
|
-
type StoryFn<TCmpOrArgs = Args> = AnnotatedStoryFn<VueRenderer, ComponentPropsOrProps<TCmpOrArgs>>;
|
22
|
-
/**
|
23
|
-
* Story object that represents a CSFv3 component example.
|
24
|
-
*
|
25
|
-
* @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
|
26
|
-
*/
|
27
|
-
type StoryObj<TMetaOrCmpOrArgs = Args> = TMetaOrCmpOrArgs extends {
|
28
|
-
render?: ArgsStoryFn<VueRenderer, any>;
|
29
|
-
component?: infer Component;
|
30
|
-
args?: infer DefaultArgs;
|
31
|
-
} ? Simplify<ComponentPropsAndSlots<Component> & ArgsFromMeta<VueRenderer, TMetaOrCmpOrArgs>> extends infer TArgs ? StoryAnnotations<VueRenderer, TArgs, SetOptional<TArgs, Extract<keyof TArgs, keyof DefaultArgs>>> : never : StoryAnnotations<VueRenderer, ComponentPropsOrProps<TMetaOrCmpOrArgs>>;
|
32
|
-
type ExtractSlots<C> = AllowNonFunctionSlots<Partial<RemoveIndexSignature<ComponentSlots<C>>>>;
|
33
|
-
type AllowNonFunctionSlots<Slots> = {
|
34
|
-
[K in keyof Slots]: Slots[K] | VNodeChild;
|
35
|
-
};
|
36
|
-
type ComponentPropsAndSlots<C> = ComponentProps<C> & ExtractSlots<C>;
|
37
|
-
type ComponentPropsOrProps<TCmpOrArgs> = TCmpOrArgs extends Constructor<any> ? ComponentPropsAndSlots<TCmpOrArgs> : TCmpOrArgs extends FunctionalComponent<any> ? ComponentPropsAndSlots<TCmpOrArgs> : TCmpOrArgs;
|
38
|
-
type Decorator<TArgs = StrictArgs> = DecoratorFunction<VueRenderer, TArgs>;
|
39
|
-
type Loader<TArgs = StrictArgs> = LoaderFunction<VueRenderer, TArgs>;
|
40
|
-
type StoryContext<TArgs = StrictArgs> = StoryContext$1<VueRenderer, TArgs>;
|
41
|
-
type Preview = ProjectAnnotations<VueRenderer>;
|
7
|
+
import 'vue';
|
8
|
+
import 'type-fest';
|
9
|
+
import 'vue-component-type-helpers';
|
42
10
|
|
43
11
|
type JSXAble<TElement> = TElement & {
|
44
12
|
new (...args: any[]): any;
|
@@ -47,33 +15,37 @@ type JSXAble<TElement> = TElement & {
|
|
47
15
|
type MapToJSXAble<T> = {
|
48
16
|
[K in keyof T]: JSXAble<T[K]>;
|
49
17
|
};
|
50
|
-
/**
|
18
|
+
/**
|
19
|
+
* Function that sets the globalConfig of your Storybook. The global config is the preview module of
|
20
|
+
* your .storybook folder.
|
51
21
|
*
|
52
|
-
* It should be run a single time, so that your global config (e.g. decorators) is applied to your
|
22
|
+
* It should be run a single time, so that your global config (e.g. decorators) is applied to your
|
23
|
+
* stories when using `composeStories` or `composeStory`.
|
53
24
|
*
|
54
25
|
* Example:
|
55
|
-
|
56
|
-
*
|
26
|
+
*
|
27
|
+
* ```jsx
|
28
|
+
* // setup-file.js
|
57
29
|
* import { setProjectAnnotations } from '@storybook/vue3';
|
58
30
|
* import projectAnnotations from './.storybook/preview';
|
59
31
|
*
|
60
32
|
* setProjectAnnotations(projectAnnotations);
|
61
|
-
|
33
|
+
* ```
|
62
34
|
*
|
63
|
-
* @param projectAnnotations -
|
35
|
+
* @param projectAnnotations - E.g. (import projectAnnotations from '../.storybook/preview')
|
64
36
|
*/
|
65
|
-
declare function setProjectAnnotations(projectAnnotations: NamedOrDefaultProjectAnnotations<
|
37
|
+
declare function setProjectAnnotations(projectAnnotations: NamedOrDefaultProjectAnnotations<any> | NamedOrDefaultProjectAnnotations<any>[]): NormalizedProjectAnnotations<VueRenderer>;
|
66
38
|
declare const vueProjectAnnotations: ProjectAnnotations<VueRenderer>;
|
67
39
|
/**
|
68
40
|
* Function that will receive a story along with meta (e.g. a default export from a .stories file)
|
69
|
-
* and optionally projectAnnotations e.g. (import * from '../.storybook/preview)
|
70
|
-
*
|
71
|
-
*
|
41
|
+
* and optionally projectAnnotations e.g. (import * from '../.storybook/preview) and will return a
|
42
|
+
* composed component that has all args/parameters/decorators/etc combined and applied to it.
|
72
43
|
*
|
73
44
|
* It's very useful for reusing a story in scenarios outside of Storybook like unit testing.
|
74
45
|
*
|
75
46
|
* Example:
|
76
|
-
|
47
|
+
*
|
48
|
+
* ```jsx
|
77
49
|
* import { render } from '@testing-library/vue';
|
78
50
|
* import { composeStory } from '@storybook/vue3';
|
79
51
|
* import Meta, { Primary as PrimaryStory } from './Button.stories';
|
@@ -81,27 +53,29 @@ declare const vueProjectAnnotations: ProjectAnnotations<VueRenderer>;
|
|
81
53
|
* const Primary = composeStory(PrimaryStory, Meta);
|
82
54
|
*
|
83
55
|
* test('renders primary button with Hello World', () => {
|
84
|
-
* const { getByText } = render(Primary, { props: { label:
|
56
|
+
* const { getByText } = render(Primary, { props: { label: 'Hello world' } });
|
85
57
|
* expect(getByText(/Hello world/i)).not.toBeNull();
|
86
58
|
* });
|
87
|
-
|
59
|
+
* ```
|
88
60
|
*
|
89
61
|
* @param story
|
90
|
-
* @param componentAnnotations -
|
91
|
-
* @param [projectAnnotations] -
|
92
|
-
*
|
62
|
+
* @param componentAnnotations - E.g. (import Meta from './Button.stories')
|
63
|
+
* @param [projectAnnotations] - E.g. (import * as projectAnnotations from '../.storybook/preview')
|
64
|
+
* this can be applied automatically if you use `setProjectAnnotations` in your setup files.
|
65
|
+
* @param [exportsName] - In case your story does not contain a name and you want it to have a name.
|
93
66
|
*/
|
94
|
-
declare function composeStory<TArgs extends Args = Args>(story: StoryAnnotationsOrFn<VueRenderer, TArgs>, componentAnnotations: Meta<TArgs | any>, projectAnnotations?: ProjectAnnotations<VueRenderer>, exportsName?: string): JSXAble<
|
67
|
+
declare function composeStory<TArgs extends Args = Args>(story: StoryAnnotationsOrFn<VueRenderer, TArgs>, componentAnnotations: Meta<TArgs | any>, projectAnnotations?: ProjectAnnotations<VueRenderer>, exportsName?: string): JSXAble<ComposedStoryFn<VueRenderer, Partial<TArgs>>>;
|
95
68
|
/**
|
96
69
|
* Function that will receive a stories import (e.g. `import * as stories from './Button.stories'`)
|
97
|
-
* and optionally projectAnnotations (e.g. `import * from '../.storybook/preview`)
|
98
|
-
*
|
99
|
-
*
|
70
|
+
* and optionally projectAnnotations (e.g. `import * from '../.storybook/preview`) and will return
|
71
|
+
* an object containing all the stories passed, but now as a composed component that has all
|
72
|
+
* args/parameters/decorators/etc combined and applied to it.
|
100
73
|
*
|
101
74
|
* It's very useful for reusing stories in scenarios outside of Storybook like unit testing.
|
102
75
|
*
|
103
76
|
* Example:
|
104
|
-
|
77
|
+
*
|
78
|
+
* ```jsx
|
105
79
|
* import { render } from '@testing-library/vue';
|
106
80
|
* import { composeStories } from '@storybook/vue3';
|
107
81
|
* import * as stories from './Button.stories';
|
@@ -109,14 +83,15 @@ declare function composeStory<TArgs extends Args = Args>(story: StoryAnnotations
|
|
109
83
|
* const { Primary, Secondary } = composeStories(stories);
|
110
84
|
*
|
111
85
|
* test('renders primary button with Hello World', () => {
|
112
|
-
* const { getByText } = render(Primary, { props: { label:
|
86
|
+
* const { getByText } = render(Primary, { props: { label: 'Hello world' } });
|
113
87
|
* expect(getByText(/Hello world/i)).not.toBeNull();
|
114
88
|
* });
|
115
|
-
|
89
|
+
* ```
|
116
90
|
*
|
117
|
-
* @param csfExports -
|
118
|
-
* @param [projectAnnotations] -
|
91
|
+
* @param csfExports - E.g. (import * as stories from './Button.stories')
|
92
|
+
* @param [projectAnnotations] - E.g. (import * as projectAnnotations from '../.storybook/preview')
|
93
|
+
* this can be applied automatically if you use `setProjectAnnotations` in your setup files.
|
119
94
|
*/
|
120
95
|
declare function composeStories<TModule extends Store_CSFExports<VueRenderer, any>>(csfExports: TModule, projectAnnotations?: ProjectAnnotations<VueRenderer>): MapToJSXAble<Omit<StoriesWithPartialProps<VueRenderer, TModule>, keyof Store_CSFExports>>;
|
121
96
|
|
122
|
-
export {
|
97
|
+
export { Meta, VueRenderer, composeStories, composeStory, setProjectAnnotations, vueProjectAnnotations };
|
package/dist/index.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";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 src_exports={};__export(src_exports,{composeStories:()=>composeStories,composeStory:()=>composeStory,setProjectAnnotations:()=>setProjectAnnotations,setup:()=>setup,vueProjectAnnotations:()=>vueProjectAnnotations});module.exports=__toCommonJS(src_exports);var import_global=require("@storybook/global"),{window:globalWindow}=import_global.global;globalWindow.STORYBOOK_ENV="vue3";globalWindow.PLUGINS_SETUP_FUNCTIONS||=new Set;var import_vue=require("vue"),render=(props,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return()=>(0,import_vue.h)(Component,props,getSlots(props,context))},setup=fn=>{globalThis.PLUGINS_SETUP_FUNCTIONS??=new Set,globalThis.PLUGINS_SETUP_FUNCTIONS.add(fn)},runSetupFunctions=async(app,storyContext)=>{globalThis&&globalThis.PLUGINS_SETUP_FUNCTIONS&&await Promise.all([...globalThis.PLUGINS_SETUP_FUNCTIONS].map(fn=>fn(app,storyContext)))},map=new Map;async function renderToCanvas({storyFn,forceRemount,showMain,showException,storyContext,id},canvasElement){let existingApp=map.get(canvasElement);if(existingApp&&!forceRemount){let element=storyFn(),args=getArgs(element,storyContext);return updateArgs(existingApp.reactiveArgs,args),()=>{teardown(existingApp.vueApp,canvasElement)}}existingApp&&forceRemount&&teardown(existingApp.vueApp,canvasElement);let vueApp=(0,import_vue.createApp)({setup(){storyContext.args=(0,import_vue.reactive)(storyContext.args);let rootElement=storyFn(),args=getArgs(rootElement,storyContext),appState={vueApp,reactiveArgs:(0,import_vue.reactive)(args)};return map.set(canvasElement,appState),()=>(0,import_vue.h)(rootElement)}});return vueApp.config.errorHandler=(e,instance,info)=>{window.__STORYBOOK_PREVIEW__?.storyRenders.some(renderer=>renderer.id===id&&renderer.phase==="playing")?setTimeout(()=>{throw e},0):showException(e)},await runSetupFunctions(vueApp,storyContext),vueApp.mount(canvasElement),showMain(),()=>{teardown(vueApp,canvasElement)}}function getSlots(props,context){let{argTypes}=context,slots=Object.entries(props).filter(([key])=>argTypes[key]?.table?.category==="slots").map(([key,value])=>[key,typeof value=="function"?value:()=>value]);return Object.fromEntries(slots)}function getArgs(element,storyContext){return element.props&&(0,import_vue.isVNode)(element)?element.props:storyContext.args}function updateArgs(reactiveArgs,nextArgs){if(Object.keys(nextArgs).length===0)return;let currentArgs=(0,import_vue.isReactive)(reactiveArgs)?reactiveArgs:(0,import_vue.reactive)(reactiveArgs);Object.keys(currentArgs).forEach(key=>{key in nextArgs||delete currentArgs[key]}),Object.assign(currentArgs,nextArgs)}function teardown(storybookApp,canvasElement){storybookApp?.unmount(),map.has(canvasElement)&&map.delete(canvasElement)}var import_preview_api2=require("storybook/internal/preview-api"),
|
1
|
+
"use strict";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 src_exports={};__export(src_exports,{composeStories:()=>composeStories,composeStory:()=>composeStory,setProjectAnnotations:()=>setProjectAnnotations,setup:()=>setup,vueProjectAnnotations:()=>vueProjectAnnotations});module.exports=__toCommonJS(src_exports);var import_global=require("@storybook/global"),{window:globalWindow}=import_global.global;globalWindow.STORYBOOK_ENV="vue3";globalWindow.PLUGINS_SETUP_FUNCTIONS||=new Set;var import_vue=require("vue"),render=(props,context)=>{let{id,component:Component}=context;if(!Component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);return()=>(0,import_vue.h)(Component,props,getSlots(props,context))},setup=fn=>{globalThis.PLUGINS_SETUP_FUNCTIONS??=new Set,globalThis.PLUGINS_SETUP_FUNCTIONS.add(fn)},runSetupFunctions=async(app,storyContext)=>{globalThis&&globalThis.PLUGINS_SETUP_FUNCTIONS&&await Promise.all([...globalThis.PLUGINS_SETUP_FUNCTIONS].map(fn=>fn(app,storyContext)))},map=new Map;async function renderToCanvas({storyFn,forceRemount,showMain,showException,storyContext,id},canvasElement){let existingApp=map.get(canvasElement);if(existingApp&&!forceRemount){let element=storyFn(),args=getArgs(element,storyContext);return updateArgs(existingApp.reactiveArgs,args),()=>{teardown(existingApp.vueApp,canvasElement)}}existingApp&&forceRemount&&teardown(existingApp.vueApp,canvasElement);let vueApp=(0,import_vue.createApp)({setup(){storyContext.args=(0,import_vue.reactive)(storyContext.args);let rootElement=storyFn(),args=getArgs(rootElement,storyContext),appState={vueApp,reactiveArgs:(0,import_vue.reactive)(args)};return map.set(canvasElement,appState),()=>(0,import_vue.h)(rootElement)}});return vueApp.config.errorHandler=(e,instance,info)=>{window.__STORYBOOK_PREVIEW__?.storyRenders.some(renderer=>renderer.id===id&&renderer.phase==="playing")?setTimeout(()=>{throw e},0):showException(e)},await runSetupFunctions(vueApp,storyContext),vueApp.mount(canvasElement),showMain(),()=>{teardown(vueApp,canvasElement)}}function getSlots(props,context){let{argTypes}=context,slots=Object.entries(props).filter(([key])=>argTypes[key]?.table?.category==="slots").map(([key,value])=>[key,typeof value=="function"?value:()=>value]);return Object.fromEntries(slots)}function getArgs(element,storyContext){return element.props&&(0,import_vue.isVNode)(element)?element.props:storyContext.args}function updateArgs(reactiveArgs,nextArgs){if(Object.keys(nextArgs).length===0)return;let currentArgs=(0,import_vue.isReactive)(reactiveArgs)?reactiveArgs:(0,import_vue.reactive)(reactiveArgs);Object.keys(currentArgs).forEach(key=>{key in nextArgs||delete currentArgs[key]}),Object.assign(currentArgs,nextArgs)}function teardown(storybookApp,canvasElement){storybookApp?.unmount(),map.has(canvasElement)&&map.delete(canvasElement)}var import_preview_api2=require("storybook/internal/preview-api"),import_vue4=require("vue");var entry_preview_exports={};__export(entry_preview_exports,{applyDecorators:()=>decorateStory,mount:()=>mount,parameters:()=>parameters,render:()=>render,renderToCanvas:()=>renderToCanvas});var import_preview_api=require("storybook/internal/preview-api"),import_vue2=require("vue");function normalizeFunctionalComponent(options){return typeof options=="function"?{render:options,name:options.name}:options}function prepare(rawStory,innerStory){let story=rawStory;return story===null?null:typeof story=="function"?story:innerStory?{...normalizeFunctionalComponent(story),components:{...story.components||{},story:innerStory}}:{render(){return(0,import_vue2.h)(story)}}}function decorateStory(storyFn,decorators){return decorators.reduce((decorated,decorator)=>context=>{let story,decoratedStory=decorator(update=>{let sanitizedUpdate=(0,import_preview_api.sanitizeStoryContextUpdate)(update);return update&&(sanitizedUpdate.args=Object.assign(context.args,sanitizedUpdate.args)),story=decorated({...context,...sanitizedUpdate}),story},context);return story||(story=decorated(context)),decoratedStory===story?story:prepare(decoratedStory,()=>(0,import_vue2.h)(story))},context=>prepare(storyFn(context)))}var import_vue3=require("vue"),mount=context=>async(Component,options)=>(Component&&(context.originalStoryFn=()=>()=>(0,import_vue3.h)(Component,options?.props,options?.slots)),await context.renderToCanvas(),context.canvas);var parameters={renderer:"vue3"};function setProjectAnnotations(projectAnnotations){return(0,import_preview_api2.setDefaultProjectAnnotations)(vueProjectAnnotations),(0,import_preview_api2.setProjectAnnotations)(projectAnnotations)}var vueProjectAnnotations={...entry_preview_exports,renderToCanvas:(renderContext,canvasElement)=>{if(renderContext.storyContext.testingLibraryRender==null)return renderToCanvas(renderContext,canvasElement);let{storyFn,storyContext:{testingLibraryRender:render2}}=renderContext,{unmount}=render2(storyFn(),{container:canvasElement});return unmount}};function composeStory(story,componentAnnotations,projectAnnotations,exportsName){let composedStory=(0,import_preview_api2.composeStory)(story,componentAnnotations,projectAnnotations,vueProjectAnnotations,exportsName),renderable=(...args)=>(0,import_vue4.h)(composedStory(...args));return Object.assign(renderable,composedStory),renderable}function composeStories(csfExports,projectAnnotations){return(0,import_preview_api2.composeStories)(csfExports,projectAnnotations,composeStory)}try{module?.hot?.decline&&module.hot.decline()}catch{}0&&(module.exports={composeStories,composeStory,setProjectAnnotations,setup,vueProjectAnnotations});
|
package/dist/index.mjs
CHANGED
@@ -1,11 +1,10 @@
|
|
1
|
-
import { entry_preview_exports } from './chunk-
|
2
|
-
export { setup } from './chunk-
|
1
|
+
import { entry_preview_exports, renderToCanvas } from './chunk-IBPFZ7LW.mjs';
|
2
|
+
export { setup } from './chunk-IBPFZ7LW.mjs';
|
3
3
|
import './chunk-CEH6MNVV.mjs';
|
4
4
|
import { global } from '@storybook/global';
|
5
|
-
import { setProjectAnnotations as setProjectAnnotations$1, composeStory as composeStory$1, composeStories as composeStories$1 } from 'storybook/internal/preview-api';
|
6
|
-
import { TestingLibraryMustBeConfiguredError } from 'storybook/internal/preview-errors';
|
5
|
+
import { setDefaultProjectAnnotations, setProjectAnnotations as setProjectAnnotations$1, composeStory as composeStory$1, composeStories as composeStories$1 } from 'storybook/internal/preview-api';
|
7
6
|
import { h } from 'vue';
|
8
7
|
|
9
|
-
var{window:globalWindow}=global;globalWindow.STORYBOOK_ENV="vue3";globalWindow.PLUGINS_SETUP_FUNCTIONS||=new Set;function setProjectAnnotations(projectAnnotations){return setProjectAnnotations$1(projectAnnotations)}var vueProjectAnnotations={...entry_preview_exports,renderToCanvas:(
|
8
|
+
var{window:globalWindow}=global;globalWindow.STORYBOOK_ENV="vue3";globalWindow.PLUGINS_SETUP_FUNCTIONS||=new Set;function setProjectAnnotations(projectAnnotations){return setDefaultProjectAnnotations(vueProjectAnnotations),setProjectAnnotations$1(projectAnnotations)}var vueProjectAnnotations={...entry_preview_exports,renderToCanvas:(renderContext,canvasElement)=>{if(renderContext.storyContext.testingLibraryRender==null)return renderToCanvas(renderContext,canvasElement);let{storyFn,storyContext:{testingLibraryRender:render}}=renderContext,{unmount}=render(storyFn(),{container:canvasElement});return unmount}};function composeStory(story,componentAnnotations,projectAnnotations,exportsName){let composedStory=composeStory$1(story,componentAnnotations,projectAnnotations,vueProjectAnnotations,exportsName),renderable=(...args)=>h(composedStory(...args));return Object.assign(renderable,composedStory),renderable}function composeStories(csfExports,projectAnnotations){return composeStories$1(csfExports,projectAnnotations,composeStory)}try{module?.hot?.decline&&module.hot.decline();}catch{}
|
10
9
|
|
11
10
|
export { composeStories, composeStory, setProjectAnnotations, vueProjectAnnotations };
|
package/dist/preset.js
CHANGED
@@ -1 +1 @@
|
|
1
|
-
"use strict";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 preset_exports={};__export(preset_exports,{previewAnnotations:()=>previewAnnotations});module.exports=__toCommonJS(preset_exports);var
|
1
|
+
"use strict";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 preset_exports={};__export(preset_exports,{previewAnnotations:()=>previewAnnotations});module.exports=__toCommonJS(preset_exports);var import_node_path=require("path"),previewAnnotations=async(input=[],options)=>{let docsEnabled=Object.keys(await options.presets.apply("docs",{},options)).length>0;return[].concat(input).concat([(0,import_node_path.join)(__dirname,"entry-preview.mjs")]).concat(docsEnabled?[(0,import_node_path.join)(__dirname,"entry-preview-docs.mjs")]:[])};0&&(module.exports={previewAnnotations});
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { Args, ComponentAnnotations, AnnotatedStoryFn, ArgsStoryFn, ArgsFromMeta, StoryAnnotations, StrictArgs, DecoratorFunction, LoaderFunction, StoryContext as StoryContext$1, ProjectAnnotations } from 'storybook/internal/types';
|
2
|
+
import { Simplify, SetOptional, Constructor, RemoveIndexSignature } from 'type-fest';
|
3
|
+
import { FunctionalComponent, VNodeChild } from 'vue';
|
4
|
+
import { ComponentProps, ComponentSlots } from 'vue-component-type-helpers';
|
5
|
+
import { V as VueRenderer } from './types-1ede6954.js';
|
6
|
+
|
7
|
+
/**
|
8
|
+
* Metadata to configure the stories for a component.
|
9
|
+
*
|
10
|
+
* @see [Default export](https://storybook.js.org/docs/formats/component-story-format/#default-export)
|
11
|
+
*/
|
12
|
+
type Meta<TCmpOrArgs = Args> = ComponentAnnotations<VueRenderer, ComponentPropsOrProps<TCmpOrArgs>>;
|
13
|
+
/**
|
14
|
+
* Story function that represents a CSFv2 component example.
|
15
|
+
*
|
16
|
+
* @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
|
17
|
+
*/
|
18
|
+
type StoryFn<TCmpOrArgs = Args> = AnnotatedStoryFn<VueRenderer, ComponentPropsOrProps<TCmpOrArgs>>;
|
19
|
+
/**
|
20
|
+
* Story object that represents a CSFv3 component example.
|
21
|
+
*
|
22
|
+
* @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
|
23
|
+
*/
|
24
|
+
type StoryObj<TMetaOrCmpOrArgs = Args> = TMetaOrCmpOrArgs extends {
|
25
|
+
render?: ArgsStoryFn<VueRenderer, any>;
|
26
|
+
component?: infer Component;
|
27
|
+
args?: infer DefaultArgs;
|
28
|
+
} ? Simplify<ComponentPropsAndSlots<Component> & ArgsFromMeta<VueRenderer, TMetaOrCmpOrArgs>> extends infer TArgs ? StoryAnnotations<VueRenderer, TArgs, SetOptional<TArgs, Extract<keyof TArgs, keyof DefaultArgs>>> : never : StoryAnnotations<VueRenderer, ComponentPropsOrProps<TMetaOrCmpOrArgs>>;
|
29
|
+
type ExtractSlots<C> = AllowNonFunctionSlots<Partial<RemoveIndexSignature<ComponentSlots<C>>>>;
|
30
|
+
type AllowNonFunctionSlots<Slots> = {
|
31
|
+
[K in keyof Slots]: Slots[K] | VNodeChild;
|
32
|
+
};
|
33
|
+
type ComponentPropsAndSlots<C> = ComponentProps<C> & ExtractSlots<C>;
|
34
|
+
type ComponentPropsOrProps<TCmpOrArgs> = TCmpOrArgs extends Constructor<any> ? ComponentPropsAndSlots<TCmpOrArgs> : TCmpOrArgs extends FunctionalComponent<any> ? ComponentPropsAndSlots<TCmpOrArgs> : TCmpOrArgs;
|
35
|
+
type Decorator<TArgs = StrictArgs> = DecoratorFunction<VueRenderer, TArgs>;
|
36
|
+
type Loader<TArgs = StrictArgs> = LoaderFunction<VueRenderer, TArgs>;
|
37
|
+
type StoryContext<TArgs = StrictArgs> = StoryContext$1<VueRenderer, TArgs>;
|
38
|
+
type Preview = ProjectAnnotations<VueRenderer>;
|
39
|
+
|
40
|
+
export { ComponentPropsAndSlots as C, Decorator as D, Loader as L, Meta as M, Preview as P, StoryFn as S, StoryObj as a, StoryContext as b };
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@storybook/vue3",
|
3
|
-
"version": "8.3.0-alpha.
|
3
|
+
"version": "8.3.0-alpha.10",
|
4
4
|
"description": "Storybook Vue 3 renderer",
|
5
5
|
"keywords": [
|
6
6
|
"storybook"
|
@@ -22,15 +22,15 @@
|
|
22
22
|
"exports": {
|
23
23
|
".": {
|
24
24
|
"types": "./dist/index.d.ts",
|
25
|
-
"node": "./dist/index.js",
|
26
25
|
"import": "./dist/index.mjs",
|
27
|
-
"require": "./dist/index.js"
|
26
|
+
"require": "./dist/index.js",
|
27
|
+
"node": "./dist/index.js"
|
28
28
|
},
|
29
29
|
"./experimental-playwright": {
|
30
30
|
"types": "./dist/playwright.d.ts",
|
31
|
-
"node": "./dist/playwright.js",
|
32
31
|
"import": "./dist/playwright.mjs",
|
33
|
-
"require": "./dist/playwright.js"
|
32
|
+
"require": "./dist/playwright.js",
|
33
|
+
"node": "./dist/playwright.js"
|
34
34
|
},
|
35
35
|
"./preset": "./preset.js",
|
36
36
|
"./dist/entry-preview.mjs": "./dist/entry-preview.mjs",
|
@@ -60,12 +60,15 @@
|
|
60
60
|
],
|
61
61
|
"scripts": {
|
62
62
|
"check": "vue-tsc --noEmit",
|
63
|
-
"prep": "
|
63
|
+
"prep": "jiti ../../../scripts/prepare/bundle.ts"
|
64
64
|
},
|
65
65
|
"dependencies": {
|
66
|
+
"@storybook/components": "^8.3.0-alpha.10",
|
66
67
|
"@storybook/global": "^5.0.0",
|
68
|
+
"@storybook/manager-api": "^8.3.0-alpha.10",
|
69
|
+
"@storybook/preview-api": "^8.3.0-alpha.10",
|
70
|
+
"@storybook/theming": "^8.3.0-alpha.10",
|
67
71
|
"@vue/compiler-core": "^3.0.0",
|
68
|
-
"lodash": "^4.17.21",
|
69
72
|
"ts-dedent": "^2.0.0",
|
70
73
|
"type-fest": "~2.19",
|
71
74
|
"vue-component-type-helpers": "latest"
|
@@ -75,12 +78,13 @@
|
|
75
78
|
"@testing-library/vue": "^8.0.0",
|
76
79
|
"@types/prettier": "^3.0.0",
|
77
80
|
"@vitejs/plugin-vue": "^4.4.0",
|
81
|
+
"lodash": "^4.17.21",
|
78
82
|
"typescript": "^5.3.2",
|
79
83
|
"vue": "^3.2.47",
|
80
84
|
"vue-tsc": "latest"
|
81
85
|
},
|
82
86
|
"peerDependencies": {
|
83
|
-
"storybook": "^8.3.0-alpha.
|
87
|
+
"storybook": "^8.3.0-alpha.10",
|
84
88
|
"vue": "^3.0.0"
|
85
89
|
},
|
86
90
|
"engines": {
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/vue3';
|
2
1
|
import { fn } from '@storybook/test';
|
2
|
+
import type { Meta, StoryObj } from '@storybook/vue3';
|
3
|
+
|
3
4
|
import Button from './Button.vue';
|
4
5
|
|
5
6
|
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
@@ -1,5 +1,6 @@
|
|
1
|
-
import type { Meta, StoryObj } from '@storybook/vue3';
|
2
1
|
import { fn } from '@storybook/test';
|
2
|
+
import type { Meta, StoryObj } from '@storybook/vue3';
|
3
|
+
|
3
4
|
import Button from './Button.vue';
|
4
5
|
|
5
6
|
// More on how to set up stories at: https://storybook.js.org/docs/writing-stories
|
@@ -1,9 +1,9 @@
|
|
1
1
|
import { global as globalThis } from '@storybook/global';
|
2
2
|
|
3
3
|
import Button from './Button.vue';
|
4
|
-
import Pre from './Pre.vue';
|
5
4
|
import Form from './Form.vue';
|
6
5
|
import Html from './Html.vue';
|
6
|
+
import Pre from './Pre.vue';
|
7
7
|
|
8
8
|
globalThis.Components = { Button, Pre, Form, Html };
|
9
9
|
globalThis.storybookRenderer = 'vue3';
|
File without changes
|