@stencil/storybook-plugin 0.0.16 → 0.1.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/README.md CHANGED
@@ -75,6 +75,36 @@ export const Primary: Story = {
75
75
  };
76
76
  ```
77
77
 
78
+ If you are using slots in your component, pass them as parameters to the story object like this:
79
+
80
+ ```tsx
81
+ import type { Meta, StoryObj } from '@stencil/storybook-plugin';
82
+ import { h } from '@stencil/core';
83
+
84
+ import { MySlotted } from './my-slotted';
85
+
86
+ const meta = {
87
+ title: 'MySlotted',
88
+ component: MySlotted,
89
+ parameters: {
90
+ layout: 'centered',
91
+ },
92
+ } satisfies Meta<MySlotted>;
93
+
94
+ export default meta;
95
+ type Story = StoryObj<MySlotted>;
96
+
97
+ export const Primary: Story = {
98
+ args: {},
99
+ parameters: {
100
+ slots: {
101
+ default: 'Hello World',
102
+ another: <div>another</div>
103
+ },
104
+ }
105
+ };
106
+ ```
107
+
78
108
  ## Limitations
79
109
 
80
110
  This is early development and we are still seeing some limitations we want to see fixed:
package/dist/index.cjs CHANGED
@@ -1,5 +1,5 @@
1
1
  const require_chunk = require('./chunk-CsX-DzYB.cjs');
2
- const require_preview = require('./preview-Nz-UTIbe.cjs');
2
+ const require_preview = require('./preview-CQxvr_qp.cjs');
3
3
  const __storybook_preview_api = require_chunk.__toESM(require("@storybook/preview-api"));
4
4
 
5
5
  //#region src/portable-stories.tsx
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { preview_exports } from "./preview-B75wzZrU.js";
1
+ import { preview_exports } from "./preview-8QXanM3z.js";
2
2
  import "./rollup-parseAst-t-4tfMPG.d.ts";
3
3
  import { setDefaultProjectAnnotations, setProjectAnnotations as setProjectAnnotations$1 } from "@storybook/preview-api";
4
4
 
@@ -13,12 +13,19 @@ var __export = (target, all) => {
13
13
  //#endregion
14
14
  //#region src/render.ts
15
15
  const render$1 = (args, context) => {
16
- const { component } = context;
16
+ const { component, parameters: parameters$1 } = context;
17
17
  if (Array.isArray(component)) throw new Error("If your story does not contain a render function, you must provide a component property!");
18
18
  const cmpName = customElements.getName(component);
19
19
  if (!cmpName) throw new Error("Component is not registered!");
20
+ const children = Object.entries(parameters$1.slots || []).map(([key, value]) => {
21
+ const slot = key === "default" ? void 0 : key;
22
+ return typeof value === "string" ? h(null, { slot }, value) : {
23
+ ...value,
24
+ $attrs$: { slot }
25
+ };
26
+ });
20
27
  const Component = `${cmpName}`;
21
- return h(Component, { ...args });
28
+ return h(Component, { ...args }, children);
22
29
  };
23
30
  function renderToCanvas({ storyFn, showMain, storyContext }, canvasElement) {
24
31
  const vdom = storyFn();
@@ -46,4 +53,4 @@ const parameters = { renderer: "stencil" };
46
53
 
47
54
  //#endregion
48
55
  export { parameters, preview_exports, render$1 as render, renderToCanvas };
49
- //# sourceMappingURL=preview-B75wzZrU.js.map
56
+ //# sourceMappingURL=preview-8QXanM3z.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-8QXanM3z.js","names":["render: ArgsStoryFn<StencilRenderer<unknown>>","children: VNode[]","parameters","canvasElement: StencilRenderer<unknown>['canvasElement']","parameters: { renderer: 'stencil' }"],"sources":["../src/render.ts","../src/preview.ts"],"sourcesContent":["import { ArgsStoryFn, RenderContext } from '@storybook/types'\nimport { simulatePageLoad } from '@storybook/preview-api'\nimport { render as renderStencil, h, VNode } from '@stencil/core'\n\nimport type { StencilRenderer } from './types'\n\nexport const render: ArgsStoryFn<StencilRenderer<unknown>> = (args, context) => {\n const { component, parameters } = context;\n\n if (Array.isArray(component)) {\n throw new Error('If your story does not contain a render function, you must provide a component property!')\n }\n\n const cmpName = customElements.getName(component)\n if (!cmpName) {\n throw new Error('Component is not registered!')\n }\n\n const children: VNode[] = Object.entries<VNode>(parameters.slots || []).map(\n ([key, value]) => {\n // if the parameter key is 'default' don't give it a slot name so it renders just as a child\n const slot = key === 'default' ? undefined : key\n // if the value it s a string, create a vnode with the string as the children\n return typeof value === \"string\"\n ? h(null, { slot }, value)\n : {\n ...value,\n $attrs$: {\n slot,\n },\n };\n },\n );\n\n const Component = `${cmpName}`;\n return h(Component, { ...args }, children)\n};\n\nexport function renderToCanvas(\n { storyFn, showMain, storyContext }: RenderContext<StencilRenderer<unknown>>,\n canvasElement: StencilRenderer<unknown>['canvasElement']\n) {\n const vdom = storyFn()\n showMain()\n\n /**\n * If the component is not automatically registered after import, register it here\n */\n if (storyContext.component && storyContext.component.is && !customElements.get(storyContext.component.is)) {\n customElements.define(storyContext.component.is, storyContext.component);\n }\n\n if (canvasElement.firstChild) {\n canvasElement.removeChild(canvasElement.firstChild)\n }\n\n const element = document.createElement('div')\n canvasElement.appendChild(element)\n renderStencil(vdom, element);\n simulatePageLoad(element)\n}\n","export const parameters: { renderer: 'stencil' } = { renderer: 'stencil' };\nexport { render, renderToCanvas } from './render.js';\n"],"mappings":";;;;;;;;;;;;;;AAMA,MAAaA,WAAgD,CAAC,MAAM,YAAY;CAC5E,MAAM,EAAE,WAAW,0BAAY,GAAG;AAElC,KAAI,MAAM,QAAQ,UAAU,CACxB,OAAM,IAAI,MAAM;CAGpB,MAAM,UAAU,eAAe,QAAQ,UAAU;AACjD,MAAK,QACD,OAAM,IAAI,MAAM;CAGpB,MAAMC,WAAoB,OAAO,QAAeC,aAAW,SAAS,CAAE,EAAC,CAAC,IACtE,CAAC,CAAC,KAAK,MAAM,KAAK;EAEd,MAAM,OAAO,QAAQ,qBAAwB;AAE7C,gBAAc,UAAU,WACpB,EAAE,MAAM,EAAE,KAAM,GAAE,MAAM,GACxB;GACE,GAAG;GACH,SAAS,EACP,KACD;EACF;CACR,EACF;CAED,MAAM,aAAa,EAAE,QAAQ;AAC7B,QAAO,EAAE,WAAW,EAAE,GAAG,KAAM,GAAE,SAAS;AAC7C;AAED,SAAgB,eACZ,EAAE,SAAS,UAAU,cAAuD,EAC5EC,eACF;CACE,MAAM,OAAO,SAAS;AACtB,WAAU;;;;AAKV,KAAI,aAAa,aAAa,aAAa,UAAU,OAAO,eAAe,IAAI,aAAa,UAAU,GAAG,CACrG,gBAAe,OAAO,aAAa,UAAU,IAAI,aAAa,UAAU;AAG5E,KAAI,cAAc,WACd,eAAc,YAAY,cAAc,WAAW;CAGvD,MAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,eAAc,YAAY,QAAQ;AAClC,QAAc,MAAM,QAAQ;AAC5B,kBAAiB,QAAQ;AAC5B;;;;;;;;;;AC5DD,MAAaC,aAAsC,EAAE,UAAU,UAAW"}
@@ -4,12 +4,19 @@ const __stencil_core = require_chunk.__toESM(require("@stencil/core"));
4
4
 
5
5
  //#region src/render.ts
6
6
  const render = (args, context) => {
7
- const { component } = context;
7
+ const { component, parameters: parameters$1 } = context;
8
8
  if (Array.isArray(component)) throw new Error("If your story does not contain a render function, you must provide a component property!");
9
9
  const cmpName = customElements.getName(component);
10
10
  if (!cmpName) throw new Error("Component is not registered!");
11
+ const children = Object.entries(parameters$1.slots || []).map(([key, value]) => {
12
+ const slot = key === "default" ? void 0 : key;
13
+ return typeof value === "string" ? (0, __stencil_core.h)(null, { slot }, value) : {
14
+ ...value,
15
+ $attrs$: { slot }
16
+ };
17
+ });
11
18
  const Component = `${cmpName}`;
12
- return (0, __stencil_core.h)(Component, { ...args });
19
+ return (0, __stencil_core.h)(Component, { ...args }, children);
13
20
  };
14
21
  function renderToCanvas({ storyFn, showMain, storyContext }, canvasElement) {
15
22
  const vdom = storyFn();
@@ -60,4 +67,4 @@ Object.defineProperty(exports, 'renderToCanvas', {
60
67
  return renderToCanvas;
61
68
  }
62
69
  });
63
- //# sourceMappingURL=preview-Nz-UTIbe.cjs.map
70
+ //# sourceMappingURL=preview-CQxvr_qp.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview-CQxvr_qp.cjs","names":["render: ArgsStoryFn<StencilRenderer<unknown>>","children: VNode[]","parameters","canvasElement: StencilRenderer<unknown>['canvasElement']","parameters: { renderer: 'stencil' }"],"sources":["../src/render.ts","../src/preview.ts"],"sourcesContent":["import { ArgsStoryFn, RenderContext } from '@storybook/types'\nimport { simulatePageLoad } from '@storybook/preview-api'\nimport { render as renderStencil, h, VNode } from '@stencil/core'\n\nimport type { StencilRenderer } from './types'\n\nexport const render: ArgsStoryFn<StencilRenderer<unknown>> = (args, context) => {\n const { component, parameters } = context;\n\n if (Array.isArray(component)) {\n throw new Error('If your story does not contain a render function, you must provide a component property!')\n }\n\n const cmpName = customElements.getName(component)\n if (!cmpName) {\n throw new Error('Component is not registered!')\n }\n\n const children: VNode[] = Object.entries<VNode>(parameters.slots || []).map(\n ([key, value]) => {\n // if the parameter key is 'default' don't give it a slot name so it renders just as a child\n const slot = key === 'default' ? undefined : key\n // if the value it s a string, create a vnode with the string as the children\n return typeof value === \"string\"\n ? h(null, { slot }, value)\n : {\n ...value,\n $attrs$: {\n slot,\n },\n };\n },\n );\n\n const Component = `${cmpName}`;\n return h(Component, { ...args }, children)\n};\n\nexport function renderToCanvas(\n { storyFn, showMain, storyContext }: RenderContext<StencilRenderer<unknown>>,\n canvasElement: StencilRenderer<unknown>['canvasElement']\n) {\n const vdom = storyFn()\n showMain()\n\n /**\n * If the component is not automatically registered after import, register it here\n */\n if (storyContext.component && storyContext.component.is && !customElements.get(storyContext.component.is)) {\n customElements.define(storyContext.component.is, storyContext.component);\n }\n\n if (canvasElement.firstChild) {\n canvasElement.removeChild(canvasElement.firstChild)\n }\n\n const element = document.createElement('div')\n canvasElement.appendChild(element)\n renderStencil(vdom, element);\n simulatePageLoad(element)\n}\n","export const parameters: { renderer: 'stencil' } = { renderer: 'stencil' };\nexport { render, renderToCanvas } from './render.js';\n"],"mappings":";;;;;AAMA,MAAaA,SAAgD,CAAC,MAAM,YAAY;CAC5E,MAAM,EAAE,WAAW,0BAAY,GAAG;AAElC,KAAI,MAAM,QAAQ,UAAU,CACxB,OAAM,IAAI,MAAM;CAGpB,MAAM,UAAU,eAAe,QAAQ,UAAU;AACjD,MAAK,QACD,OAAM,IAAI,MAAM;CAGpB,MAAMC,WAAoB,OAAO,QAAeC,aAAW,SAAS,CAAE,EAAC,CAAC,IACtE,CAAC,CAAC,KAAK,MAAM,KAAK;EAEd,MAAM,OAAO,QAAQ,qBAAwB;AAE7C,gBAAc,UAAU,WACpB,sBAAE,MAAM,EAAE,KAAM,GAAE,MAAM,GACxB;GACE,GAAG;GACH,SAAS,EACP,KACD;EACF;CACR,EACF;CAED,MAAM,aAAa,EAAE,QAAQ;AAC7B,QAAO,sBAAE,WAAW,EAAE,GAAG,KAAM,GAAE,SAAS;AAC7C;AAED,SAAgB,eACZ,EAAE,SAAS,UAAU,cAAuD,EAC5EC,eACF;CACE,MAAM,OAAO,SAAS;AACtB,WAAU;;;;AAKV,KAAI,aAAa,aAAa,aAAa,UAAU,OAAO,eAAe,IAAI,aAAa,UAAU,GAAG,CACrG,gBAAe,OAAO,aAAa,UAAU,IAAI,aAAa,UAAU;AAG5E,KAAI,cAAc,WACd,eAAc,YAAY,cAAc,WAAW;CAGvD,MAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,eAAc,YAAY,QAAQ;AAClC,4BAAc,MAAM,QAAQ;AAC5B,+CAAiB,QAAQ;AAC5B;;;;;;;;;;AC5DD,MAAaC,aAAsC,EAAE,UAAU,UAAW"}
package/dist/preview.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_preview = require('./preview-Nz-UTIbe.cjs');
1
+ const require_preview = require('./preview-CQxvr_qp.cjs');
2
2
 
3
3
  exports.parameters = require_preview.parameters;
4
4
  exports.render = require_preview.render;
package/dist/preview.js CHANGED
@@ -1,3 +1,3 @@
1
- import { parameters, render, renderToCanvas } from "./preview-B75wzZrU.js";
1
+ import { parameters, render, renderToCanvas } from "./preview-8QXanM3z.js";
2
2
 
3
3
  export { parameters, render, renderToCanvas };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/storybook-plugin",
3
- "version": "0.0.16",
3
+ "version": "0.1.0",
4
4
  "description": "Storybook plugin for Stencil",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/stenciljs/storybook",
@@ -1 +0,0 @@
1
- {"version":3,"file":"preview-B75wzZrU.js","names":["render: ArgsStoryFn<StencilRenderer<unknown>>","canvasElement: StencilRenderer<unknown>['canvasElement']","parameters: { renderer: 'stencil' }"],"sources":["../src/render.ts","../src/preview.ts"],"sourcesContent":["import { ArgsStoryFn, RenderContext } from '@storybook/types'\nimport { simulatePageLoad } from '@storybook/preview-api'\nimport { render as renderStencil, h } from '@stencil/core'\n\nimport type { StencilRenderer } from './types'\n\nexport const render: ArgsStoryFn<StencilRenderer<unknown>> = (args, context) => {\n const { component } = context;\n\n if (Array.isArray(component)) {\n throw new Error('If your story does not contain a render function, you must provide a component property!')\n }\n\n const cmpName = customElements.getName(component)\n if (!cmpName) {\n throw new Error('Component is not registered!')\n }\n\n const Component = `${cmpName}`;\n return h(Component, { ...args })\n};\n\nexport function renderToCanvas(\n { storyFn, showMain, storyContext }: RenderContext<StencilRenderer<unknown>>,\n canvasElement: StencilRenderer<unknown>['canvasElement']\n) {\n const vdom = storyFn()\n showMain()\n\n /**\n * If the component is not automatically registered after import, register it here\n */\n if (storyContext.component && storyContext.component.is && !customElements.get(storyContext.component.is)) {\n customElements.define(storyContext.component.is, storyContext.component);\n }\n\n if (canvasElement.firstChild) {\n canvasElement.removeChild(canvasElement.firstChild)\n }\n\n const element = document.createElement('div')\n canvasElement.appendChild(element)\n renderStencil(vdom, element);\n simulatePageLoad(element)\n}\n","export const parameters: { renderer: 'stencil' } = { renderer: 'stencil' };\nexport { render, renderToCanvas } from './render.js';\n"],"mappings":";;;;;;;;;;;;;;AAMA,MAAaA,WAAgD,CAAC,MAAM,YAAY;CAC5E,MAAM,EAAE,WAAW,GAAG;AAEtB,KAAI,MAAM,QAAQ,UAAU,CACxB,OAAM,IAAI,MAAM;CAGpB,MAAM,UAAU,eAAe,QAAQ,UAAU;AACjD,MAAK,QACD,OAAM,IAAI,MAAM;CAGpB,MAAM,aAAa,EAAE,QAAQ;AAC7B,QAAO,EAAE,WAAW,EAAE,GAAG,KAAM,EAAC;AACnC;AAED,SAAgB,eACZ,EAAE,SAAS,UAAU,cAAuD,EAC5EC,eACF;CACE,MAAM,OAAO,SAAS;AACtB,WAAU;;;;AAKV,KAAI,aAAa,aAAa,aAAa,UAAU,OAAO,eAAe,IAAI,aAAa,UAAU,GAAG,CACrG,gBAAe,OAAO,aAAa,UAAU,IAAI,aAAa,UAAU;AAG5E,KAAI,cAAc,WACd,eAAc,YAAY,cAAc,WAAW;CAGvD,MAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,eAAc,YAAY,QAAQ;AAClC,QAAc,MAAM,QAAQ;AAC5B,kBAAiB,QAAQ;AAC5B;;;;;;;;;;AC5CD,MAAaC,aAAsC,EAAE,UAAU,UAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"preview-Nz-UTIbe.cjs","names":["render: ArgsStoryFn<StencilRenderer<unknown>>","canvasElement: StencilRenderer<unknown>['canvasElement']","parameters: { renderer: 'stencil' }"],"sources":["../src/render.ts","../src/preview.ts"],"sourcesContent":["import { ArgsStoryFn, RenderContext } from '@storybook/types'\nimport { simulatePageLoad } from '@storybook/preview-api'\nimport { render as renderStencil, h } from '@stencil/core'\n\nimport type { StencilRenderer } from './types'\n\nexport const render: ArgsStoryFn<StencilRenderer<unknown>> = (args, context) => {\n const { component } = context;\n\n if (Array.isArray(component)) {\n throw new Error('If your story does not contain a render function, you must provide a component property!')\n }\n\n const cmpName = customElements.getName(component)\n if (!cmpName) {\n throw new Error('Component is not registered!')\n }\n\n const Component = `${cmpName}`;\n return h(Component, { ...args })\n};\n\nexport function renderToCanvas(\n { storyFn, showMain, storyContext }: RenderContext<StencilRenderer<unknown>>,\n canvasElement: StencilRenderer<unknown>['canvasElement']\n) {\n const vdom = storyFn()\n showMain()\n\n /**\n * If the component is not automatically registered after import, register it here\n */\n if (storyContext.component && storyContext.component.is && !customElements.get(storyContext.component.is)) {\n customElements.define(storyContext.component.is, storyContext.component);\n }\n\n if (canvasElement.firstChild) {\n canvasElement.removeChild(canvasElement.firstChild)\n }\n\n const element = document.createElement('div')\n canvasElement.appendChild(element)\n renderStencil(vdom, element);\n simulatePageLoad(element)\n}\n","export const parameters: { renderer: 'stencil' } = { renderer: 'stencil' };\nexport { render, renderToCanvas } from './render.js';\n"],"mappings":";;;;;AAMA,MAAaA,SAAgD,CAAC,MAAM,YAAY;CAC5E,MAAM,EAAE,WAAW,GAAG;AAEtB,KAAI,MAAM,QAAQ,UAAU,CACxB,OAAM,IAAI,MAAM;CAGpB,MAAM,UAAU,eAAe,QAAQ,UAAU;AACjD,MAAK,QACD,OAAM,IAAI,MAAM;CAGpB,MAAM,aAAa,EAAE,QAAQ;AAC7B,QAAO,sBAAE,WAAW,EAAE,GAAG,KAAM,EAAC;AACnC;AAED,SAAgB,eACZ,EAAE,SAAS,UAAU,cAAuD,EAC5EC,eACF;CACE,MAAM,OAAO,SAAS;AACtB,WAAU;;;;AAKV,KAAI,aAAa,aAAa,aAAa,UAAU,OAAO,eAAe,IAAI,aAAa,UAAU,GAAG,CACrG,gBAAe,OAAO,aAAa,UAAU,IAAI,aAAa,UAAU;AAG5E,KAAI,cAAc,WACd,eAAc,YAAY,cAAc,WAAW;CAGvD,MAAM,UAAU,SAAS,cAAc,MAAM;AAC7C,eAAc,YAAY,QAAQ;AAClC,4BAAc,MAAM,QAAQ;AAC5B,+CAAiB,QAAQ;AAC5B;;;;;;;;;;AC5CD,MAAaC,aAAsC,EAAE,UAAU,UAAW"}