UNPKG

@compositor/kit

Version:

Components for development environments, style guides, and demos

128 lines (100 loc) 3.94 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.flatten = exports.cartesianProduct = exports.extendDefaultProps = exports.displayObj = exports.toSrcPath = exports.titleize = exports.isIndex = exports.introPage = exports.log = undefined; var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); var _defineProperty2 = require('babel-runtime/helpers/defineProperty'); var _defineProperty3 = _interopRequireDefault(_defineProperty2); var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties'); var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2); var _assign = require('babel-runtime/core-js/object/assign'); var _assign2 = _interopRequireDefault(_assign); var _keys = require('babel-runtime/core-js/object/keys'); var _keys2 = _interopRequireDefault(_keys); var _ramda = require('ramda'); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var arr = function arr(v) { return Array.isArray(v) ? v : [v]; }; var log = function log(msg) { return process.env.VERBOSE && console.log(msg); }; var toSrcPath = function toSrcPath(docsDir, path) { return path.replace(/\md$/, 'js').replace(docsDir, 'src').replace('components/', ''); }; var displayObj = function displayObj(obj) { return (0, _keys2.default)(obj).map(function (k) { return k + '=' + obj[k]; }).join(','); }; // Adapted from: https://github.com/sindresorhus/titleize/blob/master/index.js var titleize = function titleize(str) { return str.replace(/(?:^|\s|-)\S/g, function (m) { return m.toUpperCase(); }).replace(/(-|_)/g, ' '); }; var isIndex = function isIndex(path) { return (/index\.md/.test(path) ); }; var introPage = function introPage(nav) { return nav[ROOT_LEVEL_FILE] && nav[ROOT_LEVEL_FILE].find(function (n) { return n.name === 'introduction'; }); }; var extendDefaultProps = function extendDefaultProps(Component, props) { Component.defaultProps = (0, _assign2.default)({}, Component.defaultProps || {}, props); }; var cartesianProduct = function cartesianProduct(_ref) { var _ref$theme = _ref.theme, theme = _ref$theme === undefined ? {} : _ref$theme, props = (0, _objectWithoutProperties3.default)(_ref, ['theme']); var xproduct = (0, _ramda.reduce)((0, _ramda.pipe)(_ramda.xprod, (0, _ramda.map)(_ramda.unnest)), [[]]); var parsedProps = (0, _keys2.default)(props).reduce(function (acc, k) { return acc.concat([arr(props[k]).map(function (v) { return (0, _defineProperty3.default)({}, k, v); })]); }, []); return (0, _ramda.map)(_ramda.mergeAll, xproduct(parsedProps)); }; var keyify = function keyify(keys) { return keys.join('.'); }; var isString = function isString(s) { return typeof s === 'string'; }; var isArray = function isArray(a) { return Array.isArray(a); }; var isObject = function isObject(o) { return (typeof o === 'undefined' ? 'undefined' : (0, _typeof3.default)(o)) === 'object' && !isArray(o); }; var flatten = function flatten(obj) { var parentKeys = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; return (0, _keys2.default)(obj).reduce(function (acc, key) { var val = obj[key]; var keys = parentKeys.concat([key]); if (isString(val)) { acc[keyify(keys)] = val; return acc; } else if (isObject(val)) { return (0, _assign2.default)(acc, flatten(val, keys)); } val.forEach(function (v, i) { var key = keyify(keys.concat([i])); acc[key] = v; }); return acc; }, {}); }; exports.log = log; exports.introPage = introPage; exports.isIndex = isIndex; exports.titleize = titleize; exports.toSrcPath = toSrcPath; exports.displayObj = displayObj; exports.extendDefaultProps = extendDefaultProps; exports.cartesianProduct = cartesianProduct; exports.flatten = flatten;