@compositor/kit
Version:
Components for development environments, style guides, and demos
128 lines (100 loc) • 3.94 kB
JavaScript
;
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;