UNPKG

@storybook/vue

Version:
5 lines (4 loc) 5.52 kB
"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_exports={};__export(entry_preview_exports,{applyDecorators:()=>decorateStory,parameters:()=>parameters,render:()=>render,renderToCanvas:()=>renderToCanvas});module.exports=__toCommonJS(entry_preview_exports);var import_ts_dedent=require("ts-dedent"),import_vue=__toESM(require("vue")),COMPONENT="STORYBOOK_COMPONENT",VALUES="STORYBOOK_VALUES",map=new Map,getRoot=canvasElement=>{let cachedInstance=map.get(canvasElement);if(cachedInstance!=null)return cachedInstance;let target=document.createElement("div");canvasElement.appendChild(target);let instance=new import_vue.default({beforeDestroy(){map.delete(canvasElement)},data(){return{[COMPONENT]:void 0,[VALUES]:{}}},render(h){return map.set(canvasElement,instance),this[COMPONENT]?[h(this[COMPONENT])]:void 0}});return instance},render=(args,context)=>{var _a,_b;let{id,component:Component,argTypes}=context,component=Component;if(!component)throw new Error(`Unable to render story ${id} as the component annotation is missing from the default export`);let componentName="component";component.name?componentName=import_vue.default.config.isReservedTag&&import_vue.default.config.isReservedTag(component.name)?`sb-${component.name}`:component.name:(_a=component.__docgenInfo)!=null&&_a.displayName&&(componentName=(_b=component.__docgenInfo)==null?void 0:_b.displayName);let eventsBinding="",eventProps=Object.values(argTypes).filter(argType=>{var _a2;return((_a2=argType==null?void 0:argType.table)==null?void 0:_a2.category)==="events"}).map(argType=>argType.name),camelCase=str=>str.replace(/-([a-z])/g,g=>g[1].toUpperCase());return eventProps.length&&(eventsBinding=eventProps.map(name=>`@${name}="$props['${camelCase(name)}']"`).join(" ")),{props:Object.keys(argTypes),components:{[componentName]:component},template:`<${componentName} ${eventsBinding} v-bind="filterOutEventProps($props)" />`,methods:{filterOutEventProps(props){return Object.fromEntries(Object.entries(props).filter(([key])=>!eventProps.includes(key)))}}}};function renderToCanvas({title,name,storyFn,showMain,showError,showException,forceRemount},canvasElement){let root=getRoot(canvasElement);import_vue.default.config.errorHandler=showException;let element=storyFn(),mountTarget;if(canvasElement.hasChildNodes()?mountTarget=canvasElement.firstElementChild:(mountTarget=document.createElement("div"),canvasElement.appendChild(mountTarget)),!element){showError({title:`Expecting a Vue component from the story: "${name}" of "${title}".`,description:import_ts_dedent.dedent` Did you forget to return the Vue component from the story? Use "() => ({ template: '<my-comp></my-comp>' })" or "() => ({ components: MyComp, template: '<my-comp></my-comp>' })" when defining the story. `});return}(!root[COMPONENT]||forceRemount)&&(root[COMPONENT]=element),root[VALUES]={...element.options[VALUES]},map.has(canvasElement)||root.$mount(mountTarget??void 0),showMain()}var import_vue2=__toESM(require("vue")),import_preview_api=require("@storybook/preview-api");function getType(fn){let match=fn&&fn.toString().match(/^\s*function (\w+)/);return match?match[1]:""}function resolveDefault({type,default:def}){return typeof def=="function"&&getType(type)!=="Function"?def.call():def}function extractProps(component){return Object.entries(component.options.props||{}).map(([name,prop])=>({[name]:resolveDefault(prop)})).reduce((wrap,prop)=>({...wrap,...prop}),{})}var WRAPS="STORYBOOK_WRAPS";function prepare(rawStory,innerStory,context){let story;if(typeof rawStory=="string")story={template:rawStory};else if(rawStory!=null)story=rawStory;else return null;if(!story._isVue)innerStory&&(story.components={...story.components||{},story:innerStory}),story=import_vue2.default.extend(story);else if(story.options[WRAPS])return story;return import_vue2.default.extend({[WRAPS]:story,[VALUES]:{...innerStory?innerStory.options[VALUES]:{},...extractProps(story),...(context==null?void 0:context.args)||{}},functional:!0,render(h,{data,parent,children}){return h(story,{...data,props:{...data.props||{},...parent.$root[VALUES]}},children)}})}function decorateStory(storyFn,decorators){return decorators.reduce((decorated,decorator)=>context=>{let story,decoratedStory=decorator(update=>(story=decorated({...context,...(0,import_preview_api.sanitizeStoryContextUpdate)(update)}),story),context);return story||(story=decorated(context)),decoratedStory===story?story:prepare(decoratedStory,story)},context=>prepare(storyFn(context),void 0,context))}var parameters={renderer:"vue"};0&&(module.exports={applyDecorators,parameters,render,renderToCanvas});