wix-storybook-utils
Version:
Utilities for automated component documentation within Storybook
57 lines • 2.88 kB
JavaScript
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