UNPKG

patternplate-client

Version:

Universal javascript client application for patternplate

127 lines (91 loc) 9.79 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); var _typeof2 = require('babel-runtime/helpers/typeof'); var _typeof3 = _interopRequireDefault(_typeof2); var _github = require('hast-util-sanitize/lib/github'); var _github2 = _interopRequireDefault(_github); var _lodash = require('lodash'); var _react = require('react'); var _react2 = _interopRequireDefault(_react); var _remark = require('remark'); var _remark2 = _interopRequireDefault(_remark); var _remarkGemojiToEmoji = require('remark-gemoji-to-emoji'); var _remarkGemojiToEmoji2 = _interopRequireDefault(_remarkGemojiToEmoji); var _remarkVdom = require('remark-vdom'); var _remarkVdom2 = _interopRequireDefault(_remarkVdom); var _markdownLink = require('./markdown-link'); var _markdownLink2 = _interopRequireDefault(_markdownLink); var _markdownCode = require('./markdown-code'); var _markdownCode2 = _interopRequireDefault(_markdownCode); var _markdownHeadline = require('./markdown-headline'); var _markdownHeadline2 = _interopRequireDefault(_markdownHeadline); var _wrap = require('./wrap'); var _wrap2 = _interopRequireDefault(_wrap); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } exports.default = render; function render(source, options) { var base = options.base, hash = options.hash, highlights = options.highlights, highlight = options.highlight, query = options.query, pathname = options.pathname, onHashChange = options.onHashChange; var h = _react2.default.createElement; var headline = (0, _wrap2.default)(_markdownHeadline2.default); var table = (0, _wrap2.default)(strictChildren(MarkdownGeneric, ['thead', 'tbody'])); var tbody = (0, _wrap2.default)(strictChildren(MarkdownGeneric, ['tr'])); var tr = (0, _wrap2.default)(strictChildren(MarkdownGeneric, ['td', 'th'])); var td = (0, _wrap2.default)(MarkdownGeneric); var link = { base: base, hash: hash, query: query, pathname: pathname, onHashChange: onHashChange }; var code = { highlights: highlights, highlight: highlight }; var components = { a: (0, _wrap2.default)(_markdownLink2.default, link), code: (0, _wrap2.default)(_markdownCode2.default, code), h1: headline, h2: headline, h3: headline, h4: headline, h5: headline, h6: headline, table: table, thead: tbody, tbody: tbody, tr: tr, th: td, td: td }; var sanitize = (0, _lodash.merge)({}, _github2.default); sanitize.attributes = { a: ['href', 'title'], code: ['className'], img: ['src', 'alt'] }; var opts = { h: h, components: components, sanitize: sanitize }; return (0, _remark2.default)().use(_remarkVdom2.default, opts).use(_remarkGemojiToEmoji2.default).process(source).contents; } function MarkdownGeneric(props) { var Component = props.tagName; return _react2.default.createElement( Component, null, props.children ); } function strictChildren(Component, tagNames) { function StrictChildren(props) { var children = _react.Children.toArray(props.children).filter(function (child) { return (typeof child === 'undefined' ? 'undefined' : (0, _typeof3.default)(child)) === 'object' && (0, _lodash.includes)(tagNames, child.props.tagName); }); return _react2.default.createElement( Component, props, children ); } return StrictChildren; } module.exports = exports['default']; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NvdXJjZS9hcHBsaWNhdGlvbi9jb21wb25lbnRzL2NvbW1vbi9tYXJrZG93bi9yZW5kZXIuanMiXSwibmFtZXMiOlsicmVuZGVyIiwic291cmNlIiwib3B0aW9ucyIsImJhc2UiLCJoYXNoIiwiaGlnaGxpZ2h0cyIsImhpZ2hsaWdodCIsInF1ZXJ5IiwicGF0aG5hbWUiLCJvbkhhc2hDaGFuZ2UiLCJoIiwiY3JlYXRlRWxlbWVudCIsImhlYWRsaW5lIiwidGFibGUiLCJzdHJpY3RDaGlsZHJlbiIsIk1hcmtkb3duR2VuZXJpYyIsInRib2R5IiwidHIiLCJ0ZCIsImxpbmsiLCJjb2RlIiwiY29tcG9uZW50cyIsImEiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJ0aGVhZCIsInRoIiwic2FuaXRpemUiLCJhdHRyaWJ1dGVzIiwiaW1nIiwib3B0cyIsInVzZSIsInByb2Nlc3MiLCJjb250ZW50cyIsInByb3BzIiwiQ29tcG9uZW50IiwidGFnTmFtZSIsImNoaWxkcmVuIiwidGFnTmFtZXMiLCJTdHJpY3RDaGlsZHJlbiIsInRvQXJyYXkiLCJmaWx0ZXIiLCJjaGlsZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFFQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7Ozs7O2tCQUVlQSxNOzs7QUFFZixTQUFTQSxNQUFULENBQWdCQyxNQUFoQixFQUF3QkMsT0FBeEIsRUFBaUM7QUFBQSxLQUN6QkMsSUFEeUIsR0FDMkNELE9BRDNDLENBQ3pCQyxJQUR5QjtBQUFBLEtBQ25CQyxJQURtQixHQUMyQ0YsT0FEM0MsQ0FDbkJFLElBRG1CO0FBQUEsS0FDYkMsVUFEYSxHQUMyQ0gsT0FEM0MsQ0FDYkcsVUFEYTtBQUFBLEtBQ0RDLFNBREMsR0FDMkNKLE9BRDNDLENBQ0RJLFNBREM7QUFBQSxLQUNVQyxLQURWLEdBQzJDTCxPQUQzQyxDQUNVSyxLQURWO0FBQUEsS0FDaUJDLFFBRGpCLEdBQzJDTixPQUQzQyxDQUNpQk0sUUFEakI7QUFBQSxLQUMyQkMsWUFEM0IsR0FDMkNQLE9BRDNDLENBQzJCTyxZQUQzQjs7QUFFaEMsS0FBTUMsSUFBSSxnQkFBTUMsYUFBaEI7QUFDQSxLQUFNQyxXQUFXLCtDQUFqQjs7QUFFQSxLQUFNQyxRQUFRLG9CQUFLQyxlQUFlQyxlQUFmLEVBQWdDLENBQUMsT0FBRCxFQUFVLE9BQVYsQ0FBaEMsQ0FBTCxDQUFkO0FBQ0EsS0FBTUMsUUFBUSxvQkFBS0YsZUFBZUMsZUFBZixFQUFnQyxDQUFDLElBQUQsQ0FBaEMsQ0FBTCxDQUFkO0FBQ0EsS0FBTUUsS0FBSyxvQkFBS0gsZUFBZUMsZUFBZixFQUFnQyxDQUFDLElBQUQsRUFBTyxJQUFQLENBQWhDLENBQUwsQ0FBWDtBQUNBLEtBQU1HLEtBQUssb0JBQUtILGVBQUwsQ0FBWDs7QUFFQSxLQUFNSSxPQUFPLEVBQUNoQixVQUFELEVBQU9DLFVBQVAsRUFBYUcsWUFBYixFQUFvQkMsa0JBQXBCLEVBQThCQywwQkFBOUIsRUFBYjtBQUNBLEtBQU1XLE9BQU8sRUFBQ2Ysc0JBQUQsRUFBYUMsb0JBQWIsRUFBYjs7QUFFQSxLQUFNZSxhQUFhO0FBQ2xCQyxLQUFHLDRDQUFtQkgsSUFBbkIsQ0FEZTtBQUVsQkMsUUFBTSw0Q0FBbUJBLElBQW5CLENBRlk7QUFHbEJHLE1BQUlYLFFBSGM7QUFJbEJZLE1BQUlaLFFBSmM7QUFLbEJhLE1BQUliLFFBTGM7QUFNbEJjLE1BQUlkLFFBTmM7QUFPbEJlLE1BQUlmLFFBUGM7QUFRbEJnQixNQUFJaEIsUUFSYztBQVNsQkMsY0FUa0I7QUFVbEJnQixTQUFPYixLQVZXO0FBV2xCQSxjQVhrQjtBQVlsQkMsUUFaa0I7QUFhbEJhLE1BQUlaLEVBYmM7QUFjbEJBO0FBZGtCLEVBQW5COztBQWlCQSxLQUFNYSxXQUFXLG1CQUFNLEVBQU4sbUJBQWpCO0FBQ0FBLFVBQVNDLFVBQVQsR0FBc0I7QUFDckJWLEtBQUcsQ0FBQyxNQUFELEVBQVMsT0FBVCxDQURrQjtBQUVyQkYsUUFBTSxDQUFDLFdBQUQsQ0FGZTtBQUdyQmEsT0FBSyxDQUFDLEtBQUQsRUFBUSxLQUFSO0FBSGdCLEVBQXRCOztBQU1BLEtBQU1DLE9BQU8sRUFBQ3hCLElBQUQsRUFBSVcsc0JBQUosRUFBZ0JVLGtCQUFoQixFQUFiOztBQUVBLFFBQU8sd0JBQ0xJLEdBREssdUJBQ0tELElBREwsRUFFTEMsR0FGSyxnQ0FHTEMsT0FISyxDQUdHbkMsTUFISCxFQUlMb0MsUUFKRjtBQUtBOztBQUVELFNBQVN0QixlQUFULENBQXlCdUIsS0FBekIsRUFBZ0M7QUFDL0IsS0FBTUMsWUFBWUQsTUFBTUUsT0FBeEI7QUFDQSxRQUFPO0FBQUMsV0FBRDtBQUFBO0FBQVlGLFFBQU1HO0FBQWxCLEVBQVA7QUFDQTs7QUFPRCxTQUFTM0IsY0FBVCxDQUF3QnlCLFNBQXhCLEVBQW1DRyxRQUFuQyxFQUE2QztBQUM1QyxVQUFTQyxjQUFULENBQXdCTCxLQUF4QixFQUErQjtBQUM5QixNQUFNRyxXQUFXLGdCQUFTRyxPQUFULENBQWlCTixNQUFNRyxRQUF2QixFQUNmSSxNQURlLENBQ1IsaUJBQVM7QUFDaEIsVUFBTyxRQUFPQyxLQUFQLHVEQUFPQSxLQUFQLE9BQWlCLFFBQWpCLElBQTZCLHNCQUFTSixRQUFULEVBQW1CSSxNQUFNUixLQUFOLENBQVlFLE9BQS9CLENBQXBDO0FBQ0EsR0FIZSxDQUFqQjtBQUlBLFNBQU87QUFBQyxZQUFEO0FBQWVGLFFBQWY7QUFBdUJHO0FBQXZCLEdBQVA7QUFDQTs7QUFNRCxRQUFPRSxjQUFQO0FBQ0EiLCJmaWxlIjoicmVuZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdoIGZyb20gJ2hhc3QtdXRpbC1zYW5pdGl6ZS9saWIvZ2l0aHViJztcbmltcG9ydCB7aW5jbHVkZXMsIG1lcmdlfSBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IFJlYWN0LCB7UHJvcFR5cGVzIGFzIHQsIENoaWxkcmVufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgcmVtYXJrIGZyb20gJ3JlbWFyayc7XG5pbXBvcnQgZW1vamkgZnJvbSAncmVtYXJrLWdlbW9qaS10by1lbW9qaSc7XG5pbXBvcnQgdmRvbSBmcm9tICdyZW1hcmstdmRvbSc7XG5cbmltcG9ydCBNYXJrZG93bkxpbmsgZnJvbSAnLi9tYXJrZG93bi1saW5rJztcbmltcG9ydCBNYXJrZG93bkNvZGUgZnJvbSAnLi9tYXJrZG93bi1jb2RlJztcbmltcG9ydCBNYXJrZG93bkhlYWRsaW5lIGZyb20gJy4vbWFya2Rvd24taGVhZGxpbmUnO1xuaW1wb3J0IHdyYXAgZnJvbSAnLi93cmFwJztcblxuZXhwb3J0IGRlZmF1bHQgcmVuZGVyO1xuXG5mdW5jdGlvbiByZW5kZXIoc291cmNlLCBvcHRpb25zKSB7XG5cdGNvbnN0IHtiYXNlLCBoYXNoLCBoaWdobGlnaHRzLCBoaWdobGlnaHQsIHF1ZXJ5LCBwYXRobmFtZSwgb25IYXNoQ2hhbmdlfSA9IG9wdGlvbnM7XG5cdGNvbnN0IGggPSBSZWFjdC5jcmVhdGVFbGVtZW50O1xuXHRjb25zdCBoZWFkbGluZSA9IHdyYXAoTWFya2Rvd25IZWFkbGluZSk7XG5cblx0Y29uc3QgdGFibGUgPSB3cmFwKHN0cmljdENoaWxkcmVuKE1hcmtkb3duR2VuZXJpYywgWyd0aGVhZCcsICd0Ym9keSddKSk7XG5cdGNvbnN0IHRib2R5ID0gd3JhcChzdHJpY3RDaGlsZHJlbihNYXJrZG93bkdlbmVyaWMsIFsndHInXSkpO1xuXHRjb25zdCB0ciA9IHdyYXAoc3RyaWN0Q2hpbGRyZW4oTWFya2Rvd25HZW5lcmljLCBbJ3RkJywgJ3RoJ10pKTtcblx0Y29uc3QgdGQgPSB3cmFwKE1hcmtkb3duR2VuZXJpYyk7XG5cblx0Y29uc3QgbGluayA9IHtiYXNlLCBoYXNoLCBxdWVyeSwgcGF0aG5hbWUsIG9uSGFzaENoYW5nZX07XG5cdGNvbnN0IGNvZGUgPSB7aGlnaGxpZ2h0cywgaGlnaGxpZ2h0fTtcblxuXHRjb25zdCBjb21wb25lbnRzID0ge1xuXHRcdGE6IHdyYXAoTWFya2Rvd25MaW5rLCBsaW5rKSxcblx0XHRjb2RlOiB3cmFwKE1hcmtkb3duQ29kZSwgY29kZSksXG5cdFx0aDE6IGhlYWRsaW5lLFxuXHRcdGgyOiBoZWFkbGluZSxcblx0XHRoMzogaGVhZGxpbmUsXG5cdFx0aDQ6IGhlYWRsaW5lLFxuXHRcdGg1OiBoZWFkbGluZSxcblx0XHRoNjogaGVhZGxpbmUsXG5cdFx0dGFibGUsXG5cdFx0dGhlYWQ6IHRib2R5LFxuXHRcdHRib2R5LFxuXHRcdHRyLFxuXHRcdHRoOiB0ZCxcblx0XHR0ZFxuXHR9O1xuXG5cdGNvbnN0IHNhbml0aXplID0gbWVyZ2Uoe30sIGdoKTtcblx0c2FuaXRpemUuYXR0cmlidXRlcyA9IHtcblx0XHRhOiBbJ2hyZWYnLCAndGl0bGUnXSxcblx0XHRjb2RlOiBbJ2NsYXNzTmFtZSddLFxuXHRcdGltZzogWydzcmMnLCAnYWx0J11cblx0fTtcblxuXHRjb25zdCBvcHRzID0ge2gsIGNvbXBvbmVudHMsIHNhbml0aXplfTtcblxuXHRyZXR1cm4gcmVtYXJrKClcblx0XHQudXNlKHZkb20sIG9wdHMpXG5cdFx0LnVzZShlbW9qaSlcblx0XHQucHJvY2Vzcyhzb3VyY2UpXG5cdFx0LmNvbnRlbnRzO1xufVxuXG5mdW5jdGlvbiBNYXJrZG93bkdlbmVyaWMocHJvcHMpIHtcblx0Y29uc3QgQ29tcG9uZW50ID0gcHJvcHMudGFnTmFtZTtcblx0cmV0dXJuIDxDb21wb25lbnQ+e3Byb3BzLmNoaWxkcmVufTwvQ29tcG9uZW50Pjtcbn1cblxuTWFya2Rvd25HZW5lcmljLnByb3BUeXBlcyA9IHtcblx0dGFnTmFtZTogdC5zdHJpbmcsXG5cdGNoaWxkcmVuOiB0LmFueVxufTtcblxuZnVuY3Rpb24gc3RyaWN0Q2hpbGRyZW4oQ29tcG9uZW50LCB0YWdOYW1lcykge1xuXHRmdW5jdGlvbiBTdHJpY3RDaGlsZHJlbihwcm9wcykge1xuXHRcdGNvbnN0IGNoaWxkcmVuID0gQ2hpbGRyZW4udG9BcnJheShwcm9wcy5jaGlsZHJlbilcblx0XHRcdC5maWx0ZXIoY2hpbGQgPT4ge1xuXHRcdFx0XHRyZXR1cm4gdHlwZW9mIGNoaWxkID09PSAnb2JqZWN0JyAmJiBpbmNsdWRlcyh0YWdOYW1lcywgY2hpbGQucHJvcHMudGFnTmFtZSk7XG5cdFx0XHR9KTtcblx0XHRyZXR1cm4gPENvbXBvbmVudCB7Li4ucHJvcHN9PntjaGlsZHJlbn08L0NvbXBvbmVudD47XG5cdH1cblxuXHRTdHJpY3RDaGlsZHJlbi5wcm9wVHlwZXMgPSB7XG5cdFx0Y2hpbGRyZW46IHQuYW55XG5cdH07XG5cblx0cmV0dXJuIFN0cmljdENoaWxkcmVuO1xufVxuIl19