UNPKG

@atlaskit/renderer

Version:
65 lines 2.73 kB
/** * @jsxRuntime classic * @jsx jsx */ import Button from '@atlaskit/button/custom-theme-button'; import { codeBlockButtonMessages } from '@atlaskit/editor-common/messages'; import CopyIcon from '@atlaskit/icon/core/copy'; import Tooltip from '@atlaskit/tooltip'; // eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766 import { jsx } from '@emotion/react'; import { useState } from 'react'; import { injectIntl } from 'react-intl'; import AnalyticsContext from '../../../../analytics/analyticsContext'; import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '../../../../analytics/enums'; import { copyTextToClipboard } from '../../../utils/clipboard'; const CopyButton = ({ content, intl }) => { const [tooltip, setTooltip] = useState(intl.formatMessage(codeBlockButtonMessages.copyCodeToClipboard)); const [className, setClassName] = useState('copy-to-clipboard'); const onMouseLeave = () => { setTooltip(intl.formatMessage(codeBlockButtonMessages.copyCodeToClipboard)); setClassName('copy-to-clipboard'); }; return jsx(AnalyticsContext.Consumer, null, ({ fireAnalyticsEvent }) => jsx("span", null, jsx(Tooltip, { content: tooltip, hideTooltipOnClick: false, position: "top" }, jsx("div", { onMouseLeave: onMouseLeave, onBlur: onMouseLeave }, jsx(Button, { appearance: "subtle", "aria-haspopup": true, "aria-label": tooltip // eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766 , className: className, iconBefore: jsx(CopyIcon, { label: tooltip }) // eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed) , onClick: event => { fireAnalyticsEvent({ // @ts-expect-error - Type 'ACTION.CLICKED' is not assignable to type 'ACTION.CLICKED | ACTION.MEDIA_LINK_TRANSFORMED | ACTION.STARTED | ACTION.TOGGLE_EXPAND | ACTION.UNSUPPORTED_CONTENT_ENCOUNTERED | ACTION.VISITED | ACTION.RENDERED | ACTION.INVALID_PROSEMIRROR_DOCUMENT | ACTION.CRASHED | ... 6 more ... | AnnotationActionType'. // This error was introduced after upgrading to TypeScript 5 action: ACTION.CLICKED, actionSubject: ACTION_SUBJECT.BUTTON, actionSubjectId: ACTION_SUBJECT_ID.CODEBLOCK_COPY, eventType: EVENT_TYPE.UI }); copyTextToClipboard(content); setTooltip(intl.formatMessage(codeBlockButtonMessages.copiedCodeToClipboard)); setClassName('copy-to-clipboard clicked'); event.stopPropagation(); }, spacing: "compact" }))))); }; const _default_1 = injectIntl(CopyButton); export default _default_1;