UNPKG

vue-styleguidist

Version:
163 lines (151 loc) 10.1 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); var _typeof = require("@babel/runtime/helpers/typeof"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = _default; exports.pitch = pitch; exports.pitchAsync = pitchAsync; var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _pick = _interopRequireDefault(require("lodash/pick")); var _commonDir = _interopRequireDefault(require("common-dir")); var _escodegen = require("escodegen"); var _flatten = _interopRequireDefault(require("lodash/flatten")); var _astTypes = require("ast-types"); var _toAst = _interopRequireDefault(require("to-ast")); var _glogg = _interopRequireDefault(require("glogg")); var fileExistsCaseInsensitive = _interopRequireWildcard(require("react-styleguidist/lib/scripts/utils/findFileCaseInsensitive")); var _getAllContentPages = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/getAllContentPages")); var _getComponentFilesFromSections = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/getComponentFilesFromSections")); var _getComponentPatternsFromSections = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/getComponentPatternsFromSections")); var _filterComponentsWithExample = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/filterComponentsWithExample")); var _slugger = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/slugger")); var _requireIt = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/requireIt")); var _resolveESModule = _interopRequireDefault(require("react-styleguidist/lib/loaders/utils/resolveESModule")); var _getSections = _interopRequireDefault(require("./utils/getSections")); function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); } function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; } function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; } function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; } var logger = (0, _glogg["default"])('rsg'); var STYLE_VARIABLE_NAME = '__vsgStyles'; var THEME_VARIABLE_NAME = '__vsgTheme'; // Config options that should be passed to the client var CLIENT_CONFIG_OPTIONS = ['title', 'tocMode', 'version', 'showCode', 'showUsage', 'showSidebar', 'previewDelay', 'theme', 'styles', 'compilerConfig', 'editorConfig', 'ribbon', 'pagePerSection', 'mountPointId', 'jsxInExamples', 'jssThemedEditor', 'locallyRegisterComponents']; // const emptyFunctionAst = {} // Object.defineProperty(emptyFunctionAst, 'toAST', { // enumerable: false, // value() { // return builders.arrowFunctionExpression([], builders.arrowFunctionExpression([], b.blockStatement([]))); // } // }); function _default() {} function pitch() { var callback = this.async(); var cb = callback ? callback : function () { return null; }; pitchAsync.call(this).then(function (res) { return cb(undefined, res); })["catch"](function (e) { throw e; }); } function pitchAsync() { return _pitchAsync.apply(this, arguments); } function _pitchAsync() { _pitchAsync = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() { var _this = this; var config, allComponentFiles, sections, allContentPages, welcomeScreen, patterns, renderRootJsx, enhancePreviewApp, configClone, styleContext, setVariableValueToObjectInFile, styleguide; return _regenerator["default"].wrap(function _callee$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: // Clear cache so it would detect new or renamed files fileExistsCaseInsensitive.clearCache(); // Reset slugger for each code reload to be deterministic _slugger["default"].reset(); config = this._styleguidist; if (config.sections) { _context.next = 5; break; } return _context.abrupt("return", ''); case 5: allComponentFiles = (0, _getComponentFilesFromSections["default"])(config.sections, config.configDir, config.ignore); _context.next = 8; return (0, _getSections["default"])(config.sections, { config: config, componentFiles: allComponentFiles }); case 8: sections = _context.sent; if (config.skipComponentsWithoutExample) { sections = (0, _filterComponentsWithExample["default"])(sections); } allContentPages = (0, _getAllContentPages["default"])(sections); // Nothing to show in the style guide welcomeScreen = allContentPages.length === 0 && allComponentFiles.length === 0; patterns = welcomeScreen ? (0, _getComponentPatternsFromSections["default"])(config.sections) : undefined; renderRootJsx = config.renderRootJsx ? (0, _requireIt["default"])(config.renderRootJsx) : undefined; enhancePreviewApp = config.enhancePreviewApp ? (0, _requireIt["default"])(config.enhancePreviewApp) : function () { return function () {}; }; logger.debug('Loading components:\n' + allComponentFiles.join('\n')); // Setup Webpack context dependencies to enable hot reload when adding new files if (config.contextDependencies) { config.contextDependencies.forEach(function (dir) { return _this.addContextDependency(dir); }); } else if (allComponentFiles.length > 0) { // Use common parent directory of all components as a context this.addContextDependency((0, _commonDir["default"])(allComponentFiles)); } configClone = _objectSpread({}, config); styleContext = []; setVariableValueToObjectInFile = function setVariableValueToObjectInFile(memberName, varName) { var configMember = config[memberName]; if (typeof configMember === 'string') { // first attach the file as a dependency _this.addDependency(configMember); // then create a variable to contain the value of the theme/style styleContext.push((0, _resolveESModule["default"])(configMember, varName)); // Finally assign the calculated value to the member of the clone // NOTE: if we are mutating the config object without cloning it, // it changes the value for all hmr iteration // until the process is stopped. var variableAst = {}; // Then override the `toAST()` function, because we know // what the output of it should be, an identifier Object.defineProperty(variableAst, 'toAST', { enumerable: false, value: function value() { return _astTypes.builders.identifier(varName); } }); configClone[memberName] = variableAst; } }; setVariableValueToObjectInFile('styles', STYLE_VARIABLE_NAME); setVariableValueToObjectInFile('theme', THEME_VARIABLE_NAME); styleguide = { config: (0, _pick["default"])(configClone, CLIENT_CONFIG_OPTIONS), welcomeScreen: welcomeScreen, patterns: patterns, sections: sections, renderRootJsx: renderRootJsx, enhancePreviewApp: enhancePreviewApp }; return _context.abrupt("return", "".concat((0, _escodegen.generate)(_astTypes.builders.program((0, _flatten["default"])(styleContext))), "\nif (module.hot) {\n\tmodule.hot.accept([])\n}\n\nmodule.exports = ").concat((0, _escodegen.generate)((0, _toAst["default"])(styleguide)), "\n")); case 24: case "end": return _context.stop(); } } }, _callee, this); })); return _pitchAsync.apply(this, arguments); }