@atlaskit/renderer
Version:
Renderer component
81 lines (78 loc) • 3.73 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _customThemeButton = _interopRequireDefault(require("@atlaskit/button/custom-theme-button"));
var _messages = require("@atlaskit/editor-common/messages");
var _copy = _interopRequireDefault(require("@atlaskit/icon/core/copy"));
var _tooltip = _interopRequireDefault(require("@atlaskit/tooltip"));
var _react = require("@emotion/react");
var _react2 = require("react");
var _reactIntl = require("react-intl");
var _analyticsContext = _interopRequireDefault(require("../../../../analytics/analyticsContext"));
var _enums = require("../../../../analytics/enums");
var _clipboard = require("../../../utils/clipboard");
/**
* @jsxRuntime classic
* @jsx jsx
*/
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
var CopyButton = function CopyButton(_ref) {
var content = _ref.content,
intl = _ref.intl;
var _useState = (0, _react2.useState)(intl.formatMessage(_messages.codeBlockButtonMessages.copyCodeToClipboard)),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
tooltip = _useState2[0],
setTooltip = _useState2[1];
var _useState3 = (0, _react2.useState)('copy-to-clipboard'),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
className = _useState4[0],
setClassName = _useState4[1];
var onMouseLeave = function onMouseLeave() {
setTooltip(intl.formatMessage(_messages.codeBlockButtonMessages.copyCodeToClipboard));
setClassName('copy-to-clipboard');
};
return (0, _react.jsx)(_analyticsContext.default.Consumer, null, function (_ref2) {
var fireAnalyticsEvent = _ref2.fireAnalyticsEvent;
return (0, _react.jsx)("span", null, (0, _react.jsx)(_tooltip.default, {
content: tooltip,
hideTooltipOnClick: false,
position: "top"
}, (0, _react.jsx)("div", {
onMouseLeave: onMouseLeave,
onBlur: onMouseLeave
}, (0, _react.jsx)(_customThemeButton.default, {
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: (0, _react.jsx)(_copy.default, {
label: tooltip
})
// eslint-disable-next-line @atlassian/perf-linting/no-unstable-inline-props -- Ignored via go/ees017 (to be fixed)
,
onClick: function 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: _enums.ACTION.CLICKED,
actionSubject: _enums.ACTION_SUBJECT.BUTTON,
actionSubjectId: _enums.ACTION_SUBJECT_ID.CODEBLOCK_COPY,
eventType: _enums.EVENT_TYPE.UI
});
(0, _clipboard.copyTextToClipboard)(content);
setTooltip(intl.formatMessage(_messages.codeBlockButtonMessages.copiedCodeToClipboard));
setClassName('copy-to-clipboard clicked');
event.stopPropagation();
},
spacing: "compact"
}))));
});
};
var _default_1 = (0, _reactIntl.injectIntl)(CopyButton);
var _default = exports.default = _default_1;