Files
30-seconds-of-code/node_modules/gatsby-plugin-google-analytics/index.js
2019-08-20 15:52:05 +02:00

58 lines
1.5 KiB
JavaScript

"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
exports.__esModule = true;
exports.OutboundLink = OutboundLink;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireDefault(require("react"));
var _propTypes = _interopRequireDefault(require("prop-types"));
function OutboundLink(props) {
return _react.default.createElement("a", (0, _extends2.default)({}, props, {
onClick: function onClick(e) {
if (typeof props.onClick === "function") {
props.onClick(e);
}
var redirect = true;
if (e.button !== 0 || e.altKey || e.ctrlKey || e.metaKey || e.shiftKey || e.defaultPrevented) {
redirect = false;
}
if (props.target && props.target.toLowerCase() !== "_self") {
redirect = false;
}
if (window.ga) {
window.ga("send", "event", {
eventCategory: "Outbound Link",
eventAction: "click",
eventLabel: props.href,
transport: redirect ? "beacon" : "",
hitCallback: function hitCallback() {
if (redirect) {
document.location = props.href;
}
}
});
} else {
if (redirect) {
document.location = props.href;
}
}
return false;
}
}));
}
OutboundLink.propTypes = {
href: _propTypes.default.string,
target: _propTypes.default.string,
onClick: _propTypes.default.func
};