@atlaskit/renderer
Version:
Renderer component
90 lines (89 loc) • 3.99 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = Link;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _react = _interopRequireWildcard(require("react"));
var _platformFeatureFlagsReact = require("@atlaskit/platform-feature-flags-react");
var _utils = require("../../utils");
var _events = require("../../analytics/events");
var _analytics = require("@atlaskit/editor-common/analytics");
var _expValEquals = require("@atlaskit/tmp-editor-statsig/exp-val-equals");
var _analyticsNext = require("@atlaskit/analytics-next");
var _linkCompiled = require("./link-compiled");
var _linkEmotion = require("./link-emotion");
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
var LinkUrlMigration = (0, _platformFeatureFlagsReact.componentWithCondition)(function () {
return (0, _expValEquals.expValEquals)('platform_editor_renderer_static_css', 'isEnabled', true);
}, _linkCompiled.LinkUrlCompiled, _linkEmotion.LinkUrlEmotion);
/**
* Render an ADF link mark in renderer.
*/
function Link(props) {
var href = props.href,
target = props.target,
onSetLinkTarget = props.onSetLinkTarget,
eventHandlers = props.eventHandlers,
fireAnalyticsEvent = props.fireAnalyticsEvent,
isMediaLink = props.isMediaLink,
dataAttributes = props.dataAttributes;
var actualTarget = target;
if (onSetLinkTarget && href) {
try {
var _onSetLinkTarget;
actualTarget = (_onSetLinkTarget = onSetLinkTarget(href)) !== null && _onSetLinkTarget !== void 0 ? _onSetLinkTarget : actualTarget;
} catch (error) {
// eslint-disable-line no-unused-vars
// If URL parsing fails, use the original target
}
}
var anchorProps = {
href: href,
target: actualTarget,
title: href
};
if (actualTarget === '_blank') {
anchorProps.rel = 'noreferrer noopener';
}
var handler = (0, _utils.getEventHandler)(eventHandlers, 'link');
if (isMediaLink) {
return /*#__PURE__*/_react.default.createElement(_react.Fragment, null, props.children);
}
var analyticsData = {
attributes: {
location: 'renderer'
},
// Below is added for the future implementation of Linking Platform namespaced analytic context
location: 'renderer'
};
return /*#__PURE__*/_react.default.createElement(_analyticsNext.AnalyticsContext, {
data: analyticsData
}, /*#__PURE__*/_react.default.createElement(LinkUrlMigration
// eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed)
, (0, _extends2.default)({
onClick: function onClick(e) {
if (fireAnalyticsEvent) {
fireAnalyticsEvent({
action: _analytics.ACTION.VISITED,
actionSubject: _analytics.ACTION_SUBJECT.LINK,
eventType: _analytics.EVENT_TYPE.TRACK,
attributes: {
platform: _events.PLATFORM.WEB,
mode: _events.MODE.RENDERER
}
});
}
if (handler) {
handler(e, href);
}
}
// Ignored via go/ees005
// eslint-disable-next-line react/jsx-props-no-spreading
}, anchorProps, dataAttributes, {
isLinkComponent: true,
enableResolve: true
}), props.children));
}