UNPKG

@atlaskit/editor-plugin-undo-redo

Version:

Undo redo plugin for @atlaskit/editor-core

50 lines • 2.08 kB
import React from 'react'; import { useIntl } from 'react-intl'; import { getAriaKeyshortcuts, redo as redoKeymap, ToolTipContent } from '@atlaskit/editor-common/keymaps'; import { messages as undoRedoMessages } from '@atlaskit/editor-common/messages/undo-redo'; import { useEditorToolbar } from '@atlaskit/editor-common/toolbar/context'; import { useSharedPluginStateWithSelector } from '@atlaskit/editor-common/useSharedPluginStateWithSelector'; import { RedoIcon } from '@atlaskit/editor-toolbar/redo-icon'; import { ToolbarButton } from '@atlaskit/editor-toolbar/toolbar-button'; import { ToolbarTooltip } from '@atlaskit/editor-toolbar/toolbar-tooltip'; import { redoFromToolbarWithAnalytics } from '../../pm-plugins/commands'; import { forceFocus } from '../../pm-plugins/utils'; export const RedoButton = ({ api }) => { const { formatMessage } = useIntl(); const { editorView } = useEditorToolbar(); const { canRedo } = useSharedPluginStateWithSelector(api, ['history'], states => { var _states$historyState; return { canRedo: (_states$historyState = states.historyState) === null || _states$historyState === void 0 ? void 0 : _states$historyState.canRedo }; }); const handleRedo = () => { if (editorView) { var _api$analytics; forceFocus(editorView, api)(redoFromToolbarWithAnalytics(api === null || api === void 0 ? void 0 : (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions)); } }; return /*#__PURE__*/React.createElement(ToolbarTooltip, { content: /*#__PURE__*/React.createElement(ToolTipContent, { description: formatMessage(undoRedoMessages.redo), keymap: redoKeymap }) }, /*#__PURE__*/React.createElement(ToolbarButton, { iconBefore: /*#__PURE__*/React.createElement(RedoIcon, { label: formatMessage(undoRedoMessages.redo), size: "small" }), onClick: handleRedo, isDisabled: !canRedo, ariaKeyshortcuts: getAriaKeyshortcuts(redoKeymap), testId: "ak-editor-toolbar-button-redo" })); };