@atlaskit/renderer
Version:
Renderer component
58 lines • 2.42 kB
JavaScript
/**
* @jsxRuntime classic
* @jsx jsx
*/
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
import { jsx } from '@emotion/react';
import { injectIntl } from 'react-intl';
import TextWrapIcon from '@atlaskit/icon/core/text-wrap';
import Button from '@atlaskit/button/custom-theme-button';
import { codeBlockButtonMessages } from '@atlaskit/editor-common/messages';
import Tooltip from '@atlaskit/tooltip';
import AnalyticsContext from '../../../../analytics/analyticsContext';
import { ACTION, ACTION_SUBJECT, ACTION_SUBJECT_ID, EVENT_TYPE } from '../../../../analytics/enums';
const CodeBlockWrapButton = ({
setWrapLongLines,
wrapLongLines,
intl
}) => {
const wrapMessage = intl.formatMessage(wrapLongLines ? codeBlockButtonMessages.unwrapCode : codeBlockButtonMessages.wrapCode);
return jsx(AnalyticsContext.Consumer, null, ({
fireAnalyticsEvent
}) => jsx("span", null, jsx(Tooltip, {
content: wrapMessage,
hideTooltipOnClick: false,
position: "top"
}, jsx(Button, {
appearance: "subtle",
"aria-haspopup": true,
"aria-label": wrapMessage
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-classname-prop -- Ignored via go/DSP-18766
,
className: `wrap-code ${wrapLongLines ? 'clicked' : ''}`,
iconBefore: jsx(TextWrapIcon, {
label: ""
}),
isSelected: wrapLongLines
// 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_WRAP,
attributes: {
wrapped: !wrapLongLines
},
eventType: EVENT_TYPE.UI
});
setWrapLongLines(!wrapLongLines);
event.stopPropagation();
},
spacing: "compact"
}))));
};
const _default_1 = injectIntl(CodeBlockWrapButton);
export default _default_1;