UNPKG

storybook-addon-playground

Version:

A playground to enable consumers learn how to use the component library or to reproduce bugs

67 lines (65 loc) 2.13 kB
const excludedProps = ["children", "data-testid", "dataTestId", "id"]; function generateAutocompletion(input) { return Object.values(input) .flat() .reduce((acc, { displayName, props = {} }) => { return { ...acc, [displayName]: Object.entries(props).filter(filterProps).map(mapProps), }; }, {}); } function filterProps([propName]) { return !excludedProps.includes(propName); } function mapProps([propName, propValue]) { const { tsType, type: jsType, required = false, description = "", defaultValue, } = propValue; return { [propName]: { type: parseType(tsType ?? jsType), required, defaultValue: parseDefaultValue(defaultValue), description, }, }; } function parseType(propType) { if (!propType) { return "unknown"; } switch (propType.name) { case "enum": if ("value" in propType && propType.value) { return Array.isArray(propType.value) ? propType.value.map((v) => typeof v === "object" && "value" in v ? v.value.replace(/"/g, "") : "") : propType.value; } break; case "union": case "arrayOf": if ("elements" in propType && propType.elements) { const elements = propType.elements .map((element) => parseType(element)) .flat(); return propType.name === "arrayOf" ? elements.map((el) => `${el}[]`) : elements; } break; default: { const raw = propType.raw; return raw ? raw.replace(/\n/g, "") : propType.name || "unknown"; } } } function parseDefaultValue(defaultValue) { if (!defaultValue?.value || ["null", "undefined"].includes(defaultValue?.value)) { return; } return defaultValue.value; } export { generateAutocompletion }; //# sourceMappingURL=generate-autocompletion.js.map