UNPKG

patternplate-client

Version:

Universal javascript client application for patternplate

183 lines (143 loc) 17 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _extends2 = require('babel-runtime/helpers/extends'); var _extends3 = _interopRequireDefault(_extends2); var _values = require('babel-runtime/core-js/object/values'); var _values2 = _interopRequireDefault(_values); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _lodash = require('lodash'); var _CSSTransitionGroup = require('react-transition-group/CSSTransitionGroup'); var _CSSTransitionGroup2 = _interopRequireDefault(_CSSTransitionGroup); var _markdown = require('../common/markdown'); var _markdown2 = _interopRequireDefault(_markdown); var _message = require('../common/message'); var _message2 = _interopRequireDefault(_message); var _urlQuery = require('../../utils/url-query'); var _urlQuery2 = _interopRequireDefault(_urlQuery); var _getIdByPathname = require('../../utils/get-id-by-pathname'); var _getIdByPathname2 = _interopRequireDefault(_getIdByPathname); var _patternFolder = require('../pattern/pattern-folder'); var _patternFolder2 = _interopRequireDefault(_patternFolder); var _patternSection = require('../pattern/pattern-section'); var _patternSection2 = _interopRequireDefault(_patternSection); var _navigate = require('../../utils/navigate'); var _navigate2 = _interopRequireDefault(_navigate); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = Content; var sortTypes = ['folder', 'pattern']; var rateType = function rateType(item) { return sortTypes.indexOf(item.type); }; function Content(props) { var base = props.base, config = props.config, location = props.location; var hierarchy = config.hierarchy; var _urlQuery$parse = _urlQuery2.default.parse(location.pathname), pathname = _urlQuery$parse.pathname; var id = (0, _getIdByPathname2.default)(pathname, props.base); var fragments = id.split('/'); var depth = fragments.length - 1; var up = depth > 0 ? fragments.slice(0, fragments.length - 1).join('/') : ''; var item = (0, _navigate2.default)(id, props.navigation); if (!item) { return _react2.default.createElement( 'div', { className: 'application-container application-container--pattern' }, _react2.default.createElement( 'div', { className: 'not-found-section' }, _react2.default.createElement(_markdown2.default, { source: getNotFoundSource(id) }) ) ); } var itemDefaults = { base: base, location: location }; var items = (0, _lodash.sortBy)((0, _lodash.sortBy)(getItems(item, hierarchy, itemDefaults, props.hide), 'name'), rateType); return _react2.default.createElement( 'div', { className: 'application-container application-container--pattern' }, item.type === 'folder' && _react2.default.createElement(_patternFolder2.default, { id: id, location: location, items: items, up: up, base: base }), item.type === 'pattern' && _react2.default.createElement(_patternSection2.default, { id: id, data: props.pattern, navigation: props.navigation, config: props.config, location: location, type: item.type, onDataRequest: props.onLoad, base: base }), _react2.default.createElement( _CSSTransitionGroup2.default, { component: 'aside', transitionName: 'pattern-content-transition', className: 'messages', transitionEnterTimeout: 300, transitionLeaveTimeout: 300 }, props.messages.map(function (message) { return _react2.default.createElement(_message2.default, { id: message.id, key: message.id, type: message.type, title: message.subject, body: message.body || message.stack, pattern: String(message.pattern).trim(), payload: message.payload, retry: message.retry, file: message.file, timestamp: message.timestamp, onDismiss: props.onDismiss, onRetry: props.onRetry, location: location, base: base }); }) ) ); } function getItemName(item, hierarchy) { if (item.type === 'pattern') { return item.manifest.displayName || item.manifest.name || item.id; } var configured = hierarchy[item.id] || {}; return configured.displayName || item.id; } function getNotFoundSource(id) { return '\n# Pattern not found\n\nWe looked everywhere and could not find pattern `' + id + '`.\n\nYou might want to navigate back to [Home](/) or use the search.\n\n---\n\nHelp us to make this message more helpful on [GitHub](https://github.com/sinnerschrader/patternplate)\n'; } function getItems(root, hierarchy, defaults, hide) { if (root.type !== 'folder') { return []; } return (0, _values2.default)(root.children).map(selectPatternData(hierarchy, defaults, hide)).filter(function (item) { return item.type !== 'pattern' || item.display; }); } function selectPatternData(hierarchy, defaults, hide) { return function (child) { var amend = child.type === 'pattern' ? { version: child.manifest.version, flag: child.manifest.flag, tags: child.manifest.tags, display: hide ? child.manifest.display !== false : true } : {}; return (0, _extends3.default)({}, defaults, { id: child.id, name: getItemName(child, hierarchy), type: child.type }, amend); }; } module.exports = exports['default']; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NvdXJjZS9hcHBsaWNhdGlvbi9jb21wb25lbnRzL2NvbnRlbnQvaW5kZXguanMiXSwibmFtZXMiOlsiQ29udGVudCIsInNvcnRUeXBlcyIsInJhdGVUeXBlIiwiaW5kZXhPZiIsIml0ZW0iLCJ0eXBlIiwicHJvcHMiLCJiYXNlIiwiY29uZmlnIiwibG9jYXRpb24iLCJoaWVyYXJjaHkiLCJwYXJzZSIsInBhdGhuYW1lIiwiaWQiLCJmcmFnbWVudHMiLCJzcGxpdCIsImRlcHRoIiwibGVuZ3RoIiwidXAiLCJzbGljZSIsImpvaW4iLCJuYXZpZ2F0aW9uIiwiZ2V0Tm90Rm91bmRTb3VyY2UiLCJpdGVtRGVmYXVsdHMiLCJpdGVtcyIsImdldEl0ZW1zIiwiaGlkZSIsInBhdHRlcm4iLCJvbkxvYWQiLCJtZXNzYWdlcyIsIm1hcCIsIm1lc3NhZ2UiLCJzdWJqZWN0IiwiYm9keSIsInN0YWNrIiwiU3RyaW5nIiwidHJpbSIsInBheWxvYWQiLCJyZXRyeSIsImZpbGUiLCJ0aW1lc3RhbXAiLCJvbkRpc21pc3MiLCJvblJldHJ5IiwiZ2V0SXRlbU5hbWUiLCJtYW5pZmVzdCIsImRpc3BsYXlOYW1lIiwibmFtZSIsImNvbmZpZ3VyZWQiLCJyb290IiwiZGVmYXVsdHMiLCJjaGlsZHJlbiIsInNlbGVjdFBhdHRlcm5EYXRhIiwiZmlsdGVyIiwiZGlzcGxheSIsImFtZW5kIiwiY2hpbGQiLCJ2ZXJzaW9uIiwiZmxhZyIsInRhZ3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7QUFDQTs7OztBQUVBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7Ozs7a0JBRWVBLE87OztBQUVmLElBQU1DLFlBQVksQ0FBQyxRQUFELEVBQVcsU0FBWCxDQUFsQjtBQUNBLElBQU1DLFdBQVcsU0FBWEEsUUFBVztBQUFBLFFBQVFELFVBQVVFLE9BQVYsQ0FBa0JDLEtBQUtDLElBQXZCLENBQVI7QUFB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SUFGdEI7QUFHQ0MsU0FBTUgsTUFBTVgsUUFBTixDQUFlYyxJQUh0QjtBQUlDTCxZQUFTM0IsT0FBTzZCLE1BQU1YLFFBQU4sQ0FBZVMsT0FBZixLQUEyQixLQUFsQyxHQUEwQztBQUpwRCxHQURjLEdBT2QsRUFQQTs7QUFTQSxvQ0FDSUosUUFESjtBQUVDcEMsT0FBSTBDLE1BQU0xQyxFQUZYO0FBR0NpQyxTQUFNSCxZQUFZWSxLQUFaLEVBQW1CN0MsU0FBbkIsQ0FIUDtBQUlDTCxTQUFNa0QsTUFBTWxEO0FBSmIsS0FLSWlELEtBTEo7QUFPQSxFQWpCRDtBQWtCQSIsImZpbGUiOiJpbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwge1Byb3BUeXBlcyBhcyB0fSBmcm9tICdyZWFjdCc7XG5pbXBvcnQge3NvcnRCeX0gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBDU1NUcmFuc2l0aW9uR3JvdXAgZnJvbSAncmVhY3QtdHJhbnNpdGlvbi1ncm91cC9DU1NUcmFuc2l0aW9uR3JvdXAnO1xuXG5pbXBvcnQgTWFya2Rvd24gZnJvbSAnLi4vY29tbW9uL21hcmtkb3duJztcbmltcG9ydCBNZXNzYWdlIGZyb20gJy4uL2NvbW1vbi9tZXNzYWdlJztcbmltcG9ydCB1cmxRdWVyeSBmcm9tICcuLi8uLi91dGlscy91cmwtcXVlcnknO1xuaW1wb3J0IGdldElkQnlQYXRobmFtZSBmcm9tICcuLi8uLi91dGlscy9nZXQtaWQtYnktcGF0aG5hbWUnO1xuaW1wb3J0IFBhdHRlcm5Gb2xkZXIgZnJvbSAnLi4vcGF0dGVybi9wYXR0ZXJuLWZvbGRlcic7XG5pbXBvcnQgUGF0dGVyblNlY3Rpb24gZnJvbSAnLi4vcGF0dGVybi9wYXR0ZXJuLXNlY3Rpb24nO1xuaW1wb3J0IG5hdmlnYXRlIGZyb20gJy4uLy4uL3V0aWxzL25hdmlnYXRlJztcblxuZXhwb3J0IGRlZmF1bHQgQ29udGVudDtcblxuY29uc3Qgc29ydFR5cGVzID0gWydmb2xkZXInLCAncGF0dGVybiddO1xuY29uc3QgcmF0ZVR5cGUgPSBpdGVtID0+IHNvcnRUeXBlcy5pbmRleE9mKGl0ZW0udHlwZSk7XG5cbmZ1bmN0aW9uIENvbnRlbnQocHJvcHMpIHtcblx0Y29uc3Qge2Jhc2UsIGNvbmZpZywgbG9jYXRpb259ID0gcHJvcHM7XG5cdGNvbnN0IHtoaWVyYXJjaHl9ID0gY29uZmlnO1xuXG5cdGNvbnN0IHtwYXRobmFtZX0gPSB1cmxRdWVyeS5wYXJzZShsb2NhdGlvbi5wYXRobmFtZSk7XG5cdGNvbnN0IGlkID0gZ2V0SWRCeVBhdGhuYW1lKHBhdGhuYW1lLCBwcm9wcy5iYXNlKTtcblxuXHRjb25zdCBmcmFnbWVudHMgPSBpZC5zcGxpdCgnLycpO1xuXHRjb25zdCBkZXB0aCA9IGZyYWdtZW50cy5sZW5ndGggLSAxO1xuXHRjb25zdCB1cCA9IGRlcHRoID4gMCA/IGZyYWdtZW50cy5zbGljZSgwLCBmcmFnbWVudHMubGVuZ3RoIC0gMSkuam9pbignLycpIDogJyc7XG5cdGNvbnN0IGl0ZW0gPSBuYXZpZ2F0ZShpZCwgcHJvcHMubmF2aWdhdGlvbik7XG5cblx0aWYgKCFpdGVtKSB7XG5cdFx0cmV0dXJuIChcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiYXBwbGljYXRpb24tY29udGFpbmVyIGFwcGxpY2F0aW9uLWNvbnRhaW5lci0tcGF0dGVyblwiPlxuXHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cIm5vdC1mb3VuZC1zZWN0aW9uXCI+XG5cdFx0XHRcdFx0PE1hcmtkb3duIHNvdXJjZT17Z2V0Tm90Rm91bmRTb3VyY2UoaWQpfS8+XG5cdFx0XHRcdDwvZGl2PlxuXHRcdFx0PC9kaXY+XG5cdFx0KTtcblx0fVxuXG5cdGNvbnN0IGl0ZW1EZWZhdWx0cyA9IHtiYXNlLCBsb2NhdGlvbn07XG5cdGNvbnN0IGl0ZW1zID0gc29ydEJ5KHNvcnRCeShnZXRJdGVtcyhpdGVtLCBoaWVyYXJjaHksIGl0ZW1EZWZhdWx0cywgcHJvcHMuaGlkZSksICduYW1lJyksIHJhdGVUeXBlKTtcblxuXHRyZXR1cm4gKFxuXHRcdDxkaXYgY2xhc3NOYW1lPVwiYXBwbGljYXRpb24tY29udGFpbmVyIGFwcGxpY2F0aW9uLWNvbnRhaW5lci0tcGF0dGVyblwiPlxuXHRcdFx0e1xuXHRcdFx0XHRpdGVtLnR5cGUgPT09ICdmb2xkZXInICYmXG5cdFx0XHRcdFx0PFBhdHRlcm5Gb2xkZXJcblx0XHRcdFx0XHRcdGlkPXtpZH1cblx0XHRcdFx0XHRcdGxvY2F0aW9uPXtsb2NhdGlvbn1cblx0XHRcdFx0XHRcdGl0ZW1zPXtpdGVtc31cblx0XHRcdFx0XHRcdHVwPXt1cH1cblx0XHRcdFx0XHRcdGJhc2U9e2Jhc2V9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0fVxuXHRcdFx0e1xuXHRcdFx0XHRpdGVtLnR5cGUgPT09ICdwYXR0ZXJuJyAmJlxuXHRcdFx0XHRcdDxQYXR0ZXJuU2VjdGlvblxuXHRcdFx0XHRcdFx0aWQ9e2lkfVxuXHRcdFx0XHRcdFx0ZGF0YT17cHJvcHMucGF0dGVybn1cblx0XHRcdFx0XHRcdG5hdmlnYXRpb249e3Byb3BzLm5hdmlnYXRpb259XG5cdFx0XHRcdFx0XHRjb25maWc9e3Byb3BzLmNvbmZpZ31cblx0XHRcdFx0XHRcdGxvY2F0aW9uPXtsb2NhdGlvbn1cblx0XHRcdFx0XHRcdHR5cGU9e2l0ZW0udHlwZX1cblx0XHRcdFx0XHRcdG9uRGF0YVJlcXVlc3Q9e3Byb3BzLm9uTG9hZH1cblx0XHRcdFx0XHRcdGJhc2U9e2Jhc2V9XG5cdFx0XHRcdFx0XHQvPlxuXHRcdFx0fVxuXHRcdFx0PENTU1RyYW5zaXRpb25Hcm91cFxuXHRcdFx0XHRjb21wb25lbnQ9XCJhc2lkZVwiXG5cdFx0XHRcdHRyYW5zaXRpb25OYW1lPVwicGF0dGVybi1jb250ZW50LXRyYW5zaXRpb25cIlxuXHRcdFx0XHRjbGFzc05hbWU9XCJtZXNzYWdlc1wiXG5cdFx0XHRcdHRyYW5zaXRpb25FbnRlclRpbWVvdXQ9ezMwMH1cblx0XHRcdFx0dHJhbnNpdGlvbkxlYXZlVGltZW91dD17MzAwfVxuXHRcdFx0XHQ+XG5cdFx0XHRcdHtcblx0XHRcdFx0XHRwcm9wcy5tZXNzYWdlcy5tYXAobWVzc2FnZSA9PiB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gKFxuXHRcdFx0XHRcdFx0XHQ8TWVzc2FnZVxuXHRcdFx0XHRcdFx0XHRcdGlkPXttZXNzYWdlLmlkfVxuXHRcdFx0XHRcdFx0XHRcdGtleT17bWVzc2FnZS5pZH1cblx0XHRcdFx0XHRcdFx0XHR0eXBlPXttZXNzYWdlLnR5cGV9XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU9e21lc3NhZ2Uuc3ViamVjdH1cblx0XHRcdFx0XHRcdFx0XHRib2R5PXttZXNzYWdlLmJvZHkgfHwgbWVzc2FnZS5zdGFja31cblx0XHRcdFx0XHRcdFx0XHRwYXR0ZXJuPXtTdHJpbmcobWVzc2FnZS5wYXR0ZXJuKS50cmltKCl9XG5cdFx0XHRcdFx0XHRcdFx0cGF5bG9hZD17bWVzc2FnZS5wYXlsb2FkfVxuXHRcdFx0XHRcdFx0XHRcdHJldHJ5PXttZXNzYWdlLnJldHJ5fVxuXHRcdFx0XHRcdFx0XHRcdGZpbGU9e21lc3NhZ2UuZmlsZX1cblx0XHRcdFx0XHRcdFx0XHR0aW1lc3RhbXA9e21lc3NhZ2UudGltZXN0YW1wfVxuXHRcdFx0XHRcdFx0XHRcdG9uRGlzbWlzcz17cHJvcHMub25EaXNtaXNzfVxuXHRcdFx0XHRcdFx0XHRcdG9uUmV0cnk9e3Byb3BzLm9uUmV0cnl9XG5cdFx0XHRcdFx0XHRcdFx0bG9jYXRpb249e2xvY2F0aW9ufVxuXHRcdFx0XHRcdFx0XHRcdGJhc2U9e2Jhc2V9XG5cdFx0XHRcdFx0XHRcdFx0Lz5cblx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0fVxuXHRcdFx0PC9DU1NUcmFuc2l0aW9uR3JvdXA+XG5cdFx0PC9kaXY+XG5cdCk7XG59XG5cbkNvbnRlbnQucHJvcFR5cGVzID0ge1xuXHRiYXNlOiB0LnN0cmluZy5pc1JlcXVpcmVkLFxuXHRjb25maWc6IHQub2JqZWN0LmlzUmVxdWlyZWQsXG5cdGhpZGU6IHQuYm9vbC5pc1JlcXVpcmVkLFxuXHRsb2NhdGlvbjogdC5zaGFwZSh7XG5cdFx0cGF0aG5hbWU6IHQuc3RyaW5nLmlzUmVxdWlyZWRcblx0fSkuaXNSZXF1aXJlZCxcblx0bmF2aWdhdGlvbjogdC5vYmplY3QuaXNSZXF1aXJlZCxcblx0b25EaXNtaXNzOiB0LmZ1bmMuaXNSZXF1aXJlZCxcblx0b25Mb2FkOiB0LmZ1bmMuaXNSZXF1aXJlZCxcblx0b25SZXRyeTogdC5mdW5jLmlzUmVxdWlyZWQsXG5cdHBhdHRlcm46IHQub2JqZWN0LmlzUmVxdWlyZWQsXG5cdG1lc3NhZ2VzOiB0LmFycmF5LmlzUmVxdWlyZWRcbn07XG5cbmZ1bmN0aW9uIGdldEl0ZW1OYW1lKGl0ZW0sIGhpZXJhcmNoeSkge1xuXHRpZiAoaXRlbS50eXBlID09PSAncGF0dGVybicpIHtcblx0XHRyZXR1cm4gaXRlbS5tYW5pZmVzdC5kaXNwbGF5TmFtZSB8fCBpdGVtLm1hbmlmZXN0Lm5hbWUgfHwgaXRlbS5pZDtcblx0fVxuXHRjb25zdCBjb25maWd1cmVkID0gaGllcmFyY2h5W2l0ZW0uaWRdIHx8IHt9O1xuXHRyZXR1cm4gY29uZmlndXJlZC5kaXNwbGF5TmFtZSB8fCBpdGVtLmlkO1xufVxuXG5mdW5jdGlvbiBnZXROb3RGb3VuZFNvdXJjZShpZCkge1xuXHRyZXR1cm4gYFxuIyBQYXR0ZXJuIG5vdCBmb3VuZFxuXG5XZSBsb29rZWQgZXZlcnl3aGVyZSBhbmQgY291bGQgbm90IGZpbmQgcGF0dGVybiBcXGAke2lkfVxcYC5cblxuWW91IG1pZ2h0IHdhbnQgdG8gbmF2aWdhdGUgYmFjayB0byBbSG9tZV0oLykgb3IgdXNlIHRoZSBzZWFyY2guXG5cbi0tLVxuXG5IZWxwIHVzIHRvIG1ha2UgdGhpcyBtZXNzYWdlIG1vcmUgaGVscGZ1bCBvbiBbR2l0SHViXShodHRwczovL2dpdGh1Yi5jb20vc2lubmVyc2NocmFkZXIvcGF0dGVybnBsYXRlKVxuYDtcbn1cblxuZnVuY3Rpb24gZ2V0SXRlbXMocm9vdCwgaGllcmFyY2h5LCBkZWZhdWx0cywgaGlkZSkge1xuXHRpZiAocm9vdC50eXBlICE9PSAnZm9sZGVyJykge1xuXHRcdHJldHVybiBbXTtcblx0fVxuXHRyZXR1cm4gT2JqZWN0LnZhbHVlcyhyb290LmNoaWxkcmVuKVxuXHRcdC5tYXAoc2VsZWN0UGF0dGVybkRhdGEoaGllcmFyY2h5LCBkZWZhdWx0cywgaGlkZSkpXG5cdFx0LmZpbHRlcihpdGVtID0+IGl0ZW0udHlwZSAhPT0gJ3BhdHRlcm4nIHx8IGl0ZW0uZGlzcGxheSk7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdFBhdHRlcm5EYXRhKGhpZXJhcmNoeSwgZGVmYXVsdHMsIGhpZGUpIHtcblx0cmV0dXJuIGNoaWxkID0+IHtcblx0XHRjb25zdCBhbWVuZCA9IGNoaWxkLnR5cGUgPT09ICdwYXR0ZXJuJyA/XG5cdFx0e1xuXHRcdFx0dmVyc2lvbjogY2hpbGQubWFuaWZlc3QudmVyc2lvbixcblx0XHRcdGZsYWc6IGNoaWxkLm1hbmlmZXN0LmZsYWcsXG5cdFx0XHR0YWdzOiBjaGlsZC5tYW5pZmVzdC50YWdzLFxuXHRcdFx0ZGlzcGxheTogaGlkZSA/IGNoaWxkLm1hbmlmZXN0LmRpc3BsYXkgIT09IGZhbHNlIDogdHJ1ZVxuXHRcdH0gOlxuXHRcdHt9O1xuXG5cdFx0cmV0dXJuIHtcblx0XHRcdC4uLmRlZmF1bHRzLFxuXHRcdFx0aWQ6IGNoaWxkLmlkLFxuXHRcdFx0bmFtZTogZ2V0SXRlbU5hbWUoY2hpbGQsIGhpZXJhcmNoeSksXG5cdFx0XHR0eXBlOiBjaGlsZC50eXBlLFxuXHRcdFx0Li4uYW1lbmRcblx0XHR9O1xuXHR9O1xufVxuIl19