UNPKG

wix-storybook-utils

Version:

Utilities for automated component documentation within Storybook

57 lines 2.88 kB
import * as React from 'react'; import { Code } from '../Sections/views/import-example/Code'; import { makeImportCode } from './make-import-code'; import { FieldsDocumentation } from './fields-documentation'; var extractNested = function (descriptors) { return descriptors.reduce(function (acc, descriptor) { descriptor.type === 'object' ? acc.nested.push(descriptor) : acc.flat.push(descriptor); return acc; }, { flat: [], nested: [] }); }; var makeUnifiedTestkitImportCode = function (_a) { var metadata = _a.metadata, storyConfig = _a.storyConfig; var template; if (storyConfig.config.testkits) { template = ['vanilla', 'enzyme', 'puppeteer'] .map(function (type) { var _a; return (_a = storyConfig.config.testkits) === null || _a === void 0 ? void 0 : _a[type]; }) .filter(function (testkit) { return !!(testkit === null || testkit === void 0 ? void 0 : testkit.template); }) .map(function (testkit) { return testkit.template; }) .join('\n'); } else { template = "import { <%= component.displayName %>Testkit } from '".concat(storyConfig.config.importTestkitPath, "/testkit';\nimport { <%= component.displayName %>Testkit } from '").concat(storyConfig.config.importTestkitPath, "/testkit/enzyme';\nimport { <%= component.displayName %>Testkit } from '").concat(storyConfig.config.importTestkitPath, "/testkit/puppeteer';"); } return makeImportCode({ testkit: { template: template, }, metadata: metadata, }); }; export var UnifiedTestkitDocumentation = function (_a) { var dataHook = _a.dataHook, metadata = _a.metadata, storyConfig = _a.storyConfig, hideImport = _a.hideImport; var driver = metadata.drivers.filter(function (d) { return /\.uni\.driver\.(js|tsx?)$/.test(d.file); }); var error; if (driver.length === 0) { error = 'No unified testkit found!'; } else { error = driver[0].error; } if (error) { return React.createElement("div", null, error); } var flat = extractNested(driver[0].descriptor).flat; return (React.createElement("div", { "data-hook": dataHook }, !hideImport && (React.createElement(React.Fragment, null, React.createElement("h2", { "data-hook": "auto-testkit-driver-name" }, "Import"), React.createElement(Code, { dataHook: "auto-testkit-driver-import-code" }, makeUnifiedTestkitImportCode({ storyConfig: storyConfig, metadata: metadata })))), React.createElement("h2", { "data-hook": "auto-testkit-descriptor-title" }, "API"), React.createElement("div", { "data-hook": "auto-testkit-driver-descriptor" }, React.createElement(FieldsDocumentation, { units: flat })))); }; //# sourceMappingURL=unified-testkit-documentation.js.map