@storybook/web-components
Version:
Storybook Web Components renderer: Develop, document, and test UI components in isolation
110 lines (106 loc) • 3.88 kB
JavaScript
import {
getCustomElements,
isValidComponent,
isValidMetaData
} from "./_browser-chunks/chunk-XQFQKYGQ.js";
import "./_browser-chunks/chunk-UN5GYDGC.js";
import "./_browser-chunks/chunk-4BE7D4DS.js";
// src/entry-preview-argtypes.ts
import { enhanceArgTypes } from "storybook/internal/docs-tools";
// src/docs/custom-elements.ts
import { logger } from "storybook/internal/client-logger";
import invariant from "tiny-invariant";
function mapItem(item, category) {
let type;
switch (category) {
case "attributes":
case "properties":
type = { name: item.type?.text || item.type };
break;
case "slots":
type = { name: "string" };
break;
default:
type = { name: "void" };
break;
}
return {
name: item.name,
required: !1,
description: item.description,
type,
table: {
category,
type: { summary: item.type?.text || item.type },
defaultValue: {
summary: item.default !== void 0 ? item.default : item.defaultValue
}
}
};
}
function mapEvent(item) {
let name = item.name.replace(/(-|_|:|\.|\s)+(.)?/g, (_match, _separator, chr) => chr ? chr.toUpperCase() : "").replace(/^([A-Z])/, (match) => match.toLowerCase());
return name = `on${name.charAt(0).toUpperCase() + name.substr(1)}`, [{ name, action: { name: item.name }, table: { disable: !0 } }, mapItem(item, "events")];
}
function mapData(data, category) {
return data && data.filter((item) => item && item.name).reduce((acc, item) => {
if (item.kind === "method")
return acc;
switch (category) {
case "events":
mapEvent(item).forEach((argType) => {
invariant(argType.name, `${argType} should have a name property.`), acc[argType.name] = argType;
});
break;
default:
acc[item.name] = mapItem(item, category);
break;
}
return acc;
}, {});
}
var getMetaDataExperimental = (tagName, customElements) => {
if (!isValidComponent(tagName) || !isValidMetaData(customElements))
return null;
let metaData = customElements.tags.find(
(tag) => tag.name.toUpperCase() === tagName.toUpperCase()
);
return metaData || logger.warn(`Component not found in custom-elements.json: ${tagName}`), metaData;
}, getMetaDataV1 = (tagName, customElements) => {
if (!isValidComponent(tagName) || !isValidMetaData(customElements))
return null;
let metadata;
return customElements?.modules?.forEach((_module) => {
_module?.declarations?.forEach((declaration) => {
declaration.tagName === tagName && (metadata = declaration);
});
}), metadata || logger.warn(`Component not found in custom-elements.json: ${tagName}`), metadata;
}, getMetaData = (tagName, manifest) => manifest?.version === "experimental" ? getMetaDataExperimental(tagName, manifest) : getMetaDataV1(tagName, manifest), extractArgTypesFromElements = (tagName, customElements) => {
let metaData = getMetaData(tagName, customElements);
return metaData && {
...mapData(metaData.members ?? [], "properties"),
...mapData(metaData.properties ?? [], "properties"),
...mapData(metaData.attributes ?? [], "attributes"),
...mapData(metaData.events ?? [], "events"),
...mapData(metaData.slots ?? [], "slots"),
...mapData(metaData.cssProperties ?? [], "css custom properties"),
...mapData(metaData.cssParts ?? [], "css shadow parts")
};
}, extractArgTypes = (tagName) => {
let cem = getCustomElements();
return extractArgTypesFromElements(tagName, cem);
}, extractComponentDescription = (tagName) => {
let metaData = getMetaData(tagName, getCustomElements());
return metaData && metaData.description;
};
// src/entry-preview-argtypes.ts
var parameters = {
docs: {
extractArgTypes,
extractComponentDescription
}
}, argTypesEnhancers = [enhanceArgTypes];
export {
argTypesEnhancers,
parameters
};