@storybook/addon-docs
Version:
Document component usage and properties in Markdown
163 lines (126 loc) • 5.11 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.extractComponentDescription = exports.extractArgTypes = exports.extractArgTypesFromElements = void 0;
require("core-js/modules/es.array.filter.js");
require("core-js/modules/es.function.name.js");
require("core-js/modules/web.dom-collections.for-each.js");
require("core-js/modules/es.symbol.js");
require("core-js/modules/es.symbol.description.js");
require("core-js/modules/es.string.replace.js");
require("core-js/modules/es.regexp.exec.js");
require("core-js/modules/es.array.find.js");
require("core-js/modules/es.object.assign.js");
var _webComponents = require("@storybook/web-components");
var _clientLogger = require("@storybook/client-logger");
function mapData(data, category) {
return data && data.filter(function (item) {
return item && item.name;
}).reduce(function (acc, item) {
if (item.kind === 'method') return acc;
switch (category) {
case 'events':
mapEvent(item).forEach(function (argType) {
acc[argType.name] = argType;
});
break;
default:
acc[item.name] = mapItem(item, category);
break;
}
return acc;
}, {});
}
function mapItem(item, category) {
var _item$type, _item$type2;
var type = category === 'properties' ? {
name: ((_item$type = item.type) === null || _item$type === void 0 ? void 0 : _item$type.text) || item.type
} : {
name: 'void'
};
return {
name: item.name,
required: false,
description: item.description,
type: type,
table: {
category: category,
type: {
summary: ((_item$type2 = item.type) === null || _item$type2 === void 0 ? void 0 : _item$type2.text) || item.type
},
defaultValue: {
summary: item.default !== undefined ? item.default : item.defaultValue
}
}
};
}
function mapEvent(item) {
var name = item.name.replace(/(-|_|:|\.|\s)+(.)?/g, function (_match, _separator, chr) {
return chr ? chr.toUpperCase() : '';
}).replace(/^([A-Z])/, function (match) {
return match.toLowerCase();
});
name = "on".concat(name.charAt(0).toUpperCase() + name.substr(1));
return [{
name: name,
action: {
name: item.name
},
table: {
disable: true
}
}, mapItem(item, 'events')];
}
var getMetaDataExperimental = function getMetaDataExperimental(tagName, customElements) {
if (!(0, _webComponents.isValidComponent)(tagName) || !(0, _webComponents.isValidMetaData)(customElements)) {
return null;
}
var metaData = customElements.tags.find(function (tag) {
return tag.name.toUpperCase() === tagName.toUpperCase();
});
if (!metaData) {
_clientLogger.logger.warn("Component not found in custom-elements.json: ".concat(tagName));
}
return metaData;
};
var getMetaDataV1 = function getMetaDataV1(tagName, customElements) {
var _customElements$modul;
if (!(0, _webComponents.isValidComponent)(tagName) || !(0, _webComponents.isValidMetaData)(customElements)) {
return null;
}
var metadata;
customElements === null || customElements === void 0 ? void 0 : (_customElements$modul = customElements.modules) === null || _customElements$modul === void 0 ? void 0 : _customElements$modul.forEach(function (_module) {
var _module$declarations;
_module === null || _module === void 0 ? void 0 : (_module$declarations = _module.declarations) === null || _module$declarations === void 0 ? void 0 : _module$declarations.forEach(function (declaration) {
if (declaration.tagName === tagName) {
metadata = declaration;
}
});
});
if (!metadata) {
_clientLogger.logger.warn("Component not found in custom-elements.json: ".concat(tagName));
}
return metadata;
};
var extractArgTypesFromElements = function extractArgTypesFromElements(tagName, customElements) {
var metaData = getMetaData(tagName, customElements);
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'));
};
exports.extractArgTypesFromElements = extractArgTypesFromElements;
var getMetaData = function getMetaData(tagName, manifest) {
if ((manifest === null || manifest === void 0 ? void 0 : manifest.version) === 'experimental') {
return getMetaDataExperimental(tagName, manifest);
}
return getMetaDataV1(tagName, manifest);
};
var extractArgTypes = function extractArgTypes(tagName) {
var cem = (0, _webComponents.getCustomElements)();
return extractArgTypesFromElements(tagName, cem);
};
exports.extractArgTypes = extractArgTypes;
var extractComponentDescription = function extractComponentDescription(tagName) {
var metaData = getMetaData(tagName, (0, _webComponents.getCustomElements)());
return metaData && metaData.description;
};
exports.extractComponentDescription = extractComponentDescription;
;