UNPKG

@atlaskit/renderer

Version:
90 lines (89 loc) 3.99 kB
"use strict"; 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)); }