@atlaskit/editor-plugin-text-formatting
Version:
Text-formatting plugin for @atlaskit/editor-core
51 lines (50 loc) • 2.3 kB
JavaScript
/**
* @jsxRuntime classic
* @jsx jsx
*/
import { useCallback, useMemo } from 'react';
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled -- Ignored via go/DSP-18766
import { jsx } from '@emotion/react';
import { clearFormatting as clearFormattingKeymap, tooltip } from '@atlaskit/editor-common/keymaps';
import { toolbarMessages } from '@atlaskit/editor-common/messages';
import { shortcutStyle } from '@atlaskit/editor-shared-styles/shortcut';
import TableCellClearIcon from '@atlaskit/icon/core/table-cell-clear';
import { editorExperiment } from '@atlaskit/tmp-editor-statsig/experiments';
import { clearFormattingWithAnalytics } from '../../../editor-commands/clear-formatting';
import { getInputMethod } from '../input-method-utils';
export const useClearIcon = ({
intl,
formattingPluginInitialised,
formattingIsPresent: formattingPresent,
editorAnalyticsAPI,
toolbarType
}) => {
const isPluginAvailable = Boolean(formattingPluginInitialised);
const formattingIsPresent = Boolean(formattingPresent);
const clearFormattingLabel = intl.formatMessage(toolbarMessages.clearFormatting);
const clearFormattingToolbar = useCallback((state, dispatch) => clearFormattingWithAnalytics(getInputMethod(toolbarType), editorAnalyticsAPI)(state, dispatch), [editorAnalyticsAPI, toolbarType]);
return useMemo(() => {
if (!isPluginAvailable) {
return null;
}
return {
key: 'clearFormatting',
command: clearFormattingToolbar,
content: clearFormattingLabel,
elemBefore: editorExperiment('platform_editor_controls', 'variant1') ? jsx(TableCellClearIcon, {
label: ""
}) : undefined,
elemAfter:
// eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
jsx("div", {
css: shortcutStyle
}, tooltip(clearFormattingKeymap)),
value: {
name: 'clearFormatting'
},
isActive: false,
isDisabled: !formattingIsPresent,
'aria-label': clearFormattingKeymap ? tooltip(clearFormattingKeymap, String(clearFormattingLabel)) : String(clearFormattingLabel)
};
}, [isPluginAvailable, clearFormattingToolbar, clearFormattingLabel, formattingIsPresent]);
};