@stencil/storybook-plugin 0.5.0 → 0.5.1

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.
@@ -113,10 +113,12 @@ const extractArgTypesFromElements = (tagName, customElements) => {
113
113
  };
114
114
  const extractArgTypes = (component) => {
115
115
  const cem = require_src.getCustomElements();
116
- return extractArgTypesFromElements(component.is, cem);
116
+ const tagName = typeof component === "string" ? component : component?.is;
117
+ return extractArgTypesFromElements(tagName, cem);
117
118
  };
118
119
  const extractComponentDescription = (component) => {
119
- const metaData = getMetaData(component.is, require_src.getCustomElements());
120
+ const tagName = typeof component === "string" ? component : component?.is;
121
+ const metaData = getMetaData(tagName, require_src.getCustomElements());
120
122
  return metaData && metaData.docs;
121
123
  };
122
124
 
@@ -1 +1 @@
1
- {"version":3,"file":"entry-preview-argtypes.cjs","names":["prop: JsonDocsProp","scalarTypes: SBScalarType['name'][]","data: T[]","category: string","methods: JsonDocsMethod[]","events: JsonDocsEvent[]","chr: string","props: JsonDocsProp[]","tagName: string","manifest: JsonDocs","customElements: JsonDocs","component: any","argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[]","enhanceArgTypes"],"sources":["../src/docs/infer-type.ts","../src/docs/custom-elements.ts","../src/entry-preview-argtypes.ts"],"sourcesContent":["import type { JsonDocsProp } from '@stencil/core/internal';\nimport type { SBType, SBScalarType, InputType } from 'storybook/internal/types';\n\nexport const inferSBType = (prop: JsonDocsProp): SBType => {\n const scalarTypes: SBScalarType['name'][] = ['string', 'number', 'boolean', 'symbol'];\n if (prop.type.toLowerCase() in scalarTypes) {\n return { name: prop.type.toLowerCase(), raw: prop.type, required: prop.required } as SBScalarType;\n }\n\n if (/^\\(.*\\)\\s*=>\\s*.*$/.test(prop.type)) {\n return { name: 'function', raw: prop.type, required: prop.required };\n }\n\n return { name: 'other', value: prop.type, raw: prop.type, required: prop.required };\n};\n\nexport const inferControlType = (prop: JsonDocsProp): InputType['control'] => {\n switch (prop.type) {\n case 'string':\n return { type: 'text' };\n case 'number':\n return { type: 'number' };\n case 'boolean':\n return { type: 'boolean' };\n case 'Date':\n return { type: 'date' };\n default:\n return { type: 'object' };\n }\n};\n","import { logger } from 'storybook/internal/client-logger';\nimport type { ArgTypes } from 'storybook/internal/types';\nimport type {\n JsonDocs,\n JsonDocsProp,\n JsonDocsEvent,\n JsonDocsSlot,\n JsonDocsMethod,\n JsonDocsStyle,\n JsonDocsPart,\n} from '@stencil/core/internal';\n\nimport { inferSBType, inferControlType } from './infer-type';\nimport { getCustomElements, isValidComponent, isValidMetaData } from '..';\n\nconst mapData = <T extends JsonDocsPart>(data: T[], category: string): ArgTypes =>\n data.reduce<ArgTypes>((acc, item) => {\n acc[item.name] = {\n name: item.name,\n description: item.docs,\n control: false,\n table: {\n category,\n },\n };\n return acc;\n }, {});\n\nconst mapMethods = (methods: JsonDocsMethod[]): ArgTypes =>\n methods.reduce<ArgTypes>((acc, method) => {\n acc[method.name] = {\n name: method.name,\n description: method.docs,\n control: null,\n type: { name: 'function' },\n table: {\n category: 'methods',\n type: { summary: method.signature },\n },\n };\n return acc;\n }, {});\n\nconst mapEvent = (events: JsonDocsEvent[]): ArgTypes =>\n events.reduce<ArgTypes>((acc, event) => {\n let name = event.event\n .replace(/(-|_|:|\\.|\\s)+(.)?/g, (_match, _separator, chr: string) => {\n return chr ? chr.toUpperCase() : '';\n })\n .replace(/^([A-Z])/, (match) => match.toLowerCase());\n\n name = `on${name.charAt(0).toUpperCase() + name.slice(1)}`;\n\n acc[name] = {\n name,\n description: event.docs,\n control: null,\n table: {\n category: 'events',\n type: { summary: event.detail },\n },\n type: { name: 'function' },\n };\n\n return acc;\n }, {});\n\nconst mapProps = (props: JsonDocsProp[]): ArgTypes =>\n props.reduce<ArgTypes>((acc, prop) => {\n acc[prop.name] = {\n name: prop.attr || prop.name,\n description: prop.docs,\n control: inferControlType(prop),\n table: {\n category: 'properties',\n type: { summary: prop.complexType?.original },\n defaultValue: { summary: prop.default },\n },\n type: inferSBType(prop),\n };\n\n return acc;\n }, {});\n\nconst getMetaData = (tagName: string, manifest: JsonDocs) => {\n if (!isValidComponent(tagName) || !isValidMetaData(manifest)) {\n return null;\n }\n const metaData = manifest.components.find((component) => component.tag.toUpperCase() === tagName.toUpperCase());\n if (!metaData) {\n logger.warn(`Component not found in custom-elements.json: ${tagName}`);\n }\n return metaData;\n};\n\nexport const extractArgTypesFromElements = (tagName: string, customElements: JsonDocs) => {\n const metaData = getMetaData(tagName, customElements);\n return (\n metaData && {\n ...mapProps(metaData.props),\n ...mapEvent(metaData.events),\n ...mapMethods(metaData.methods),\n ...mapData<JsonDocsSlot>(metaData.slots, 'slots'),\n ...mapData<JsonDocsPart>(metaData.parts, 'parts'),\n ...mapData<JsonDocsStyle>(metaData.styles, 'styles'),\n }\n );\n};\n\nexport const extractArgTypes = (component: any) => {\n const cem = getCustomElements();\n return extractArgTypesFromElements(component.is, cem);\n};\n\nexport const extractComponentDescription = (component: any) => {\n const metaData = getMetaData(component.is, getCustomElements());\n return metaData && metaData.docs;\n};\n","import { enhanceArgTypes } from 'storybook/internal/docs-tools';\nimport type { ArgTypesEnhancer } from 'storybook/internal/types';\n\nimport { extractArgTypes, extractComponentDescription } from './docs/custom-elements';\nimport type { StencilRenderer } from './types';\n\nexport const parameters = {\n docs: {\n extractArgTypes,\n extractComponentDescription,\n },\n};\n\nexport const argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[] = [enhanceArgTypes];"],"mappings":"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"}
1
+ {"version":3,"file":"entry-preview-argtypes.cjs","names":["prop: JsonDocsProp","scalarTypes: SBScalarType['name'][]","data: T[]","category: string","methods: JsonDocsMethod[]","events: JsonDocsEvent[]","chr: string","props: JsonDocsProp[]","tagName: string","manifest: JsonDocs","customElements: JsonDocs","component: any","argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[]","enhanceArgTypes"],"sources":["../src/docs/infer-type.ts","../src/docs/custom-elements.ts","../src/entry-preview-argtypes.ts"],"sourcesContent":["import type { JsonDocsProp } from '@stencil/core/internal';\nimport type { SBType, SBScalarType, InputType } from 'storybook/internal/types';\n\nexport const inferSBType = (prop: JsonDocsProp): SBType => {\n const scalarTypes: SBScalarType['name'][] = ['string', 'number', 'boolean', 'symbol'];\n if (prop.type.toLowerCase() in scalarTypes) {\n return { name: prop.type.toLowerCase(), raw: prop.type, required: prop.required } as SBScalarType;\n }\n\n if (/^\\(.*\\)\\s*=>\\s*.*$/.test(prop.type)) {\n return { name: 'function', raw: prop.type, required: prop.required };\n }\n\n return { name: 'other', value: prop.type, raw: prop.type, required: prop.required };\n};\n\nexport const inferControlType = (prop: JsonDocsProp): InputType['control'] => {\n switch (prop.type) {\n case 'string':\n return { type: 'text' };\n case 'number':\n return { type: 'number' };\n case 'boolean':\n return { type: 'boolean' };\n case 'Date':\n return { type: 'date' };\n default:\n return { type: 'object' };\n }\n};\n","import type {\n JsonDocs,\n JsonDocsEvent,\n JsonDocsMethod,\n JsonDocsPart,\n JsonDocsProp,\n JsonDocsSlot,\n JsonDocsStyle,\n} from '@stencil/core/internal';\nimport { logger } from 'storybook/internal/client-logger';\nimport type { ArgTypes } from 'storybook/internal/types';\n\nimport { getCustomElements, isValidComponent, isValidMetaData } from '..';\nimport { inferControlType, inferSBType } from './infer-type';\n\nconst mapData = <T extends JsonDocsPart>(data: T[], category: string): ArgTypes =>\n data.reduce<ArgTypes>((acc, item) => {\n acc[item.name] = {\n name: item.name,\n description: item.docs,\n control: false,\n table: {\n category,\n },\n };\n return acc;\n }, {});\n\nconst mapMethods = (methods: JsonDocsMethod[]): ArgTypes =>\n methods.reduce<ArgTypes>((acc, method) => {\n acc[method.name] = {\n name: method.name,\n description: method.docs,\n control: null,\n type: { name: 'function' },\n table: {\n category: 'methods',\n type: { summary: method.signature },\n },\n };\n return acc;\n }, {});\n\nconst mapEvent = (events: JsonDocsEvent[]): ArgTypes =>\n events.reduce<ArgTypes>((acc, event) => {\n let name = event.event\n .replace(/(-|_|:|\\.|\\s)+(.)?/g, (_match, _separator, chr: string) => {\n return chr ? chr.toUpperCase() : '';\n })\n .replace(/^([A-Z])/, (match) => match.toLowerCase());\n\n name = `on${name.charAt(0).toUpperCase() + name.slice(1)}`;\n\n acc[name] = {\n name,\n description: event.docs,\n control: null,\n table: {\n category: 'events',\n type: { summary: event.detail },\n },\n type: { name: 'function' },\n };\n\n return acc;\n }, {});\n\nconst mapProps = (props: JsonDocsProp[]): ArgTypes =>\n props.reduce<ArgTypes>((acc, prop) => {\n acc[prop.name] = {\n name: prop.attr || prop.name,\n description: prop.docs,\n control: inferControlType(prop),\n table: {\n category: 'properties',\n type: { summary: prop.complexType?.original },\n defaultValue: { summary: prop.default },\n },\n type: inferSBType(prop),\n };\n\n return acc;\n }, {});\n\nconst getMetaData = (tagName: string, manifest: JsonDocs) => {\n if (!isValidComponent(tagName) || !isValidMetaData(manifest)) {\n return null;\n }\n const metaData = manifest.components.find((component) => component.tag.toUpperCase() === tagName.toUpperCase());\n if (!metaData) {\n logger.warn(`Component not found in custom-elements.json: ${tagName}`);\n }\n return metaData;\n};\n\nexport const extractArgTypesFromElements = (tagName: string, customElements: JsonDocs) => {\n const metaData = getMetaData(tagName, customElements);\n return (\n metaData && {\n ...mapProps(metaData.props),\n ...mapEvent(metaData.events),\n ...mapMethods(metaData.methods),\n ...mapData<JsonDocsSlot>(metaData.slots, 'slots'),\n ...mapData<JsonDocsPart>(metaData.parts, 'parts'),\n ...mapData<JsonDocsStyle>(metaData.styles, 'styles'),\n }\n );\n};\n\nexport const extractArgTypes = (component: any) => {\n const cem = getCustomElements();\n // Handle both string references (lazy loading) and class references (auto-define)\n const tagName = typeof component === 'string' ? component : component?.is;\n return extractArgTypesFromElements(tagName, cem);\n};\n\nexport const extractComponentDescription = (component: any) => {\n // Handle both string references (lazy loading) and class references (auto-define)\n const tagName = typeof component === 'string' ? component : component?.is;\n const metaData = getMetaData(tagName, getCustomElements());\n return metaData && metaData.docs;\n};\n","import { enhanceArgTypes } from 'storybook/internal/docs-tools';\nimport type { ArgTypesEnhancer } from 'storybook/internal/types';\n\nimport { extractArgTypes, extractComponentDescription } from './docs/custom-elements';\nimport type { StencilRenderer } from './types';\n\nexport const parameters = {\n docs: {\n extractArgTypes,\n extractComponentDescription,\n },\n};\n\nexport const argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[] = [enhanceArgTypes];"],"mappings":"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"}
@@ -113,10 +113,12 @@ const extractArgTypesFromElements = (tagName, customElements) => {
113
113
  };
114
114
  const extractArgTypes = (component) => {
115
115
  const cem = getCustomElements();
116
- return extractArgTypesFromElements(component.is, cem);
116
+ const tagName = typeof component === "string" ? component : component?.is;
117
+ return extractArgTypesFromElements(tagName, cem);
117
118
  };
118
119
  const extractComponentDescription = (component) => {
119
- const metaData = getMetaData(component.is, getCustomElements());
120
+ const tagName = typeof component === "string" ? component : component?.is;
121
+ const metaData = getMetaData(tagName, getCustomElements());
120
122
  return metaData && metaData.docs;
121
123
  };
122
124
 
@@ -1 +1 @@
1
- {"version":3,"file":"entry-preview-argtypes.js","names":["prop: JsonDocsProp","scalarTypes: SBScalarType['name'][]","data: T[]","category: string","methods: JsonDocsMethod[]","events: JsonDocsEvent[]","chr: string","props: JsonDocsProp[]","tagName: string","manifest: JsonDocs","customElements: JsonDocs","component: any","argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[]"],"sources":["../src/docs/infer-type.ts","../src/docs/custom-elements.ts","../src/entry-preview-argtypes.ts"],"sourcesContent":["import type { JsonDocsProp } from '@stencil/core/internal';\nimport type { SBType, SBScalarType, InputType } from 'storybook/internal/types';\n\nexport const inferSBType = (prop: JsonDocsProp): SBType => {\n const scalarTypes: SBScalarType['name'][] = ['string', 'number', 'boolean', 'symbol'];\n if (prop.type.toLowerCase() in scalarTypes) {\n return { name: prop.type.toLowerCase(), raw: prop.type, required: prop.required } as SBScalarType;\n }\n\n if (/^\\(.*\\)\\s*=>\\s*.*$/.test(prop.type)) {\n return { name: 'function', raw: prop.type, required: prop.required };\n }\n\n return { name: 'other', value: prop.type, raw: prop.type, required: prop.required };\n};\n\nexport const inferControlType = (prop: JsonDocsProp): InputType['control'] => {\n switch (prop.type) {\n case 'string':\n return { type: 'text' };\n case 'number':\n return { type: 'number' };\n case 'boolean':\n return { type: 'boolean' };\n case 'Date':\n return { type: 'date' };\n default:\n return { type: 'object' };\n }\n};\n","import { logger } from 'storybook/internal/client-logger';\nimport type { ArgTypes } from 'storybook/internal/types';\nimport type {\n JsonDocs,\n JsonDocsProp,\n JsonDocsEvent,\n JsonDocsSlot,\n JsonDocsMethod,\n JsonDocsStyle,\n JsonDocsPart,\n} from '@stencil/core/internal';\n\nimport { inferSBType, inferControlType } from './infer-type';\nimport { getCustomElements, isValidComponent, isValidMetaData } from '..';\n\nconst mapData = <T extends JsonDocsPart>(data: T[], category: string): ArgTypes =>\n data.reduce<ArgTypes>((acc, item) => {\n acc[item.name] = {\n name: item.name,\n description: item.docs,\n control: false,\n table: {\n category,\n },\n };\n return acc;\n }, {});\n\nconst mapMethods = (methods: JsonDocsMethod[]): ArgTypes =>\n methods.reduce<ArgTypes>((acc, method) => {\n acc[method.name] = {\n name: method.name,\n description: method.docs,\n control: null,\n type: { name: 'function' },\n table: {\n category: 'methods',\n type: { summary: method.signature },\n },\n };\n return acc;\n }, {});\n\nconst mapEvent = (events: JsonDocsEvent[]): ArgTypes =>\n events.reduce<ArgTypes>((acc, event) => {\n let name = event.event\n .replace(/(-|_|:|\\.|\\s)+(.)?/g, (_match, _separator, chr: string) => {\n return chr ? chr.toUpperCase() : '';\n })\n .replace(/^([A-Z])/, (match) => match.toLowerCase());\n\n name = `on${name.charAt(0).toUpperCase() + name.slice(1)}`;\n\n acc[name] = {\n name,\n description: event.docs,\n control: null,\n table: {\n category: 'events',\n type: { summary: event.detail },\n },\n type: { name: 'function' },\n };\n\n return acc;\n }, {});\n\nconst mapProps = (props: JsonDocsProp[]): ArgTypes =>\n props.reduce<ArgTypes>((acc, prop) => {\n acc[prop.name] = {\n name: prop.attr || prop.name,\n description: prop.docs,\n control: inferControlType(prop),\n table: {\n category: 'properties',\n type: { summary: prop.complexType?.original },\n defaultValue: { summary: prop.default },\n },\n type: inferSBType(prop),\n };\n\n return acc;\n }, {});\n\nconst getMetaData = (tagName: string, manifest: JsonDocs) => {\n if (!isValidComponent(tagName) || !isValidMetaData(manifest)) {\n return null;\n }\n const metaData = manifest.components.find((component) => component.tag.toUpperCase() === tagName.toUpperCase());\n if (!metaData) {\n logger.warn(`Component not found in custom-elements.json: ${tagName}`);\n }\n return metaData;\n};\n\nexport const extractArgTypesFromElements = (tagName: string, customElements: JsonDocs) => {\n const metaData = getMetaData(tagName, customElements);\n return (\n metaData && {\n ...mapProps(metaData.props),\n ...mapEvent(metaData.events),\n ...mapMethods(metaData.methods),\n ...mapData<JsonDocsSlot>(metaData.slots, 'slots'),\n ...mapData<JsonDocsPart>(metaData.parts, 'parts'),\n ...mapData<JsonDocsStyle>(metaData.styles, 'styles'),\n }\n );\n};\n\nexport const extractArgTypes = (component: any) => {\n const cem = getCustomElements();\n return extractArgTypesFromElements(component.is, cem);\n};\n\nexport const extractComponentDescription = (component: any) => {\n const metaData = getMetaData(component.is, getCustomElements());\n return metaData && metaData.docs;\n};\n","import { enhanceArgTypes } from 'storybook/internal/docs-tools';\nimport type { ArgTypesEnhancer } from 'storybook/internal/types';\n\nimport { extractArgTypes, extractComponentDescription } from './docs/custom-elements';\nimport type { StencilRenderer } from './types';\n\nexport const parameters = {\n docs: {\n extractArgTypes,\n extractComponentDescription,\n },\n};\n\nexport const argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[] = [enhanceArgTypes];"],"mappings":"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"}
1
+ {"version":3,"file":"entry-preview-argtypes.js","names":["prop: JsonDocsProp","scalarTypes: SBScalarType['name'][]","data: T[]","category: string","methods: JsonDocsMethod[]","events: JsonDocsEvent[]","chr: string","props: JsonDocsProp[]","tagName: string","manifest: JsonDocs","customElements: JsonDocs","component: any","argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[]"],"sources":["../src/docs/infer-type.ts","../src/docs/custom-elements.ts","../src/entry-preview-argtypes.ts"],"sourcesContent":["import type { JsonDocsProp } from '@stencil/core/internal';\nimport type { SBType, SBScalarType, InputType } from 'storybook/internal/types';\n\nexport const inferSBType = (prop: JsonDocsProp): SBType => {\n const scalarTypes: SBScalarType['name'][] = ['string', 'number', 'boolean', 'symbol'];\n if (prop.type.toLowerCase() in scalarTypes) {\n return { name: prop.type.toLowerCase(), raw: prop.type, required: prop.required } as SBScalarType;\n }\n\n if (/^\\(.*\\)\\s*=>\\s*.*$/.test(prop.type)) {\n return { name: 'function', raw: prop.type, required: prop.required };\n }\n\n return { name: 'other', value: prop.type, raw: prop.type, required: prop.required };\n};\n\nexport const inferControlType = (prop: JsonDocsProp): InputType['control'] => {\n switch (prop.type) {\n case 'string':\n return { type: 'text' };\n case 'number':\n return { type: 'number' };\n case 'boolean':\n return { type: 'boolean' };\n case 'Date':\n return { type: 'date' };\n default:\n return { type: 'object' };\n }\n};\n","import type {\n JsonDocs,\n JsonDocsEvent,\n JsonDocsMethod,\n JsonDocsPart,\n JsonDocsProp,\n JsonDocsSlot,\n JsonDocsStyle,\n} from '@stencil/core/internal';\nimport { logger } from 'storybook/internal/client-logger';\nimport type { ArgTypes } from 'storybook/internal/types';\n\nimport { getCustomElements, isValidComponent, isValidMetaData } from '..';\nimport { inferControlType, inferSBType } from './infer-type';\n\nconst mapData = <T extends JsonDocsPart>(data: T[], category: string): ArgTypes =>\n data.reduce<ArgTypes>((acc, item) => {\n acc[item.name] = {\n name: item.name,\n description: item.docs,\n control: false,\n table: {\n category,\n },\n };\n return acc;\n }, {});\n\nconst mapMethods = (methods: JsonDocsMethod[]): ArgTypes =>\n methods.reduce<ArgTypes>((acc, method) => {\n acc[method.name] = {\n name: method.name,\n description: method.docs,\n control: null,\n type: { name: 'function' },\n table: {\n category: 'methods',\n type: { summary: method.signature },\n },\n };\n return acc;\n }, {});\n\nconst mapEvent = (events: JsonDocsEvent[]): ArgTypes =>\n events.reduce<ArgTypes>((acc, event) => {\n let name = event.event\n .replace(/(-|_|:|\\.|\\s)+(.)?/g, (_match, _separator, chr: string) => {\n return chr ? chr.toUpperCase() : '';\n })\n .replace(/^([A-Z])/, (match) => match.toLowerCase());\n\n name = `on${name.charAt(0).toUpperCase() + name.slice(1)}`;\n\n acc[name] = {\n name,\n description: event.docs,\n control: null,\n table: {\n category: 'events',\n type: { summary: event.detail },\n },\n type: { name: 'function' },\n };\n\n return acc;\n }, {});\n\nconst mapProps = (props: JsonDocsProp[]): ArgTypes =>\n props.reduce<ArgTypes>((acc, prop) => {\n acc[prop.name] = {\n name: prop.attr || prop.name,\n description: prop.docs,\n control: inferControlType(prop),\n table: {\n category: 'properties',\n type: { summary: prop.complexType?.original },\n defaultValue: { summary: prop.default },\n },\n type: inferSBType(prop),\n };\n\n return acc;\n }, {});\n\nconst getMetaData = (tagName: string, manifest: JsonDocs) => {\n if (!isValidComponent(tagName) || !isValidMetaData(manifest)) {\n return null;\n }\n const metaData = manifest.components.find((component) => component.tag.toUpperCase() === tagName.toUpperCase());\n if (!metaData) {\n logger.warn(`Component not found in custom-elements.json: ${tagName}`);\n }\n return metaData;\n};\n\nexport const extractArgTypesFromElements = (tagName: string, customElements: JsonDocs) => {\n const metaData = getMetaData(tagName, customElements);\n return (\n metaData && {\n ...mapProps(metaData.props),\n ...mapEvent(metaData.events),\n ...mapMethods(metaData.methods),\n ...mapData<JsonDocsSlot>(metaData.slots, 'slots'),\n ...mapData<JsonDocsPart>(metaData.parts, 'parts'),\n ...mapData<JsonDocsStyle>(metaData.styles, 'styles'),\n }\n );\n};\n\nexport const extractArgTypes = (component: any) => {\n const cem = getCustomElements();\n // Handle both string references (lazy loading) and class references (auto-define)\n const tagName = typeof component === 'string' ? component : component?.is;\n return extractArgTypesFromElements(tagName, cem);\n};\n\nexport const extractComponentDescription = (component: any) => {\n // Handle both string references (lazy loading) and class references (auto-define)\n const tagName = typeof component === 'string' ? component : component?.is;\n const metaData = getMetaData(tagName, getCustomElements());\n return metaData && metaData.docs;\n};\n","import { enhanceArgTypes } from 'storybook/internal/docs-tools';\nimport type { ArgTypesEnhancer } from 'storybook/internal/types';\n\nimport { extractArgTypes, extractComponentDescription } from './docs/custom-elements';\nimport type { StencilRenderer } from './types';\n\nexport const parameters = {\n docs: {\n extractArgTypes,\n extractComponentDescription,\n },\n};\n\nexport const argTypesEnhancers: ArgTypesEnhancer<StencilRenderer<unknown>>[] = [enhanceArgTypes];"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stencil/storybook-plugin",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "Storybook plugin for Stencil",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/stenciljs/storybook",