1 | ;
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _extends2 = require('babel-runtime/helpers/extends');
|
8 |
|
9 | var _extends3 = _interopRequireDefault(_extends2);
|
10 |
|
11 | var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
|
12 |
|
13 | var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
|
14 |
|
15 | var _getPrototypeOf = require('babel-runtime/core-js/object/get-prototype-of');
|
16 |
|
17 | var _getPrototypeOf2 = _interopRequireDefault(_getPrototypeOf);
|
18 |
|
19 | var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
|
20 |
|
21 | var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
|
22 |
|
23 | var _createClass2 = require('babel-runtime/helpers/createClass');
|
24 |
|
25 | var _createClass3 = _interopRequireDefault(_createClass2);
|
26 |
|
27 | var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
|
28 |
|
29 | var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
|
30 |
|
31 | var _inherits2 = require('babel-runtime/helpers/inherits');
|
32 |
|
33 | var _inherits3 = _interopRequireDefault(_inherits2);
|
34 |
|
35 | var _react = require('react');
|
36 |
|
37 | var _react2 = _interopRequireDefault(_react);
|
38 |
|
39 | var _PropTypes = require('react-router/lib/PropTypes');
|
40 |
|
41 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
42 |
|
43 | /**
|
44 | * @copyright 2016-present, Sitegen team
|
45 | */
|
46 |
|
47 | var Link = function (_React$Component) {
|
48 | (0, _inherits3.default)(Link, _React$Component);
|
49 |
|
50 | function Link() {
|
51 | var _Object$getPrototypeO;
|
52 |
|
53 | var _temp, _this, _ret;
|
54 |
|
55 | (0, _classCallCheck3.default)(this, Link);
|
56 |
|
57 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
58 | args[_key] = arguments[_key];
|
59 | }
|
60 |
|
61 | return _ret = (_temp = (_this = (0, _possibleConstructorReturn3.default)(this, (_Object$getPrototypeO = (0, _getPrototypeOf2.default)(Link)).call.apply(_Object$getPrototypeO, [this].concat(args))), _this), _this.onClick = function (event) {
|
62 | var allowTransition = true;
|
63 |
|
64 | if (_this.props.onClick) {
|
65 | _this.props.onClick(event);
|
66 | }
|
67 |
|
68 | if (isModifiedEvent(event) || !isLeftClickEvent(event)) {
|
69 | return;
|
70 | }
|
71 |
|
72 | if (event.defaultPrevented === true) {
|
73 | allowTransition = false;
|
74 | }
|
75 |
|
76 | // If target prop is set (e.g. to "_blank") let browser handle link.
|
77 | /* istanbul ignore if: untestable with Karma */
|
78 | if (_this.props.target) {
|
79 | if (!allowTransition) {
|
80 | event.preventDefault();
|
81 | }
|
82 |
|
83 | return;
|
84 | }
|
85 |
|
86 | event.preventDefault();
|
87 |
|
88 | if (allowTransition) {
|
89 | var href = _this.href;
|
90 |
|
91 | if (href) {
|
92 | _this.context.router.push({ pathname: href });
|
93 | }
|
94 | }
|
95 | }, _temp), (0, _possibleConstructorReturn3.default)(_this, _ret);
|
96 | }
|
97 |
|
98 | (0, _createClass3.default)(Link, [{
|
99 | key: 'render',
|
100 | value: function render() {
|
101 | var _props = this.props;
|
102 | var Component = _props.Component;
|
103 | var className = _props.className;
|
104 | var activeClassName = _props.activeClassName;
|
105 | var style = _props.style;
|
106 | var activeStyle = _props.activeStyle;
|
107 | var props = (0, _objectWithoutProperties3.default)(_props, ['Component', 'className', 'activeClassName', 'style', 'activeStyle']);
|
108 |
|
109 | var href = this.href;
|
110 | var router = this.context.router;
|
111 |
|
112 | var external = isExternal(href);
|
113 | var active = !external && href && router.isActive({ pathname: href }, true);
|
114 | if (active && activeClassName) {
|
115 | className = (className || '') + ' ' + activeClassName;
|
116 | }
|
117 | if (active && activeStyle) {
|
118 | style = (0, _extends3.default)({}, style, { activeStyle: activeStyle });
|
119 | }
|
120 | return _react2.default.createElement(Component, (0, _extends3.default)({}, props, {
|
121 | href: href,
|
122 | active: active,
|
123 | style: style,
|
124 | className: className,
|
125 | onClick: !external && this.onClick
|
126 | }));
|
127 | }
|
128 | }, {
|
129 | key: 'href',
|
130 | get: function get() {
|
131 | var href = this.props.href;
|
132 |
|
133 | if (href && typeof __webpack_public_path__ !== 'undefined' && !isExternal(href)) {
|
134 | href = join(__webpack_public_path__, href);
|
135 | }
|
136 | return href;
|
137 | }
|
138 | }]);
|
139 | return Link;
|
140 | }(_react2.default.Component);
|
141 |
|
142 | Link.contextTypes = { router: _PropTypes.routerShape };
|
143 | Link.defaultProps = {
|
144 | Component: 'a'
|
145 | };
|
146 | exports.default = Link;
|
147 |
|
148 |
|
149 | function isLeftClickEvent(event) {
|
150 | return event.button === 0;
|
151 | }
|
152 |
|
153 | function isModifiedEvent(event) {
|
154 | return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
|
155 | }
|
156 |
|
157 | function isExternal(href) {
|
158 | return (/^(https?|mailto):/.exec(href)
|
159 | );
|
160 | }
|
161 |
|
162 | function join() {
|
163 | for (var _len2 = arguments.length, segments = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
164 | segments[_key2] = arguments[_key2];
|
165 | }
|
166 |
|
167 | return normalize(segments.join('/'));
|
168 | }
|
169 |
|
170 | function normalize(href) {
|
171 | return href.replace(new RegExp('/+', 'g'), '/');
|
172 | }
|
173 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9hbmRyZXlwb3BwL1dvcmtzcGFjZS9zaXRlZ2VuL3NyYy9MaW5rLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFJQTs7OztBQUNBOzs7Ozs7OztJQUVxQixJOzs7Ozs7Ozs7Ozs7Ozt3TkFpRG5CLE8sR0FBVSxVQUFDLEtBQUQsRUFBVztBQUNuQixVQUFJLGtCQUFrQixJQUF0Qjs7QUFFQSxVQUFJLE1BQUssS0FBTCxDQUFXLE9BQWYsRUFBd0I7QUFDdEIsY0FBSyxLQUFMLENBQVcsT0FBWCxDQUFtQixLQUFuQjtBQUNEOztBQUVELFVBQUksZ0JBQWdCLEtBQWhCLEtBQTBCLENBQUMsaUJBQWlCLEtBQWpCLENBQS9CLEVBQXdEO0FBQ3REO0FBQ0Q7O0FBRUQsVUFBSSxNQUFNLGdCQUFOLEtBQTJCLElBQS9CLEVBQXFDO0FBQ25DLDBCQUFrQixLQUFsQjtBQUNEOzs7O0FBSUQsVUFBSSxNQUFLLEtBQUwsQ0FBVyxNQUFmLEVBQXVCO0FBQ3JCLFlBQUksQ0FBQyxlQUFMLEVBQXNCO0FBQ3BCLGdCQUFNLGNBQU47QUFDRDs7QUFFRDtBQUNEOztBQUVELFlBQU0sY0FBTjs7QUFFQSxVQUFJLGVBQUosRUFBcUI7QUFDbkIsWUFBSSxPQUFPLE1BQUssSUFBaEI7O0FBRUEsWUFBSSxJQUFKLEVBQVU7QUFDUixnQkFBSyxPQUFMLENBQWEsTUFBYixDQUFvQixJQUFwQixDQUF5QixFQUFDLFVBQVUsSUFBWCxFQUF6QjtBQUNEO0FBQ0Y7QUFDRixLOzs7Ozs2QkEzRVE7QUFBQSxtQkFNSCxLQUFLLEtBTkY7QUFBQSxVQUVMLFNBRkssVUFFTCxTQUZLO0FBQUEsVUFHTCxTQUhLLFVBR0wsU0FISztBQUFBLFVBR00sZUFITixVQUdNLGVBSE47QUFBQSxVQUlMLEtBSkssVUFJTCxLQUpLO0FBQUEsVUFJRSxXQUpGLFVBSUUsV0FKRjtBQUFBLFVBS0YsS0FMRTs7QUFPUCxVQUFJLE9BQU8sS0FBSyxJQUFoQjtBQVBPLFVBUUYsTUFSRSxHQVFRLEtBQUssT0FSYixDQVFGLE1BUkU7O0FBU1AsVUFBSSxXQUFXLFdBQVcsSUFBWCxDQUFmO0FBQ0EsVUFBSSxTQUFTLENBQUMsUUFBRCxJQUFhLElBQWIsSUFBcUIsT0FBTyxRQUFQLENBQWdCLEVBQUMsVUFBVSxJQUFYLEVBQWhCLEVBQWtDLElBQWxDLENBQWxDO0FBQ0EsVUFBSSxVQUFVLGVBQWQsRUFBK0I7QUFDN0Isb0JBQVksQ0FBQyxhQUFhLEVBQWQsSUFBb0IsR0FBcEIsR0FBMEIsZUFBdEM7QUFDRDtBQUNELFVBQUksVUFBVSxXQUFkLEVBQTJCO0FBQ3pCLDJDQUFZLEtBQVosSUFBbUIsd0JBQW5CO0FBQ0Q7QUFDRCxhQUNFLDhCQUFDLFNBQUQsNkJBQ00sS0FETjtBQUVFLGNBQU0sSUFGUjtBQUdFLGdCQUFRLE1BSFY7QUFJRSxlQUFPLEtBSlQ7QUFLRSxtQkFBVyxTQUxiO0FBTUUsaUJBQVMsQ0FBQyxRQUFELElBQWEsS0FBSztBQU43QixTQURGO0FBVUQ7Ozt3QkFFVTtBQUFBLFVBQ0osSUFESSxHQUNJLEtBQUssS0FEVCxDQUNKLElBREk7O0FBRVQsVUFDSSxRQUNDLE9BQU8sdUJBQVAsS0FBbUMsV0FEcEMsSUFFQSxDQUFDLFdBQVcsSUFBWCxDQUhMLEVBSUU7QUFDQSxlQUFPLEtBQUssdUJBQUwsRUFBOEIsSUFBOUIsQ0FBUDtBQUNEO0FBQ0QsYUFBTyxJQUFQO0FBQ0Q7OztFQS9DK0IsZ0JBQU0sUzs7QUFBbkIsSSxDQUVaLFksR0FBZSxFQUFDLDhCQUFELEU7QUFGSCxJLENBSVosWSxHQUFlO0FBQ3BCLGFBQVc7QUFEUyxDO2tCQUpILEk7OztBQXNGckIsU0FBUyxnQkFBVCxDQUEwQixLQUExQixFQUFpQztBQUMvQixTQUFPLE1BQU0sTUFBTixLQUFpQixDQUF4QjtBQUNEOztBQUVELFNBQVMsZUFBVCxDQUF5QixLQUF6QixFQUFnQztBQUM5QixTQUFPLENBQUMsRUFBRSxNQUFNLE9BQU4sSUFBaUIsTUFBTSxNQUF2QixJQUFpQyxNQUFNLE9BQXZDLElBQWtELE1BQU0sUUFBMUQsQ0FBUjtBQUNEOztBQUVELFNBQVMsVUFBVCxDQUFvQixJQUFwQixFQUEwQjtBQUN4QixTQUFPLHFCQUFvQixJQUFwQixDQUF5QixJQUF6QjtBQUFQO0FBQ0Q7O0FBRUQsU0FBUyxJQUFULEdBQTJCO0FBQUEscUNBQVYsUUFBVTtBQUFWLFlBQVU7QUFBQTs7QUFDekIsU0FBTyxVQUFVLFNBQVMsSUFBVCxDQUFjLEdBQWQsQ0FBVixDQUFQO0FBQ0Q7O0FBRUQsU0FBUyxTQUFULENBQW1CLElBQW5CLEVBQXlCO0FBQ3ZCLFNBQU8sS0FBSyxPQUFMLENBQWEsSUFBSSxNQUFKLENBQVcsSUFBWCxFQUFpQixHQUFqQixDQUFiLEVBQXFDLEdBQXJDLENBQVA7QUFDRCIsImZpbGUiOiJMaW5rLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAY29weXJpZ2h0IDIwMTYtcHJlc2VudCwgU2l0ZWdlbiB0ZWFtXG4gKi9cblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7cm91dGVyU2hhcGV9IGZyb20gJ3JlYWN0LXJvdXRlci9saWIvUHJvcFR5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGluayBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG5cbiAgc3RhdGljIGNvbnRleHRUeXBlcyA9IHtyb3V0ZXI6IHJvdXRlclNoYXBlfTtcblxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIENvbXBvbmVudDogJ2EnLFxuICB9O1xuXG4gIHJlbmRlcigpIHtcbiAgICBsZXQge1xuICAgICAgQ29tcG9uZW50LFxuICAgICAgY2xhc3NOYW1lLCBhY3RpdmVDbGFzc05hbWUsXG4gICAgICBzdHlsZSwgYWN0aXZlU3R5bGUsXG4gICAgICAuLi5wcm9wc1xuICAgIH0gPSB0aGlzLnByb3BzO1xuICAgIGxldCBocmVmID0gdGhpcy5ocmVmO1xuICAgIGxldCB7cm91dGVyfSA9IHRoaXMuY29udGV4dDtcbiAgICBsZXQgZXh0ZXJuYWwgPSBpc0V4dGVybmFsKGhyZWYpO1xuICAgIGxldCBhY3RpdmUgPSAhZXh0ZXJuYWwgJiYgaHJlZiAmJiByb3V0ZXIuaXNBY3RpdmUoe3BhdGhuYW1lOiBocmVmfSwgdHJ1ZSk7XG4gICAgaWYgKGFjdGl2ZSAmJiBhY3RpdmVDbGFzc05hbWUpIHtcbiAgICAgIGNsYXNzTmFtZSA9IChjbGFzc05hbWUgfHwgJycpICsgJyAnICsgYWN0aXZlQ2xhc3NOYW1lO1xuICAgIH1cbiAgICBpZiAoYWN0aXZlICYmIGFjdGl2ZVN0eWxlKSB7XG4gICAgICBzdHlsZSA9IHsuLi5zdHlsZSwgYWN0aXZlU3R5bGV9O1xuICAgIH1cbiAgICByZXR1cm4gKFxuICAgICAgPENvbXBvbmVudFxuICAgICAgICB7Li4ucHJvcHN9XG4gICAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICAgIGFjdGl2ZT17YWN0aXZlfVxuICAgICAgICBzdHlsZT17c3R5bGV9XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICBvbkNsaWNrPXshZXh0ZXJuYWwgJiYgdGhpcy5vbkNsaWNrfVxuICAgICAgICAvPlxuICAgICk7XG4gIH1cblxuICBnZXQgaHJlZigpIHtcbiAgICBsZXQge2hyZWZ9ID0gdGhpcy5wcm9wcztcbiAgICBpZiAoXG4gICAgICAgIGhyZWYgJiZcbiAgICAgICAgKHR5cGVvZiBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyAhPT0gJ3VuZGVmaW5lZCcpICYmXG4gICAgICAgICFpc0V4dGVybmFsKGhyZWYpXG4gICAgKSB7XG4gICAgICBocmVmID0gam9pbihfX3dlYnBhY2tfcHVibGljX3BhdGhfXywgaHJlZik7XG4gICAgfVxuICAgIHJldHVybiBocmVmO1xuICB9XG5cbiAgb25DbGljayA9IChldmVudCkgPT4ge1xuICAgIGxldCBhbGxvd1RyYW5zaXRpb24gPSB0cnVlO1xuXG4gICAgaWYgKHRoaXMucHJvcHMub25DbGljaykge1xuICAgICAgdGhpcy5wcm9wcy5vbkNsaWNrKGV2ZW50KTtcbiAgICB9XG5cbiAgICBpZiAoaXNNb2RpZmllZEV2ZW50KGV2ZW50KSB8fCAhaXNMZWZ0Q2xpY2tFdmVudChldmVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnQuZGVmYXVsdFByZXZlbnRlZCA9PT0gdHJ1ZSkge1xuICAgICAgYWxsb3dUcmFuc2l0aW9uID0gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgdGFyZ2V0IHByb3AgaXMgc2V0IChlLmcuIHRvIFwiX2JsYW5rXCIpIGxldCBicm93c2VyIGhhbmRsZSBsaW5rLlxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZjogdW50ZXN0YWJsZSB3aXRoIEthcm1hICovXG4gICAgaWYgKHRoaXMucHJvcHMudGFyZ2V0KSB7XG4gICAgICBpZiAoIWFsbG93VHJhbnNpdGlvbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgIGlmIChhbGxvd1RyYW5zaXRpb24pIHtcbiAgICAgIGxldCBocmVmID0gdGhpcy5ocmVmO1xuXG4gICAgICBpZiAoaHJlZikge1xuICAgICAgICB0aGlzLmNvbnRleHQucm91dGVyLnB1c2goe3BhdGhuYW1lOiBocmVmfSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0xlZnRDbGlja0V2ZW50KGV2ZW50KSB7XG4gIHJldHVybiBldmVudC5idXR0b24gPT09IDA7XG59XG5cbmZ1bmN0aW9uIGlzTW9kaWZpZWRFdmVudChldmVudCkge1xuICByZXR1cm4gISEoZXZlbnQubWV0YUtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQuY3RybEtleSB8fCBldmVudC5zaGlmdEtleSk7XG59XG5cbmZ1bmN0aW9uIGlzRXh0ZXJuYWwoaHJlZikge1xuICByZXR1cm4gL14oaHR0cHM/fG1haWx0byk6Ly5leGVjKGhyZWYpO1xufVxuXG5mdW5jdGlvbiBqb2luKC4uLnNlZ21lbnRzKSB7XG4gIHJldHVybiBub3JtYWxpemUoc2VnbWVudHMuam9pbignLycpKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplKGhyZWYpIHtcbiAgcmV0dXJuIGhyZWYucmVwbGFjZShuZXcgUmVnRXhwKCcvKycsICdnJyksICAnLycpO1xufVxuIl19 |
\ | No newline at end of file |