UNPKG

@atlaskit/renderer

Version:
81 lines 2.92 kB
import _extends from "@babel/runtime/helpers/extends"; import React, { Fragment } from 'react'; import { componentWithCondition } from '@atlaskit/platform-feature-flags-react'; import { getEventHandler } from '../../utils'; import { PLATFORM, MODE } from '../../analytics/events'; import { ACTION, ACTION_SUBJECT, EVENT_TYPE } from '@atlaskit/editor-common/analytics'; import { expValEquals } from '@atlaskit/tmp-editor-statsig/exp-val-equals'; import { AnalyticsContext } from '@atlaskit/analytics-next'; import { LinkUrlCompiled } from './link-compiled'; import { LinkUrlEmotion } from './link-emotion'; var LinkUrlMigration = componentWithCondition(function () { return expValEquals('platform_editor_renderer_static_css', 'isEnabled', true); }, LinkUrlCompiled, LinkUrlEmotion); /** * Render an ADF link mark in renderer. */ export default 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 = getEventHandler(eventHandlers, 'link'); if (isMediaLink) { return /*#__PURE__*/React.createElement(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.createElement(AnalyticsContext, { data: analyticsData }, /*#__PURE__*/React.createElement(LinkUrlMigration // eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed) , _extends({ onClick: function onClick(e) { if (fireAnalyticsEvent) { fireAnalyticsEvent({ action: ACTION.VISITED, actionSubject: ACTION_SUBJECT.LINK, eventType: EVENT_TYPE.TRACK, attributes: { platform: PLATFORM.WEB, mode: 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)); }