@storybook/vue3 7.1.0-alpha.8 → 7.1.0-beta.0
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/chunk-SRVBJOBI.mjs +6 -0
- package/dist/config.d.ts +6 -17
- package/dist/config.js +3 -44
- package/dist/config.mjs +11 -43
- package/dist/index.d.ts +10 -11
- package/dist/index.js +1 -1
- package/dist/index.mjs +8 -1
- package/dist/render-32b7dd3f.d.ts +148 -0
- package/package.json +19 -15
- package/src/typings.d.ts +1 -0
- package/template/cli/js/Header.vue +1 -1
- package/template/cli/js/Page.vue +1 -1
- package/template/cli/ts-3-8/Header.vue +1 -1
- package/template/cli/ts-3-8/Page.vue +8 -5
- package/template/cli/ts-4-9/Header.vue +1 -1
- package/template/cli/ts-4-9/Page.vue +8 -5
- package/template/components/Form.vue +1 -4
- package/template/stories/preview.js +29 -4
- package/template/{stories → stories_vue3-vite-default-ts}/CustomRenderFunctionalComponent.stories.ts +0 -2
- package/template/{stories → stories_vue3-vite-default-ts}/CustomRenderOptionsArgsFromData.stories.ts +0 -2
- package/template/stories_vue3-vite-default-ts/GlobalSetup.stories.ts +55 -0
- package/template/stories_vue3-vite-default-ts/GlobalSetup.vue +6 -0
- package/template/stories_vue3-vite-default-ts/GlobalUsage.vue +3 -0
- package/template/{stories → stories_vue3-vite-default-ts}/OverrideArgs.stories.js +3 -1
- package/template/{stories → stories_vue3-vite-default-ts}/ReactiveArgs.stories.ts +5 -3
- package/template/{stories → stories_vue3-vite-default-ts}/ReactiveDecorators.stories.ts +2 -26
- package/template/{stories → stories_vue3-vite-default-ts}/ScopedSlots.stories.ts +2 -2
- package/template/stories_vue3-vite-default-ts/SourceDecorator.stories.ts +46 -0
- package/template/stories_vue3-vite-default-ts/preview.ts +12 -0
- package/dist/chunk-7CGPMEMZ.mjs +0 -1
- package/dist/render-189b3692.d.ts +0 -14
- package/template/stories/CustomRenderOptionsArgsFromProps.stories.ts +0 -33
- package/template/stories/GlobalUsage.vue +0 -3
- /package/template/{stories → stories_vue3-vite-default-ts}/BaseLayout.vue +0 -0
- /package/template/{stories → stories_vue3-vite-default-ts}/GlobalUsage.stories.ts +0 -0
- /package/template/{stories → stories_vue3-vite-default-ts}/MySlotComponent.vue +0 -0
- /package/template/{stories → stories_vue3-vite-default-ts}/OverrideArgs.vue +0 -0
- /package/template/{stories → stories_vue3-vite-default-ts}/ReactiveArgs.vue +0 -0
- /package/template/{stories → stories_vue3-vite-default-ts}/ReactiveSlots.stories.ts +0 -0
- /package/template/{stories → stories_vue3-vite-default-ts}/Reactivity.vue +0 -0
- /package/template/{stories → stories_vue3-vite-default-ts}/decorators.stories.ts +0 -0
@@ -0,0 +1,46 @@
|
|
1
|
+
import type { Meta, StoryObj } from '@storybook/vue3';
|
2
|
+
|
3
|
+
import GlobalUsage from './GlobalUsage.vue';
|
4
|
+
import GlobalSetup from './GlobalSetup.vue';
|
5
|
+
|
6
|
+
const meta: Meta = {
|
7
|
+
component: GlobalUsage,
|
8
|
+
argTypes: {},
|
9
|
+
tags: ['autodocs'],
|
10
|
+
} satisfies Meta<typeof GlobalUsage>;
|
11
|
+
|
12
|
+
export default meta;
|
13
|
+
type Story = StoryObj<typeof meta>;
|
14
|
+
|
15
|
+
export const MultiComponents: Story = {
|
16
|
+
args: {
|
17
|
+
label: 'Button',
|
18
|
+
size: 'large',
|
19
|
+
backgroundColor: '#aa00ff',
|
20
|
+
btn1Args: { label: 'Button 10', size: 'small', backgroundColor: '#aa00ff' },
|
21
|
+
},
|
22
|
+
render(args: any) {
|
23
|
+
return {
|
24
|
+
components: { GlobalUsage, GlobalSetup },
|
25
|
+
setup() {
|
26
|
+
return { args };
|
27
|
+
},
|
28
|
+
template: `<div style="background-color:pink;opacity:0.9;padding:20px" >
|
29
|
+
|
30
|
+
<div style="display:flex;gap:10px">
|
31
|
+
<img src="https://user-images.githubusercontent.com/263385/199832481-bbbf5961-6a26-481d-8224-51258cce9b33.png" width="200" />
|
32
|
+
<GlobalUsage v-bind="args.btn1Args" />
|
33
|
+
</div>
|
34
|
+
<h2>Complex Story Custom template </h2> <br/> <hr/>
|
35
|
+
|
36
|
+
<GlobalSetup :label="args.label" />
|
37
|
+
<div style="margin:8px"><span style="font-size:28px;color:green">Multiple </span>
|
38
|
+
<span style="background-color:magenta;opacity:0.9;padding:8px"><i>Components</i></span></div>
|
39
|
+
<div style="display:flex;gap:10px">
|
40
|
+
<GlobalUsage v-bind="args" />
|
41
|
+
<GlobalUsage label="Static Label Dynamic color" :background-color="args.backgroundColor"/>
|
42
|
+
</div>
|
43
|
+
</div>`,
|
44
|
+
};
|
45
|
+
},
|
46
|
+
};
|
package/dist/chunk-7CGPMEMZ.mjs
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
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 __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __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));import{h}from"vue";import{sanitizeStoryContextUpdate}from"@storybook/preview-api";function makeMap(str,expectsLowerCase){let map2=Object.create(null),list=str.split(",");for(let i=0;i<list.length;i++)map2[list[i]]=!0;return expectsLowerCase?val=>!!map2[val.toLowerCase()]:val=>!!map2[val]}var specialBooleanAttrs="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly";var isBooleanAttr=makeMap(specialBooleanAttrs+",async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected");function looseCompareArrays(a,b){if(a.length!==b.length)return!1;let equal=!0;for(let i=0;equal&&i<a.length;i++)equal=looseEqual(a[i],b[i]);return equal}function looseEqual(a,b){if(a===b)return!0;let aValidType=isDate(a),bValidType=isDate(b);if(aValidType||bValidType)return aValidType&&bValidType?a.getTime()===b.getTime():!1;if(aValidType=isSymbol(a),bValidType=isSymbol(b),aValidType||bValidType)return a===b;if(aValidType=isArray(a),bValidType=isArray(b),aValidType||bValidType)return aValidType&&bValidType?looseCompareArrays(a,b):!1;if(aValidType=isObject(a),bValidType=isObject(b),aValidType||bValidType){if(!aValidType||!bValidType)return!1;let aKeysCount=Object.keys(a).length,bKeysCount=Object.keys(b).length;if(aKeysCount!==bKeysCount)return!1;for(let key in a){let aHasKey=a.hasOwnProperty(key),bHasKey=b.hasOwnProperty(key);if(aHasKey&&!bHasKey||!aHasKey&&bHasKey||!looseEqual(a[key],b[key]))return!1}}return String(a)===String(b)}var EMPTY_OBJ=Object.freeze({}),EMPTY_ARR=Object.freeze([]);var isArray=Array.isArray;var isDate=val=>toTypeString(val)==="[object Date]";var isSymbol=val=>typeof val=="symbol",isObject=val=>val!==null&&typeof val=="object";var objectToString=Object.prototype.toString,toTypeString=value=>objectToString.call(value);var cacheStringFunction=fn=>{let cache=Object.create(null);return str=>cache[str]||(cache[str]=fn(str))},camelizeRE=/-(\w)/g,camelize=cacheStringFunction(str=>str.replace(camelizeRE,(_,c)=>c?c.toUpperCase():"")),hyphenateRE=/\B([A-Z])/g,hyphenate=cacheStringFunction(str=>str.replace(hyphenateRE,"-$1").toLowerCase()),capitalize=cacheStringFunction(str=>str.charAt(0).toUpperCase()+str.slice(1)),toHandlerKey=cacheStringFunction(str=>str?`on${capitalize(str)}`:"");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 h(story)}}}function decorateStory(storyFn,decorators){let updatedArgs;return decorators.reduce((decorated,decorator)=>context=>{let story,decoratedStory=decorator(update=>(story=decorated({...context,...sanitizeStoryContextUpdate(update)}),update&&update.args&&!looseEqual(update.args,context.args)&&(updatedArgs??=update.args),story),context);return context.args=updatedArgs??context.args,story||(story=decorated(context)),decoratedStory===story?story:prepare(decoratedStory,()=>h(story,context.args))},context=>prepare(storyFn(context)))}import{createApp,h as h2,isReactive,isVNode,reactive}from"vue";var slotsMap=new Map,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 h2(Component,props,createOrUpdateSlots(context))},setupFunction=_app=>{},setup=fn=>{setupFunction=fn},map=new Map;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=createApp({setup(){storyContext.args=reactive(storyContext.args);let rootElement=storyFn(),args=getArgs(rootElement,storyContext),appState={vueApp,reactiveArgs:reactive(args)};return map.set(canvasElement,appState),()=>h2(rootElement,appState.reactiveArgs)}});return vueApp.config.errorHandler=e=>showException(e),setupFunction(vueApp),vueApp.mount(canvasElement),showMain(),()=>{teardown(vueApp,canvasElement)}}function generateSlots(context){let{argTypes}=context,slots=Object.entries(argTypes).filter(([key,value])=>argTypes[key]?.table?.category==="slots").map(([key,value])=>{let slotValue=context.args[key];return[key,typeof slotValue=="function"?slotValue:()=>slotValue]});return reactive(Object.fromEntries(slots))}function getArgs(element,storyContext){return element.props&&isVNode(element)?element.props:storyContext.args}function updateArgs(reactiveArgs,nextArgs){if(Object.keys(nextArgs).length===0)return;let currentArgs=isReactive(reactiveArgs)?reactiveArgs: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)}function createOrUpdateSlots(context){let{id:storyID,component}=context,slots=generateSlots(context);if(slotsMap.has(storyID)){let app=slotsMap.get(storyID);return app?.reactiveSlots&&updateArgs(app.reactiveSlots,slots),app?.reactiveSlots}return slotsMap.set(storyID,{component,reactiveSlots:slots}),slots}export{__commonJS,__toESM,isArray,decorateStory,render,setup,renderToCanvas};
|
@@ -1,14 +0,0 @@
|
|
1
|
-
import { WebRenderer, ArgsStoryFn, RenderContext } from '@storybook/types';
|
2
|
-
import { ConcreteComponent } from 'vue';
|
3
|
-
|
4
|
-
type StoryFnVueReturnType = ConcreteComponent<any>;
|
5
|
-
interface VueRenderer extends WebRenderer {
|
6
|
-
component: Omit<ConcreteComponent<this['T']>, 'props'>;
|
7
|
-
storyResult: StoryFnVueReturnType;
|
8
|
-
}
|
9
|
-
|
10
|
-
declare const render: ArgsStoryFn<VueRenderer>;
|
11
|
-
declare const setup: (fn: (app: any) => void) => void;
|
12
|
-
declare function renderToCanvas({ storyFn, forceRemount, showMain, showException, storyContext, id }: RenderContext<VueRenderer>, canvasElement: VueRenderer['canvasElement']): () => void;
|
13
|
-
|
14
|
-
export { VueRenderer as V, renderToCanvas as a, render as r, setup as s };
|
@@ -1,33 +0,0 @@
|
|
1
|
-
import type { Meta } from '@storybook/vue3';
|
2
|
-
import { defineComponent } from 'vue';
|
3
|
-
import Reactivity from './Reactivity.vue';
|
4
|
-
import * as ReactiveDecorators from './ReactiveDecorators.stories';
|
5
|
-
|
6
|
-
const meta = {
|
7
|
-
...ReactiveDecorators.default,
|
8
|
-
component: Reactivity,
|
9
|
-
render: (args, { argTypes }) => {
|
10
|
-
return defineComponent({
|
11
|
-
props: Object.keys(argTypes),
|
12
|
-
components: { Reactivity },
|
13
|
-
template: `<div>Custom render uses options api and binds args to props: <Reactivity v-bind="$props">
|
14
|
-
<template #header="{title}"><h3>{{ header }} - Title: {{ title }}</h3></template>
|
15
|
-
{{ $props.default }}
|
16
|
-
<template #footer>{{ footer }}</template>
|
17
|
-
</Reactivity>
|
18
|
-
</div>`,
|
19
|
-
});
|
20
|
-
},
|
21
|
-
} satisfies Meta<typeof Reactivity>;
|
22
|
-
|
23
|
-
export default meta;
|
24
|
-
|
25
|
-
export {
|
26
|
-
NoDecorators,
|
27
|
-
DecoratorFunctionalComponent,
|
28
|
-
DecoratorFunctionalComponentArgsFromContext,
|
29
|
-
DecoratorFunctionalComponentArgsFromProps,
|
30
|
-
DecoratorComponentOptions,
|
31
|
-
DecoratorComponentOptionsArgsFromData,
|
32
|
-
DecoratorComponentOptionsArgsFromProps,
|
33
|
-
} from './ReactiveDecorators.stories';
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|