@storybook/web-components 7.0.0-alpha.4 → 7.0.0-alpha.7

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.
Files changed (49) hide show
  1. package/dist/chunk-LW7MJT4D.mjs +5 -0
  2. package/dist/config.d.ts +32 -0
  3. package/dist/config.js +5 -0
  4. package/dist/config.mjs +1 -0
  5. package/dist/index.d.ts +58 -0
  6. package/dist/index.js +5 -0
  7. package/dist/index.mjs +1 -0
  8. package/dist/types-7ab3c005.d.ts +17 -0
  9. package/package.json +35 -13
  10. package/preview.js +1 -1
  11. package/dist/cjs/config.js +0 -43
  12. package/dist/cjs/customElements.js +0 -57
  13. package/dist/cjs/docs/config.js +0 -29
  14. package/dist/cjs/docs/custom-elements.js +0 -139
  15. package/dist/cjs/docs/sourceDecorator.js +0 -59
  16. package/dist/cjs/index.js +0 -145
  17. package/dist/cjs/preview/config.js +0 -13
  18. package/dist/cjs/preview/globals.js +0 -10
  19. package/dist/cjs/preview/index.js +0 -42
  20. package/dist/cjs/preview/render.js +0 -70
  21. package/dist/cjs/preview/types-6-0.js +0 -5
  22. package/dist/cjs/preview/types-7-0.js +0 -5
  23. package/dist/cjs/preview/types.js +0 -5
  24. package/dist/esm/config.js +0 -6
  25. package/dist/esm/customElements.js +0 -42
  26. package/dist/esm/docs/config.js +0 -16
  27. package/dist/esm/docs/custom-elements.js +0 -117
  28. package/dist/esm/docs/sourceDecorator.js +0 -45
  29. package/dist/esm/index.js +0 -27
  30. package/dist/esm/preview/config.js +0 -1
  31. package/dist/esm/preview/globals.js +0 -5
  32. package/dist/esm/preview/index.js +0 -19
  33. package/dist/esm/preview/render.js +0 -55
  34. package/dist/esm/preview/types-6-0.js +0 -1
  35. package/dist/esm/preview/types-7-0.js +0 -1
  36. package/dist/esm/preview/types.js +0 -1
  37. package/dist/types/config.d.ts +0 -16
  38. package/dist/types/customElements.d.ts +0 -8
  39. package/dist/types/docs/config.d.ts +0 -17
  40. package/dist/types/docs/custom-elements.d.ts +0 -35
  41. package/dist/types/docs/sourceDecorator.d.ts +0 -3
  42. package/dist/types/index.d.ts +0 -3
  43. package/dist/types/preview/config.d.ts +0 -1
  44. package/dist/types/preview/globals.d.ts +0 -1
  45. package/dist/types/preview/index.d.ts +0 -24
  46. package/dist/types/preview/render.d.ts +0 -3
  47. package/dist/types/preview/types-6-0.d.ts +0 -34
  48. package/dist/types/preview/types-7-0.d.ts +0 -9
  49. package/dist/types/preview/types.d.ts +0 -16
@@ -0,0 +1,5 @@
1
+ var u=Object.defineProperty;var f=Object.getOwnPropertySymbols;var M=Object.prototype.hasOwnProperty,S=Object.prototype.propertyIsEnumerable;var l=(e,o,r)=>o in e?u(e,o,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[o]=r,v=(e,o)=>{for(var r in o||(o={}))M.call(o,r)&&l(e,r,o[r]);if(f)for(var r of f(o))S.call(o,r)&&l(e,r,o[r]);return e};var t=(e,o)=>u(e,"name",{value:o,configurable:!0});import R from"global";import g from"global";var{window:x}=g;x.STORYBOOK_ENV="web-components";import{start as L}from"@storybook/core-client";import y from"global";import h from"ts-dedent";import{render as A}from"lit-html";import{isTemplateResult as E}from"lit-html/directive-helpers.js";import{simulatePageLoad as m,simulateDOMContentLoaded as b}from"@storybook/preview-web";var{Node:C}=y;function _({storyFn:e,kind:o,name:r,showMain:p,showError:w,forceRemount:c},n){let s=e();if(p(),E(s)){(c||!n.querySelector('[id="root-inner"]'))&&(n.innerHTML='<div id="root-inner"></div>');let T=n.querySelector('[id="root-inner"]');A(s,T),m(n)}else if(typeof s=="string")n.innerHTML=s,m(n);else if(s instanceof C){if(n.firstChild===s&&!c)return;n.innerHTML="",n.appendChild(s),b()}else w({title:`Expecting an HTML snippet or DOM node from the story: "${r}" of "${o}".`,description:h`
2
+ Did you forget to return the HTML snippet from the story?
3
+ Use "() => <your snippet or node>" or when defining the story.
4
+ `})}t(_,"renderToDOM");var O="web-components",i=L(_),I=t((e,o)=>i.clientApi.storiesOf(e,o).addParameters({framework:O}),"storiesOf"),W=t((...e)=>i.configure(O,...e),"configure"),$=i.clientApi.addDecorator,j=i.clientApi.addParameters,J=i.clientApi.clearDecorators,z=i.clientApi.setAddon,G=i.forceReRender,Q=i.clientApi.getStorybook,X=i.clientApi.raw;function ee(e){if(!e)return!1;if(typeof e=="string")return!0;throw new Error('Provided component needs to be a string. e.g. component: "my-element"')}t(ee,"isValidComponent");function oe(e){if(!e)return!1;if(e.tags&&Array.isArray(e.tags)||e.modules&&Array.isArray(e.modules))return!0;throw new Error(`You need to setup valid meta data in your config.js via setCustomElements().
5
+ See the readme of addon-docs for web components for more details.`)}t(oe,"isValidMetaData");function re(e){window.__STORYBOOK_CUSTOM_ELEMENTS__=e}t(re,"setCustomElements");function te(e){window.__STORYBOOK_CUSTOM_ELEMENTS_MANIFEST__=e}t(te,"setCustomElementsManifest");function ne(){return window.__STORYBOOK_CUSTOM_ELEMENTS__||window.__STORYBOOK_CUSTOM_ELEMENTS_MANIFEST__}t(ne,"getCustomElements");var{window:D,EventSource:N}=R;module&&module.hot&&module.hot.decline&&(module.hot.decline(),new N("__webpack_hmr").addEventListener("message",t(function(r){try{let{action:p}=JSON.parse(r.data);p==="built"&&D.location.reload()}catch{}},"fullPageReload")));export{v as a,t as b,_ as c,I as d,W as e,$ as f,j as g,J as h,z as i,G as j,Q as k,X as l,ee as m,oe as n,re as o,te as p,ne as q};
@@ -0,0 +1,32 @@
1
+ import * as lib_docs_tools_dist_types from 'lib/docs-tools/dist/types';
2
+ import * as lib_api_dist_types from 'lib/api/dist/types';
3
+ import * as lib_addons_dist_types from 'lib/addons/dist/types';
4
+ import * as _storybook_csf from '@storybook/csf';
5
+ import { PartialStoryFn, StoryContext } from '@storybook/csf';
6
+ import { W as WebComponentsFramework } from './types-7ab3c005.js';
7
+ import { RenderContext } from '@storybook/store';
8
+ import 'lit-html';
9
+
10
+ declare function sourceDecorator(storyFn: PartialStoryFn<WebComponentsFramework>, context: StoryContext<WebComponentsFramework>): WebComponentsFramework['storyResult'];
11
+
12
+ declare const decorators: (typeof sourceDecorator)[];
13
+ declare const argTypesEnhancers: (<TFramework extends _storybook_csf.AnyFramework>(context: _storybook_csf.StoryContextForEnhancers<TFramework, _storybook_csf.Args>) => _storybook_csf.StrictArgTypes<_storybook_csf.Args> | lib_addons_dist_types.Parameters)[];
14
+
15
+ declare function renderToDOM({ storyFn, kind, name, showMain, showError, forceRemount }: RenderContext<WebComponentsFramework>, domElement: Element): void;
16
+
17
+ declare const parameters: {
18
+ docs: {
19
+ extractArgTypes: (tagName: string) => {
20
+ [x: string]: lib_api_dist_types.ArgType;
21
+ };
22
+ extractComponentDescription: (tagName: string) => string;
23
+ inlineStories: boolean;
24
+ source: {
25
+ type: lib_docs_tools_dist_types.SourceType;
26
+ language: string;
27
+ };
28
+ };
29
+ framework: "web-components";
30
+ };
31
+
32
+ export { argTypesEnhancers, decorators, parameters, renderToDOM };
package/dist/config.js ADDED
@@ -0,0 +1,5 @@
1
+ var j=Object.create;var l=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames,D=Object.getOwnPropertySymbols,J=Object.getPrototypeOf,A=Object.prototype.hasOwnProperty,X=Object.prototype.propertyIsEnumerable;var C=(e,r,o)=>r in e?l(e,r,{enumerable:!0,configurable:!0,writable:!0,value:o}):e[r]=o,i=(e,r)=>{for(var o in r||(r={}))A.call(r,o)&&C(e,o,r[o]);if(D)for(var o of D(r))X.call(r,o)&&C(e,o,r[o]);return e};var s=(e,r)=>l(e,"name",{value:r,configurable:!0});var Z=(e,r)=>{for(var o in r)l(e,o,{get:r[o],enumerable:!0})},E=(e,r,o,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let n of W(r))!A.call(e,n)&&n!==o&&l(e,n,{get:()=>r[n],enumerable:!(t=q(r,n))||t.enumerable});return e};var T=(e,r,o)=>(o=e!=null?j(J(e)):{},E(r||!e||!e.__esModule?l(o,"default",{value:e,enumerable:!0}):o,e)),z=e=>E(l({},"__esModule",{value:!0}),e);var de={};Z(de,{argTypesEnhancers:()=>B,decorators:()=>H,parameters:()=>ce,renderToDOM:()=>g});module.exports=z(de);var S=require("@storybook/docs-tools");var h=require("@storybook/client-logger");var k=T(require("global"));var b=T(require("global")),{window:G}=b.default;G.STORYBOOK_ENV="web-components";var N=require("@storybook/core-client");var x=T(require("global")),R=T(require("ts-dedent")),v=require("lit-html"),L=require("lit-html/directive-helpers.js"),m=require("@storybook/preview-web"),{Node:Q}=x.default;function g({storyFn:e,kind:r,name:o,showMain:t,showError:n,forceRemount:c},a){let d=e();if(t(),(0,L.isTemplateResult)(d)){(c||!a.querySelector('[id="root-inner"]'))&&(a.innerHTML='<div id="root-inner"></div>');let F=a.querySelector('[id="root-inner"]');(0,v.render)(d,F),(0,m.simulatePageLoad)(a)}else if(typeof d=="string")a.innerHTML=d,(0,m.simulatePageLoad)(a);else if(d instanceof Q){if(a.firstChild===d&&!c)return;a.innerHTML="",a.appendChild(d),(0,m.simulateDOMContentLoaded)()}else n({title:`Expecting an HTML snippet or DOM node from the story: "${o}" of "${r}".`,description:R.default`
2
+ Did you forget to return the HTML snippet from the story?
3
+ Use "() => <your snippet or node>" or when defining the story.
4
+ `})}s(g,"renderToDOM");var f=(0,N.start)(g);var me=f.clientApi.addDecorator,ye=f.clientApi.addParameters,Te=f.clientApi.clearDecorators,ge=f.clientApi.setAddon,we=f.forceReRender,Se=f.clientApi.getStorybook,_e=f.clientApi.raw;function _(e){if(!e)return!1;if(typeof e=="string")return!0;throw new Error('Provided component needs to be a string. e.g. component: "my-element"')}s(_,"isValidComponent");function M(e){if(!e)return!1;if(e.tags&&Array.isArray(e.tags)||e.modules&&Array.isArray(e.modules))return!0;throw new Error(`You need to setup valid meta data in your config.js via setCustomElements().
5
+ See the readme of addon-docs for web components for more details.`)}s(M,"isValidMetaData");function O(){return window.__STORYBOOK_CUSTOM_ELEMENTS__||window.__STORYBOOK_CUSTOM_ELEMENTS_MANIFEST__}s(O,"getCustomElements");var{window:ee,EventSource:re}=k.default;module&&module.hot&&module.hot.decline&&(module.hot.decline(),new re("__webpack_hmr").addEventListener("message",s(function(o){try{let{action:t}=JSON.parse(o.data);t==="built"&&ee.location.reload()}catch{}},"fullPageReload")));function U(e,r){var t,n;let o=r==="properties"?{name:((t=e.type)==null?void 0:t.text)||e.type}:{name:"void"};return{name:e.name,required:!1,description:e.description,type:o,table:{category:r,type:{summary:((n=e.type)==null?void 0:n.text)||e.type},defaultValue:{summary:e.default!==void 0?e.default:e.defaultValue}}}}s(U,"mapItem");function oe(e){let r=e.name.replace(/(-|_|:|\.|\s)+(.)?/g,(o,t,n)=>n?n.toUpperCase():"").replace(/^([A-Z])/,o=>o.toLowerCase());return r=`on${r.charAt(0).toUpperCase()+r.substr(1)}`,[{name:r,action:{name:e.name},table:{disable:!0}},U(e,"events")]}s(oe,"mapEvent");function u(e,r){return e&&e.filter(o=>o&&o.name).reduce((o,t)=>{if(t.kind==="method")return o;switch(r){case"events":oe(t).forEach(n=>{o[n.name]=n});break;default:o[t.name]=U(t,r);break}return o},{})}s(u,"mapData");var te=s((e,r)=>{if(!_(e)||!M(r))return null;let o=r.tags.find(t=>t.name.toUpperCase()===e.toUpperCase());return o||h.logger.warn(`Component not found in custom-elements.json: ${e}`),o},"getMetaDataExperimental"),ne=s((e,r)=>{var t;if(!_(e)||!M(r))return null;let o;return(t=r==null?void 0:r.modules)==null||t.forEach(n=>{var c;(c=n==null?void 0:n.declarations)==null||c.forEach(a=>{a.tagName===e&&(o=a)})}),o||h.logger.warn(`Component not found in custom-elements.json: ${e}`),o},"getMetaDataV1"),I=s((e,r)=>(r==null?void 0:r.version)==="experimental"?te(e,r):ne(e,r),"getMetaData"),se=s((e,r)=>{let o=I(e,r);return o&&i(i(i(i(i(i(i({},u(o.attributes,"attributes")),u(o.members,"properties")),u(o.properties,"properties")),u(o.events,"events")),u(o.slots,"slots")),u(o.cssProperties,"css custom properties")),u(o.cssParts,"css shadow parts"))},"extractArgTypesFromElements"),V=s(e=>{let r=O();return se(e,r)},"extractArgTypes"),Y=s(e=>{let r=I(e,O());return r&&r.description},"extractComponentDescription");var P=require("lit-html"),w=require("@storybook/addons"),y=require("@storybook/docs-tools"),ae=/<!--\?lit\$[0-9]+\$-->|<!--\??-->/g;function ie(e){var t;let r=(t=e==null?void 0:e.parameters.docs)==null?void 0:t.source,o=e==null?void 0:e.parameters.__isArgsStory;return(r==null?void 0:r.type)===y.SourceType.DYNAMIC?!1:!o||(r==null?void 0:r.code)||(r==null?void 0:r.type)===y.SourceType.CODE}s(ie,"skipSourceRender");function pe(e,r){let{transformSource:o}=r.parameters.docs??{};return typeof o!="function"?e:o(e,r)}s(pe,"applyTransformSource");function $(e,r){var n,c;let o=(c=(n=r==null?void 0:r.parameters.docs)==null?void 0:n.source)!=null&&c.excludeDecorators?r.originalStoryFn(r.args,r):e(),t;if((0,w.useEffect)(()=>{t&&w.addons.getChannel().emit(y.SNIPPET_RENDERED,r.id,t)}),!ie(r)){let a=window.document.createElement("div");(0,P.render)(o,a),t=pe(a.innerHTML.replace(ae,""),r)}return o}s($,"sourceDecorator");var H=[$],K={docs:{extractArgTypes:V,extractComponentDescription:Y,inlineStories:!0,source:{type:S.SourceType.DYNAMIC,language:"html"}}},B=[S.enhanceArgTypes];var ce=i({framework:"web-components"},K);0&&(module.exports={argTypesEnhancers,decorators,parameters,renderToDOM});
@@ -0,0 +1 @@
1
+ import{a,b as s,c as b,m as c,n as f,q as d}from"./chunk-LW7MJT4D.mjs";import{SourceType as _,enhanceArgTypes as L}from"@storybook/docs-tools";import{logger as y}from"@storybook/client-logger";function D(e,r){var o,n;let t=r==="properties"?{name:((o=e.type)==null?void 0:o.text)||e.type}:{name:"void"};return{name:e.name,required:!1,description:e.description,type:t,table:{category:r,type:{summary:((n=e.type)==null?void 0:n.text)||e.type},defaultValue:{summary:e.default!==void 0?e.default:e.defaultValue}}}}s(D,"mapItem");function A(e){let r=e.name.replace(/(-|_|:|\.|\s)+(.)?/g,(t,o,n)=>n?n.toUpperCase():"").replace(/^([A-Z])/,t=>t.toLowerCase());return r=`on${r.charAt(0).toUpperCase()+r.substr(1)}`,[{name:r,action:{name:e.name},table:{disable:!0}},D(e,"events")]}s(A,"mapEvent");function p(e,r){return e&&e.filter(t=>t&&t.name).reduce((t,o)=>{if(o.kind==="method")return t;switch(r){case"events":A(o).forEach(n=>{t[n.name]=n});break;default:t[o.name]=D(o,r);break}return t},{})}s(p,"mapData");var M=s((e,r)=>{if(!c(e)||!f(r))return null;let t=r.tags.find(o=>o.name.toUpperCase()===e.toUpperCase());return t||y.warn(`Component not found in custom-elements.json: ${e}`),t},"getMetaDataExperimental"),w=s((e,r)=>{var o;if(!c(e)||!f(r))return null;let t;return(o=r==null?void 0:r.modules)==null||o.forEach(n=>{var i;(i=n==null?void 0:n.declarations)==null||i.forEach(u=>{u.tagName===e&&(t=u)})}),t||y.warn(`Component not found in custom-elements.json: ${e}`),t},"getMetaDataV1"),C=s((e,r)=>(r==null?void 0:r.version)==="experimental"?M(e,r):w(e,r),"getMetaData"),v=s((e,r)=>{let t=C(e,r);return t&&a(a(a(a(a(a(a({},p(t.attributes,"attributes")),p(t.members,"properties")),p(t.properties,"properties")),p(t.events,"events")),p(t.slots,"slots")),p(t.cssProperties,"css custom properties")),p(t.cssParts,"css shadow parts"))},"extractArgTypesFromElements"),g=s(e=>{let r=d();return v(e,r)},"extractArgTypes"),E=s(e=>{let r=C(e,d());return r&&r.description},"extractComponentDescription");import{render as I}from"lit-html";import{addons as k,useEffect as V}from"@storybook/addons";import{SNIPPET_RENDERED as $,SourceType as S}from"@storybook/docs-tools";var O=/<!--\?lit\$[0-9]+\$-->|<!--\??-->/g;function R(e){var o;let r=(o=e==null?void 0:e.parameters.docs)==null?void 0:o.source,t=e==null?void 0:e.parameters.__isArgsStory;return(r==null?void 0:r.type)===S.DYNAMIC?!1:!t||(r==null?void 0:r.code)||(r==null?void 0:r.type)===S.CODE}s(R,"skipSourceRender");function U(e,r){let{transformSource:t}=r.parameters.docs??{};return typeof t!="function"?e:t(e,r)}s(U,"applyTransformSource");function T(e,r){var n,i;let t=(i=(n=r==null?void 0:r.parameters.docs)==null?void 0:n.source)!=null&&i.excludeDecorators?r.originalStoryFn(r.args,r):e(),o;if(V(()=>{o&&k.getChannel().emit($,r.id,o)}),!R(r)){let u=window.document.createElement("div");I(t,u),o=U(u.innerHTML.replace(O,""),r)}return t}s(T,"sourceDecorator");var j=[T],h={docs:{extractArgTypes:g,extractComponentDescription:E,inlineStories:!0,source:{type:_.DYNAMIC,language:"html"}}},F=[L];var K=a({framework:"web-components"},h);export{F as argTypesEnhancers,j as decorators,K as parameters,b as renderToDOM};
@@ -0,0 +1,58 @@
1
+ import { Args, ComponentAnnotations, AnnotatedStoryFn, StoryAnnotations } from '@storybook/csf';
2
+ import { W as WebComponentsFramework, I as IStorybookSection } from './types-7ab3c005.js';
3
+ import { ClientStoryApi, Loadable } from '@storybook/addons';
4
+ import 'lit-html';
5
+
6
+ /**
7
+ * Metadata to configure the stories for a component.
8
+ *
9
+ * @see [Default export](https://storybook.js.org/docs/formats/component-story-format/#default-export)
10
+ */
11
+ declare type Meta<TArgs = Args> = ComponentAnnotations<WebComponentsFramework, TArgs>;
12
+ /**
13
+ * Story function that represents a CSFv2 component example.
14
+ *
15
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
16
+ */
17
+ declare type StoryFn<TArgs = Args> = AnnotatedStoryFn<WebComponentsFramework, TArgs>;
18
+ /**
19
+ * Story function that represents a CSFv3 component example.
20
+ *
21
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
22
+ */
23
+ declare type StoryObj<TArgs = Args> = StoryAnnotations<WebComponentsFramework, TArgs>;
24
+ /**
25
+ * Story function that represents a CSFv3 component example.
26
+ *
27
+ * @see [Named Story exports](https://storybook.js.org/docs/formats/component-story-format/#named-story-exports)
28
+ */
29
+ declare type Story<TArgs = Args> = StoryObj<TArgs>;
30
+
31
+ interface ClientApi extends ClientStoryApi<WebComponentsFramework['storyResult']> {
32
+ setAddon(addon: any): void;
33
+ configure(loader: Loadable, module: NodeModule): void;
34
+ getStorybook(): IStorybookSection[];
35
+ clearDecorators(): void;
36
+ forceReRender(): void;
37
+ raw: () => any;
38
+ }
39
+ declare const storiesOf: ClientApi['storiesOf'];
40
+ declare const configure: ClientApi['configure'];
41
+ declare const addDecorator: ClientApi['addDecorator'];
42
+ declare const addParameters: ClientApi['addParameters'];
43
+ declare const clearDecorators: ClientApi['clearDecorators'];
44
+ declare const setAddon: ClientApi['setAddon'];
45
+ declare const forceReRender: ClientApi['forceReRender'];
46
+ declare const getStorybook: ClientApi['getStorybook'];
47
+ declare const raw: ClientApi['raw'];
48
+
49
+ declare function isValidComponent(tagName: string): boolean;
50
+ declare function isValidMetaData(customElements: any): boolean;
51
+ /**
52
+ * @param customElements any for now as spec is not super stable yet
53
+ */
54
+ declare function setCustomElements(customElements: any): void;
55
+ declare function setCustomElementsManifest(customElements: any): void;
56
+ declare function getCustomElements(): any;
57
+
58
+ export { Meta, Story, StoryFn, StoryObj, addDecorator, addParameters, clearDecorators, configure, forceReRender, getCustomElements, getStorybook, isValidComponent, isValidMetaData, raw, setAddon, setCustomElements, setCustomElementsManifest, storiesOf };
package/dist/index.js ADDED
@@ -0,0 +1,5 @@
1
+ var A=Object.create;var p=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var b=Object.getOwnPropertyNames;var C=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var r=(e,o)=>p(e,"name",{value:o,configurable:!0});var R=(e,o)=>{for(var t in o)p(e,t,{get:o[t],enumerable:!0})},m=(e,o,t,s)=>{if(o&&typeof o=="object"||typeof o=="function")for(let a of b(o))!L.call(e,a)&&a!==t&&p(e,a,{get:()=>o[a],enumerable:!(s=E(o,a))||s.enumerable});return e};var l=(e,o,t)=>(t=e!=null?A(C(e)):{},m(o||!e||!e.__esModule?p(t,"default",{value:e,enumerable:!0}):t,e)),D=e=>m(p({},"__esModule",{value:!0}),e);var G={};R(G,{addDecorator:()=>Y,addParameters:()=>B,clearDecorators:()=>H,configure:()=>P,forceReRender:()=>k,getCustomElements:()=>j,getStorybook:()=>F,isValidComponent:()=>q,isValidMetaData:()=>I,raw:()=>V,setAddon:()=>U,setCustomElements:()=>W,setCustomElementsManifest:()=>$,storiesOf:()=>K});module.exports=D(G);var y=l(require("global"));var _=l(require("global")),{window:N}=_.default;N.STORYBOOK_ENV="web-components";var g=require("@storybook/core-client");var O=l(require("global")),w=l(require("ts-dedent")),T=require("lit-html"),M=require("lit-html/directive-helpers.js"),f=require("@storybook/preview-web"),{Node:v}=O.default;function S({storyFn:e,kind:o,name:t,showMain:s,showError:a,forceRemount:u},n){let d=e();if(s(),(0,M.isTemplateResult)(d)){(u||!n.querySelector('[id="root-inner"]'))&&(n.innerHTML='<div id="root-inner"></div>');let h=n.querySelector('[id="root-inner"]');(0,T.render)(d,h),(0,f.simulatePageLoad)(n)}else if(typeof d=="string")n.innerHTML=d,(0,f.simulatePageLoad)(n);else if(d instanceof v){if(n.firstChild===d&&!u)return;n.innerHTML="",n.appendChild(d),(0,f.simulateDOMContentLoaded)()}else a({title:`Expecting an HTML snippet or DOM node from the story: "${t}" of "${o}".`,description:w.default`
2
+ Did you forget to return the HTML snippet from the story?
3
+ Use "() => <your snippet or node>" or when defining the story.
4
+ `})}r(S,"renderToDOM");var x="web-components",i=(0,g.start)(S),K=r((e,o)=>i.clientApi.storiesOf(e,o).addParameters({framework:x}),"storiesOf"),P=r((...e)=>i.configure(x,...e),"configure"),Y=i.clientApi.addDecorator,B=i.clientApi.addParameters,H=i.clientApi.clearDecorators,U=i.clientApi.setAddon,k=i.forceReRender,F=i.clientApi.getStorybook,V=i.clientApi.raw;function q(e){if(!e)return!1;if(typeof e=="string")return!0;throw new Error('Provided component needs to be a string. e.g. component: "my-element"')}r(q,"isValidComponent");function I(e){if(!e)return!1;if(e.tags&&Array.isArray(e.tags)||e.modules&&Array.isArray(e.modules))return!0;throw new Error(`You need to setup valid meta data in your config.js via setCustomElements().
5
+ See the readme of addon-docs for web components for more details.`)}r(I,"isValidMetaData");function W(e){window.__STORYBOOK_CUSTOM_ELEMENTS__=e}r(W,"setCustomElements");function $(e){window.__STORYBOOK_CUSTOM_ELEMENTS_MANIFEST__=e}r($,"setCustomElementsManifest");function j(){return window.__STORYBOOK_CUSTOM_ELEMENTS__||window.__STORYBOOK_CUSTOM_ELEMENTS_MANIFEST__}r(j,"getCustomElements");var{window:J,EventSource:z}=y.default;module&&module.hot&&module.hot.decline&&(module.hot.decline(),new z("__webpack_hmr").addEventListener("message",r(function(t){try{let{action:s}=JSON.parse(t.data);s==="built"&&J.location.reload()}catch{}},"fullPageReload")));0&&(module.exports={addDecorator,addParameters,clearDecorators,configure,forceReRender,getCustomElements,getStorybook,isValidComponent,isValidMetaData,raw,setAddon,setCustomElements,setCustomElementsManifest,storiesOf});
package/dist/index.mjs ADDED
@@ -0,0 +1 @@
1
+ import{d as a,e as b,f as c,g as d,h as e,i as f,j as g,k as h,l as i,m as j,n as k,o as l,p as m,q as n}from"./chunk-LW7MJT4D.mjs";export{c as addDecorator,d as addParameters,e as clearDecorators,b as configure,g as forceReRender,n as getCustomElements,h as getStorybook,j as isValidComponent,k as isValidMetaData,i as raw,f as setAddon,l as setCustomElements,m as setCustomElementsManifest,a as storiesOf};
@@ -0,0 +1,17 @@
1
+ import { TemplateResult, SVGTemplateResult } from 'lit-html';
2
+
3
+ declare type StoryFnHtmlReturnType = string | Node | TemplateResult | SVGTemplateResult;
4
+ declare type WebComponentsFramework = {
5
+ component: string;
6
+ storyResult: StoryFnHtmlReturnType;
7
+ };
8
+ interface IStorybookStory {
9
+ name: string;
10
+ render: (context: any) => any;
11
+ }
12
+ interface IStorybookSection {
13
+ kind: string;
14
+ stories: IStorybookStory[];
15
+ }
16
+
17
+ export { IStorybookSection as I, WebComponentsFramework as W };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@storybook/web-components",
3
- "version": "7.0.0-alpha.4",
3
+ "version": "7.0.0-alpha.7",
4
4
  "description": "Storybook web-components renderer",
5
5
  "keywords": [
6
6
  "lit-html",
@@ -21,9 +21,26 @@
21
21
  "url": "https://opencollective.com/storybook"
22
22
  },
23
23
  "license": "MIT",
24
- "main": "dist/cjs/index.js",
25
- "module": "dist/esm/index.js",
26
- "types": "dist/types/index.d.ts",
24
+ "exports": {
25
+ ".": {
26
+ "require": "./dist/index.js",
27
+ "import": "./dist/index.mjs",
28
+ "types": "./dist/index.d.ts"
29
+ },
30
+ "./preview": {
31
+ "require": "./dist/config.js",
32
+ "import": "./dist/config.mjs",
33
+ "types": "./dist/config.d.ts"
34
+ },
35
+ "./package.json": {
36
+ "require": "./package.json",
37
+ "import": "./package.json",
38
+ "types": "./package.json"
39
+ }
40
+ },
41
+ "main": "dist/index.js",
42
+ "module": "dist/index.mjs",
43
+ "types": "dist/index.d.ts",
27
44
  "files": [
28
45
  "dist/**/*",
29
46
  "README.md",
@@ -31,17 +48,17 @@
31
48
  "*.d.ts"
32
49
  ],
33
50
  "scripts": {
34
- "prepare": "node ../../scripts/prepare.js"
51
+ "prepare": "esrun ../../scripts/prepare/bundle.ts"
35
52
  },
36
53
  "dependencies": {
37
- "@storybook/addons": "7.0.0-alpha.4",
38
- "@storybook/api": "7.0.0-alpha.4",
39
- "@storybook/client-logger": "7.0.0-alpha.4",
40
- "@storybook/core-client": "7.0.0-alpha.4",
54
+ "@storybook/addons": "7.0.0-alpha.7",
55
+ "@storybook/api": "7.0.0-alpha.7",
56
+ "@storybook/client-logger": "7.0.0-alpha.7",
57
+ "@storybook/core-client": "7.0.0-alpha.7",
41
58
  "@storybook/csf": "0.0.2--canary.4566f4d.1",
42
- "@storybook/docs-tools": "7.0.0-alpha.4",
43
- "@storybook/preview-web": "7.0.0-alpha.4",
44
- "@storybook/store": "7.0.0-alpha.4",
59
+ "@storybook/docs-tools": "7.0.0-alpha.7",
60
+ "@storybook/preview-web": "7.0.0-alpha.7",
61
+ "@storybook/store": "7.0.0-alpha.7",
45
62
  "core-js": "^3.8.2",
46
63
  "global": "^4.4.0",
47
64
  "react": "16.14.0",
@@ -49,6 +66,7 @@
49
66
  "ts-dedent": "^2.0.0"
50
67
  },
51
68
  "devDependencies": {
69
+ "@digitak/esrun": "^3.2.2",
52
70
  "lit-html": "2.0.2"
53
71
  },
54
72
  "peerDependencies": {
@@ -60,5 +78,9 @@
60
78
  "publishConfig": {
61
79
  "access": "public"
62
80
  },
63
- "gitHead": "006ed54452dd7c37a8cbe91a84f5312182f7ca00"
81
+ "bundlerEntrypoint": [
82
+ "./src/index.ts",
83
+ "./src/config.ts"
84
+ ],
85
+ "gitHead": "d334cabd251cd0ed8b845a87707dc84f007d4074"
64
86
  }
package/preview.js CHANGED
@@ -1 +1 @@
1
- export * from './dist/esm/config';
1
+ export * from './dist/config';
@@ -1,43 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- var _exportNames = {
7
- parameters: true,
8
- decorators: true,
9
- argTypesEnhancers: true
10
- };
11
- Object.defineProperty(exports, "argTypesEnhancers", {
12
- enumerable: true,
13
- get: function () {
14
- return _config.argTypesEnhancers;
15
- }
16
- });
17
- Object.defineProperty(exports, "decorators", {
18
- enumerable: true,
19
- get: function () {
20
- return _config.decorators;
21
- }
22
- });
23
- exports.parameters = void 0;
24
-
25
- var _config = require("./docs/config");
26
-
27
- var _config2 = require("./preview/config");
28
-
29
- Object.keys(_config2).forEach(function (key) {
30
- if (key === "default" || key === "__esModule") return;
31
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
32
- if (key in exports && exports[key] === _config2[key]) return;
33
- Object.defineProperty(exports, key, {
34
- enumerable: true,
35
- get: function () {
36
- return _config2[key];
37
- }
38
- });
39
- });
40
- const parameters = Object.assign({
41
- framework: 'web-components'
42
- }, _config.parameters);
43
- exports.parameters = parameters;
@@ -1,57 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.getCustomElements = getCustomElements;
7
- exports.isValidComponent = isValidComponent;
8
- exports.isValidMetaData = isValidMetaData;
9
- exports.setCustomElements = setCustomElements;
10
- exports.setCustomElementsManifest = setCustomElementsManifest;
11
-
12
- /* eslint-disable no-underscore-dangle */
13
-
14
- /* global window */
15
- function isValidComponent(tagName) {
16
- if (!tagName) {
17
- return false;
18
- }
19
-
20
- if (typeof tagName === 'string') {
21
- return true;
22
- }
23
-
24
- throw new Error('Provided component needs to be a string. e.g. component: "my-element"');
25
- }
26
-
27
- function isValidMetaData(customElements) {
28
- if (!customElements) {
29
- return false;
30
- }
31
-
32
- if (customElements.tags && Array.isArray(customElements.tags) || customElements.modules && Array.isArray(customElements.modules)) {
33
- return true;
34
- }
35
-
36
- throw new Error(`You need to setup valid meta data in your config.js via setCustomElements().
37
- See the readme of addon-docs for web components for more details.`);
38
- }
39
- /**
40
- * @param customElements any for now as spec is not super stable yet
41
- */
42
-
43
-
44
- function setCustomElements(customElements) {
45
- // @ts-ignore
46
- window.__STORYBOOK_CUSTOM_ELEMENTS__ = customElements;
47
- }
48
-
49
- function setCustomElementsManifest(customElements) {
50
- // @ts-ignore
51
- window.__STORYBOOK_CUSTOM_ELEMENTS_MANIFEST__ = customElements;
52
- }
53
-
54
- function getCustomElements() {
55
- // @ts-ignore
56
- return window.__STORYBOOK_CUSTOM_ELEMENTS__ || window.__STORYBOOK_CUSTOM_ELEMENTS_MANIFEST__;
57
- }
@@ -1,29 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.parameters = exports.decorators = exports.argTypesEnhancers = void 0;
7
-
8
- var _docsTools = require("@storybook/docs-tools");
9
-
10
- var _customElements = require("./custom-elements");
11
-
12
- var _sourceDecorator = require("./sourceDecorator");
13
-
14
- const decorators = [_sourceDecorator.sourceDecorator];
15
- exports.decorators = decorators;
16
- const parameters = {
17
- docs: {
18
- extractArgTypes: _customElements.extractArgTypes,
19
- extractComponentDescription: _customElements.extractComponentDescription,
20
- inlineStories: true,
21
- source: {
22
- type: _docsTools.SourceType.DYNAMIC,
23
- language: 'html'
24
- }
25
- }
26
- };
27
- exports.parameters = parameters;
28
- const argTypesEnhancers = [_docsTools.enhanceArgTypes];
29
- exports.argTypesEnhancers = argTypesEnhancers;
@@ -1,139 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.extractComponentDescription = exports.extractArgTypesFromElements = exports.extractArgTypes = void 0;
7
-
8
- var _clientLogger = require("@storybook/client-logger");
9
-
10
- var _ = require("..");
11
-
12
- function mapItem(item, category) {
13
- var _item$type, _item$type2;
14
-
15
- const type = category === 'properties' ? {
16
- name: ((_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.text) || item.type
17
- } : {
18
- name: 'void'
19
- };
20
- return {
21
- name: item.name,
22
- required: false,
23
- description: item.description,
24
- type,
25
- table: {
26
- category,
27
- type: {
28
- summary: ((_item$type2 = item.type) === null || _item$type2 === void 0 ? void 0 : _item$type2.text) || item.type
29
- },
30
- defaultValue: {
31
- summary: item.default !== undefined ? item.default : item.defaultValue
32
- }
33
- }
34
- };
35
- }
36
-
37
- function mapEvent(item) {
38
- let name = item.name.replace(/(-|_|:|\.|\s)+(.)?/g, (_match, _separator, chr) => {
39
- return chr ? chr.toUpperCase() : '';
40
- }).replace(/^([A-Z])/, match => match.toLowerCase());
41
- name = `on${name.charAt(0).toUpperCase() + name.substr(1)}`;
42
- return [{
43
- name,
44
- action: {
45
- name: item.name
46
- },
47
- table: {
48
- disable: true
49
- }
50
- }, mapItem(item, 'events')];
51
- }
52
-
53
- function mapData(data, category) {
54
- return data && data.filter(item => item && item.name).reduce((acc, item) => {
55
- if (item.kind === 'method') return acc;
56
-
57
- switch (category) {
58
- case 'events':
59
- mapEvent(item).forEach(argType => {
60
- acc[argType.name] = argType;
61
- });
62
- break;
63
-
64
- default:
65
- acc[item.name] = mapItem(item, category);
66
- break;
67
- }
68
-
69
- return acc;
70
- }, {});
71
- }
72
-
73
- const getMetaDataExperimental = (tagName, customElements) => {
74
- if (!(0, _.isValidComponent)(tagName) || !(0, _.isValidMetaData)(customElements)) {
75
- return null;
76
- }
77
-
78
- const metaData = customElements.tags.find(tag => tag.name.toUpperCase() === tagName.toUpperCase());
79
-
80
- if (!metaData) {
81
- _clientLogger.logger.warn(`Component not found in custom-elements.json: ${tagName}`);
82
- }
83
-
84
- return metaData;
85
- };
86
-
87
- const getMetaDataV1 = (tagName, customElements) => {
88
- var _customElements$modul;
89
-
90
- if (!(0, _.isValidComponent)(tagName) || !(0, _.isValidMetaData)(customElements)) {
91
- return null;
92
- }
93
-
94
- let metadata;
95
- customElements === null || customElements === void 0 ? void 0 : (_customElements$modul = customElements.modules) === null || _customElements$modul === void 0 ? void 0 : _customElements$modul.forEach(_module => {
96
- var _module$declarations;
97
-
98
- _module === null || _module === void 0 ? void 0 : (_module$declarations = _module.declarations) === null || _module$declarations === void 0 ? void 0 : _module$declarations.forEach(declaration => {
99
- if (declaration.tagName === tagName) {
100
- metadata = declaration;
101
- }
102
- });
103
- });
104
-
105
- if (!metadata) {
106
- _clientLogger.logger.warn(`Component not found in custom-elements.json: ${tagName}`);
107
- }
108
-
109
- return metadata;
110
- };
111
-
112
- const getMetaData = (tagName, manifest) => {
113
- if ((manifest === null || manifest === void 0 ? void 0 : manifest.version) === 'experimental') {
114
- return getMetaDataExperimental(tagName, manifest);
115
- }
116
-
117
- return getMetaDataV1(tagName, manifest);
118
- };
119
-
120
- const extractArgTypesFromElements = (tagName, customElements) => {
121
- const metaData = getMetaData(tagName, customElements);
122
- return metaData && Object.assign({}, mapData(metaData.attributes, 'attributes'), mapData(metaData.members, 'properties'), mapData(metaData.properties, 'properties'), mapData(metaData.events, 'events'), mapData(metaData.slots, 'slots'), mapData(metaData.cssProperties, 'css custom properties'), mapData(metaData.cssParts, 'css shadow parts'));
123
- };
124
-
125
- exports.extractArgTypesFromElements = extractArgTypesFromElements;
126
-
127
- const extractArgTypes = tagName => {
128
- const cem = (0, _.getCustomElements)();
129
- return extractArgTypesFromElements(tagName, cem);
130
- };
131
-
132
- exports.extractArgTypes = extractArgTypes;
133
-
134
- const extractComponentDescription = tagName => {
135
- const metaData = getMetaData(tagName, (0, _.getCustomElements)());
136
- return metaData && metaData.description;
137
- };
138
-
139
- exports.extractComponentDescription = extractComponentDescription;
@@ -1,59 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.sourceDecorator = sourceDecorator;
7
-
8
- var _litHtml = require("lit-html");
9
-
10
- var _addons = require("@storybook/addons");
11
-
12
- var _docsTools = require("@storybook/docs-tools");
13
-
14
- /* eslint-disable no-underscore-dangle */
15
-
16
- /* global window */
17
- // Taken from https://github.com/lit/lit/blob/main/packages/lit-html/src/test/test-utils/strip-markers.ts
18
- const LIT_EXPRESSION_COMMENTS = /<!--\?lit\$[0-9]+\$-->|<!--\??-->/g;
19
-
20
- function skipSourceRender(context) {
21
- var _context$parameters$d;
22
-
23
- const sourceParams = context === null || context === void 0 ? void 0 : (_context$parameters$d = context.parameters.docs) === null || _context$parameters$d === void 0 ? void 0 : _context$parameters$d.source;
24
- const isArgsStory = context === null || context === void 0 ? void 0 : context.parameters.__isArgsStory; // always render if the user forces it
25
-
26
- if ((sourceParams === null || sourceParams === void 0 ? void 0 : sourceParams.type) === _docsTools.SourceType.DYNAMIC) {
27
- return false;
28
- } // never render if the user is forcing the block to render code, or
29
- // if the user provides code, or if it's not an args story.
30
-
31
-
32
- return !isArgsStory || (sourceParams === null || sourceParams === void 0 ? void 0 : sourceParams.code) || (sourceParams === null || sourceParams === void 0 ? void 0 : sourceParams.type) === _docsTools.SourceType.CODE;
33
- }
34
-
35
- function applyTransformSource(source, context) {
36
- const {
37
- transformSource
38
- } = context.parameters.docs ?? {};
39
- if (typeof transformSource !== 'function') return source;
40
- return transformSource(source, context);
41
- }
42
-
43
- function sourceDecorator(storyFn, context) {
44
- var _context$parameters$d2, _context$parameters$d3;
45
-
46
- const story = context !== null && context !== void 0 && (_context$parameters$d2 = context.parameters.docs) !== null && _context$parameters$d2 !== void 0 && (_context$parameters$d3 = _context$parameters$d2.source) !== null && _context$parameters$d3 !== void 0 && _context$parameters$d3.excludeDecorators ? context.originalStoryFn(context.args, context) : storyFn();
47
- let source;
48
- (0, _addons.useEffect)(() => {
49
- if (source) _addons.addons.getChannel().emit(_docsTools.SNIPPET_RENDERED, context.id, source);
50
- });
51
-
52
- if (!skipSourceRender(context)) {
53
- const container = window.document.createElement('div');
54
- (0, _litHtml.render)(story, container);
55
- source = applyTransformSource(container.innerHTML.replace(LIT_EXPRESSION_COMMENTS, ''), context);
56
- }
57
-
58
- return story;
59
- }