patternplate-client
Version:
Universal javascript client application for patternplate
122 lines (92 loc) • 9.23 kB
JavaScript
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = undefined;
var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
var _inherits2 = require('babel-runtime/helpers/inherits');
var _inherits3 = _interopRequireDefault(_inherits2);
var _class, _temp;
var _url = require('url');
var _url2 = _interopRequireDefault(_url);
var _react = require('react');
var _react2 = _interopRequireDefault(_react);
var _reactRouter = require('@marionebl/react-router');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var MarkdownLink = (_temp = _class = function (_Component) {
(0, _inherits3.default)(MarkdownLink, _Component);
function MarkdownLink() {
(0, _classCallCheck3.default)(this, MarkdownLink);
return (0, _possibleConstructorReturn3.default)(this, (MarkdownLink.__proto__ || (0, _getPrototypeOf2.default)(MarkdownLink)).apply(this, arguments));
}
(0, _createClass3.default)(MarkdownLink, [{
key: 'componentDidMount',
value: function componentDidMount() {
var props = this.props;
var parsed = _url2.default.parse(props.href);
var pathname = parsed.pathname || '/';
var hasHash = Boolean(parsed.hash);
var isSamePathname = !parsed.pathname || props.pathname === pathname;
var isSameHash = hasHash && isSamePathname && props.hash === parsed.hash;
if (isSameHash) {
props.onHashChange(parsed.hash.slice(1));
}
}
}, {
key: 'render',
value: function render() {
var props = this.props;
var parsed = _url2.default.parse(props.href);
var pathname = parsed.pathname || '/';
var isAbsolute = Boolean(parsed.protocol);
if (isAbsolute) {
return _react2.default.createElement(
'a',
{
href: props.href,
className: 'link link--external',
rel: 'noopener',
target: '_blank',
title: props.title || 'Open ' + props.href + ' in a new tab'
},
props.children
);
}
var hasHash = Boolean(parsed.hash);
var isSamePathname = !parsed.pathname || props.pathname === pathname;
var to = {
pathname: hasHash && isSamePathname ? '' + props.base : '/' + [props.base, parsed.pathname].join('').split('/').filter(Boolean).join('/'),
query: props.query,
hash: parsed.hash
};
var title = hasHash && isSamePathname ? 'Jump to ' + to.hash.slice(1) : 'Navigate to ' + to.pathname;
var onClick = function onClick() {
if (hasHash && isSamePathname) {
props.onHashChange(to.hash.slice(1));
}
};
return _react2.default.createElement(
_reactRouter.Link,
{
onClick: onClick,
title: props.title || title,
to: to
},
props.children
);
}
}]);
return MarkdownLink;
}(_react.Component), _class.defaultProps = {
onHashChange: function onHashChange() {}
}, _temp);
exports.default = MarkdownLink;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NvdXJjZS9hcHBsaWNhdGlvbi9jb21wb25lbnRzL2NvbW1vbi9tYXJrZG93bi9tYXJrZG93bi1saW5rLmpzIl0sIm5hbWVzIjpbIk1hcmtkb3duTGluayIsInByb3BzIiwicGFyc2VkIiwicGFyc2UiLCJocmVmIiwicGF0aG5hbWUiLCJoYXNIYXNoIiwiQm9vbGVhbiIsImhhc2giLCJpc1NhbWVQYXRobmFtZSIsImlzU2FtZUhhc2giLCJvbkhhc2hDaGFuZ2UiLCJzbGljZSIsImlzQWJzb2x1dGUiLCJwcm90b2NvbCIsInRpdGxlIiwiY2hpbGRyZW4iLCJ0byIsImJhc2UiLCJqb2luIiwic3BsaXQiLCJmaWx0ZXIiLCJxdWVyeSIsIm9uQ2xpY2siLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0lBRXFCQSxZOzs7Ozs7Ozs7O3NDQWdCQTtBQUFBLE9BQ1pDLEtBRFksR0FDSCxJQURHLENBQ1pBLEtBRFk7O0FBRW5CLE9BQU1DLFNBQVMsY0FBSUMsS0FBSixDQUFVRixNQUFNRyxJQUFoQixDQUFmO0FBQ0EsT0FBTUMsV0FBV0gsT0FBT0csUUFBUCxJQUFtQixHQUFwQztBQUNBLE9BQU1DLFVBQVVDLFFBQVFMLE9BQU9NLElBQWYsQ0FBaEI7QUFDQSxPQUFNQyxpQkFBaUIsQ0FBQ1AsT0FBT0csUUFBUixJQUFvQkosTUFBTUksUUFBTixLQUFtQkEsUUFBOUQ7QUFDQSxPQUFNSyxhQUFhSixXQUFXRyxjQUFYLElBQTZCUixNQUFNTyxJQUFOLEtBQWVOLE9BQU9NLElBQXRFOztBQUVBLE9BQUlFLFVBQUosRUFBZ0I7QUFDZlQsVUFBTVUsWUFBTixDQUFtQlQsT0FBT00sSUFBUCxDQUFZSSxLQUFaLENBQWtCLENBQWxCLENBQW5CO0FBQ0E7QUFDRDs7OzJCQUVRO0FBQUEsT0FDRFgsS0FEQyxHQUNRLElBRFIsQ0FDREEsS0FEQzs7QUFFUixPQUFNQyxTQUFTLGNBQUlDLEtBQUosQ0FBVUYsTUFBTUcsSUFBaEIsQ0FBZjtBQUNBLE9BQU1DLFdBQVdILE9BQU9HLFFBQVAsSUFBbUIsR0FBcEM7QUFDQSxPQUFNUSxhQUFhTixRQUFRTCxPQUFPWSxRQUFmLENBQW5COztBQUVBLE9BQUlELFVBQUosRUFBZ0I7QUFDZixXQUNDO0FBQUE7QUFBQTtBQUNDLFlBQU1aLE1BQU1HLElBRGI7QUFFQyxpQkFBVSxxQkFGWDtBQUdDLFdBQUksVUFITDtBQUlDLGNBQU8sUUFKUjtBQUtDLGFBQU9ILE1BQU1jLEtBQU4sY0FBdUJkLE1BQU1HLElBQTdCO0FBTFI7QUFPRUgsV0FBTWU7QUFQUixLQUREO0FBV0E7O0FBRUQsT0FBTVYsVUFBVUMsUUFBUUwsT0FBT00sSUFBZixDQUFoQjtBQUNBLE9BQU1DLGlCQUFpQixDQUFDUCxPQUFPRyxRQUFSLElBQW9CSixNQUFNSSxRQUFOLEtBQW1CQSxRQUE5RDs7QUFFQSxPQUFNWSxLQUFLO0FBQ1ZaLGNBQVVDLFdBQVdHLGNBQVgsUUFDTlIsTUFBTWlCLElBREEsU0FFTCxDQUFDakIsTUFBTWlCLElBQVAsRUFBYWhCLE9BQU9HLFFBQXBCLEVBQThCYyxJQUE5QixDQUFtQyxFQUFuQyxFQUF1Q0MsS0FBdkMsQ0FBNkMsR0FBN0MsRUFBa0RDLE1BQWxELENBQXlEZCxPQUF6RCxFQUFrRVksSUFBbEUsQ0FBdUUsR0FBdkUsQ0FISztBQUlWRyxXQUFPckIsTUFBTXFCLEtBSkg7QUFLVmQsVUFBTU4sT0FBT007QUFMSCxJQUFYOztBQVFBLE9BQU1PLFFBQVFULFdBQVdHLGNBQVgsZ0JBQ0ZRLEdBQUdULElBQUgsQ0FBUUksS0FBUixDQUFjLENBQWQsQ0FERSxvQkFFRUssR0FBR1osUUFGbkI7O0FBSUEsT0FBTWtCLFVBQVUsU0FBVkEsT0FBVSxHQUFNO0FBQ3JCLFFBQUlqQixXQUFXRyxjQUFmLEVBQStCO0FBQzlCUixXQUFNVSxZQUFOLENBQW1CTSxHQUFHVCxJQUFILENBQVFJLEtBQVIsQ0FBYyxDQUFkLENBQW5CO0FBQ0E7QUFDRCxJQUpEOztBQU1BLFVBQ0M7QUFBQTtBQUFBO0FBQ0MsY0FBU1csT0FEVjtBQUVDLFlBQU90QixNQUFNYyxLQUFOLElBQWVBLEtBRnZCO0FBR0MsU0FBSUU7QUFITDtBQUtFaEIsVUFBTWU7QUFMUixJQUREO0FBU0E7Ozs0QkFuRU1RLFksR0FBZTtBQUNyQmIsZUFBYyx3QkFBTSxDQUFFO0FBREQsQztrQkFaRlgsWSIsImZpbGUiOiJtYXJrZG93bi1saW5rLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHVybCBmcm9tICd1cmwnO1xuaW1wb3J0IFJlYWN0LCB7Q29tcG9uZW50LCBQcm9wVHlwZXMgYXMgdH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHtMaW5rfSBmcm9tICdAbWFyaW9uZWJsL3JlYWN0LXJvdXRlcic7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1hcmtkb3duTGluayBleHRlbmRzIENvbXBvbmVudCB7XG5cdHN0YXRpYyBwcm9wVHlwZXMgPSB7XG5cdFx0YmFzZTogdC5zdHJpbmcuaXNSZXF1aXJlZCxcblx0XHRjaGlsZHJlbjogdC5hbnksXG5cdFx0aGFzaDogdC5zdHJpbmcuaXNSZXF1aXJlZCxcblx0XHRocmVmOiB0LnN0cmluZy5pc1JlcXVpcmVkLFxuXHRcdG9uSGFzaENoYW5nZTogdC5mdW5jLmlzUmVxdWlyZWQsXG5cdFx0cGF0aG5hbWU6IHQuc3RyaW5nLmlzUmVxdWlyZWQsXG5cdFx0cXVlcnk6IHQub2JqZWN0LmlzUmVxdWlyZWQsXG5cdFx0dGl0bGU6IHQuc3RyaW5nXG5cdH07XG5cblx0c3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcblx0XHRvbkhhc2hDaGFuZ2U6ICgpID0+IHt9XG5cdH07XG5cblx0Y29tcG9uZW50RGlkTW91bnQoKSB7XG5cdFx0Y29uc3Qge3Byb3BzfSA9IHRoaXM7XG5cdFx0Y29uc3QgcGFyc2VkID0gdXJsLnBhcnNlKHByb3BzLmhyZWYpO1xuXHRcdGNvbnN0IHBhdGhuYW1lID0gcGFyc2VkLnBhdGhuYW1lIHx8ICcvJztcblx0XHRjb25zdCBoYXNIYXNoID0gQm9vbGVhbihwYXJzZWQuaGFzaCk7XG5cdFx0Y29uc3QgaXNTYW1lUGF0aG5hbWUgPSAhcGFyc2VkLnBhdGhuYW1lIHx8IHByb3BzLnBhdGhuYW1lID09PSBwYXRobmFtZTtcblx0XHRjb25zdCBpc1NhbWVIYXNoID0gaGFzSGFzaCAmJiBpc1NhbWVQYXRobmFtZSAmJiBwcm9wcy5oYXNoID09PSBwYXJzZWQuaGFzaDtcblxuXHRcdGlmIChpc1NhbWVIYXNoKSB7XG5cdFx0XHRwcm9wcy5vbkhhc2hDaGFuZ2UocGFyc2VkLmhhc2guc2xpY2UoMSkpO1xuXHRcdH1cblx0fVxuXG5cdHJlbmRlcigpIHtcblx0XHRjb25zdCB7cHJvcHN9ID0gdGhpcztcblx0XHRjb25zdCBwYXJzZWQgPSB1cmwucGFyc2UocHJvcHMuaHJlZik7XG5cdFx0Y29uc3QgcGF0aG5hbWUgPSBwYXJzZWQucGF0aG5hbWUgfHwgJy8nO1xuXHRcdGNvbnN0IGlzQWJzb2x1dGUgPSBCb29sZWFuKHBhcnNlZC5wcm90b2NvbCk7XG5cblx0XHRpZiAoaXNBYnNvbHV0ZSkge1xuXHRcdFx0cmV0dXJuIChcblx0XHRcdFx0PGFcblx0XHRcdFx0XHRocmVmPXtwcm9wcy5ocmVmfVxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImxpbmsgbGluay0tZXh0ZXJuYWxcIlxuXHRcdFx0XHRcdHJlbD1cIm5vb3BlbmVyXCJcblx0XHRcdFx0XHR0YXJnZXQ9XCJfYmxhbmtcIlxuXHRcdFx0XHRcdHRpdGxlPXtwcm9wcy50aXRsZSB8fCBgT3BlbiAke3Byb3BzLmhyZWZ9IGluIGEgbmV3IHRhYmB9XG5cdFx0XHRcdFx0PlxuXHRcdFx0XHRcdHtwcm9wcy5jaGlsZHJlbn1cblx0XHRcdFx0PC9hPlxuXHRcdFx0KTtcblx0XHR9XG5cblx0XHRjb25zdCBoYXNIYXNoID0gQm9vbGVhbihwYXJzZWQuaGFzaCk7XG5cdFx0Y29uc3QgaXNTYW1lUGF0aG5hbWUgPSAhcGFyc2VkLnBhdGhuYW1lIHx8IHByb3BzLnBhdGhuYW1lID09PSBwYXRobmFtZTtcblxuXHRcdGNvbnN0IHRvID0ge1xuXHRcdFx0cGF0aG5hbWU6IGhhc0hhc2ggJiYgaXNTYW1lUGF0aG5hbWUgP1xuXHRcdFx0XHRgJHtwcm9wcy5iYXNlfWAgOlxuXHRcdFx0XHRgLyR7W3Byb3BzLmJhc2UsIHBhcnNlZC5wYXRobmFtZV0uam9pbignJykuc3BsaXQoJy8nKS5maWx0ZXIoQm9vbGVhbikuam9pbignLycpfWAsXG5cdFx0XHRxdWVyeTogcHJvcHMucXVlcnksXG5cdFx0XHRoYXNoOiBwYXJzZWQuaGFzaFxuXHRcdH07XG5cblx0XHRjb25zdCB0aXRsZSA9IGhhc0hhc2ggJiYgaXNTYW1lUGF0aG5hbWUgP1xuXHRcdFx0YEp1bXAgdG8gJHt0by5oYXNoLnNsaWNlKDEpfWAgOlxuXHRcdFx0YE5hdmlnYXRlIHRvICR7dG8ucGF0aG5hbWV9YDtcblxuXHRcdGNvbnN0IG9uQ2xpY2sgPSAoKSA9PiB7XG5cdFx0XHRpZiAoaGFzSGFzaCAmJiBpc1NhbWVQYXRobmFtZSkge1xuXHRcdFx0XHRwcm9wcy5vbkhhc2hDaGFuZ2UodG8uaGFzaC5zbGljZSgxKSk7XG5cdFx0XHR9XG5cdFx0fTtcblxuXHRcdHJldHVybiAoXG5cdFx0XHQ8TGlua1xuXHRcdFx0XHRvbkNsaWNrPXtvbkNsaWNrfVxuXHRcdFx0XHR0aXRsZT17cHJvcHMudGl0bGUgfHwgdGl0bGV9XG5cdFx0XHRcdHRvPXt0b31cblx0XHRcdFx0PlxuXHRcdFx0XHR7cHJvcHMuY2hpbGRyZW59XG5cdFx0XHQ8L0xpbms+XG5cdFx0KTtcblx0fVxufVxuIl19