@atlaskit/editor-plugin-undo-redo
Version:
Undo redo plugin for @atlaskit/editor-core
101 lines (97 loc) • 4.88 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = exports.ToolbarUndoRedo = void 0;
var _react = require("@emotion/react");
var _reactIntl = require("react-intl");
var _hooks = require("@atlaskit/editor-common/hooks");
var _keymaps = require("@atlaskit/editor-common/keymaps");
var _messages = require("@atlaskit/editor-common/messages");
var _styles = require("@atlaskit/editor-common/styles");
var _uiMenu = require("@atlaskit/editor-common/ui-menu");
var _redo = _interopRequireDefault(require("@atlaskit/icon/core/redo"));
var _undo = _interopRequireDefault(require("@atlaskit/icon/core/undo"));
var _commands = require("../../pm-plugins/commands");
var _utils = require("../../pm-plugins/utils");
/**
* @jsxRuntime classic
* @jsx jsx
*/
// eslint-disable-next-line @atlaskit/ui-styling-standard/use-compiled, @typescript-eslint/consistent-type-imports
var ToolbarUndoRedo = exports.ToolbarUndoRedo = function ToolbarUndoRedo(_ref) {
var disabled = _ref.disabled,
isReducedSpacing = _ref.isReducedSpacing,
editorView = _ref.editorView,
api = _ref.api,
formatMessage = _ref.intl.formatMessage;
var _useSharedPluginState = (0, _hooks.useSharedPluginStateWithSelector)(api, ['history'], function (states) {
var _states$historyState, _states$historyState2;
return {
canUndo: (_states$historyState = states.historyState) === null || _states$historyState === void 0 ? void 0 : _states$historyState.canUndo,
canRedo: (_states$historyState2 = states.historyState) === null || _states$historyState2 === void 0 ? void 0 : _states$historyState2.canRedo
};
}),
canRedo = _useSharedPluginState.canRedo,
canUndo = _useSharedPluginState.canUndo;
var handleUndo = function handleUndo() {
var _api$analytics;
(0, _utils.forceFocus)(editorView, api)((0, _commands.undoFromToolbarWithAnalytics)(api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions));
};
var handleRedo = function handleRedo() {
var _api$analytics2;
(0, _utils.forceFocus)(editorView, api)((0, _commands.redoFromToolbarWithAnalytics)(api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions));
};
var labelUndo = formatMessage(_messages.undoRedoMessages.undo);
var labelRedo = formatMessage(_messages.undoRedoMessages.redo);
return (
// eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values -- Ignored via go/DSP-18766
(0, _react.jsx)("span", {
css:
// eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage, @atlaskit/ui-styling-standard/no-imported-style-values
_styles.buttonGroupStyle
}, (0, _react.jsx)(_uiMenu.ToolbarButton, {
buttonId: _uiMenu.TOOLBAR_BUTTON.UNDO,
spacing: isReducedSpacing ? 'none' : 'default',
onClick: handleUndo,
disabled: !canUndo || disabled,
"aria-label": (0, _keymaps.tooltip)(_keymaps.undo, labelUndo),
"aria-keyshortcuts": (0, _keymaps.getAriaKeyshortcuts)(_keymaps.undo),
title: (0, _react.jsx)(_keymaps.ToolTipContent, {
description: labelUndo,
keymap: _keymaps.undo
}),
iconBefore: (0, _react.jsx)(_undo.default, {
label: "",
color: "currentColor",
spacing: "spacious"
}),
testId: "ak-editor-toolbar-button-undo"
}), (0, _react.jsx)(_uiMenu.ToolbarButton, {
spacing: isReducedSpacing ? 'none' : 'default',
buttonId: _uiMenu.TOOLBAR_BUTTON.REDO,
onClick: handleRedo,
disabled: !canRedo || disabled,
title: (0, _react.jsx)(_keymaps.ToolTipContent, {
description: labelRedo,
keymap: _keymaps.redoAlt
}),
iconBefore: (0, _react.jsx)(_redo.default, {
label: "",
color: "currentColor",
spacing: "spacious"
}),
testId: "ak-editor-toolbar-button-redo",
"aria-label": (0, _keymaps.tooltip)(_keymaps.redoAlt, labelRedo),
"aria-keyshortcuts": (0, _keymaps.getAriaKeyshortcuts)(_keymaps.redoAlt)
}), !(api !== null && api !== void 0 && api.primaryToolbar) && /* eslint-disable-next-line @atlaskit/design-system/consistent-css-prop-usage */
// eslint-disable-next-line @atlaskit/ui-styling-standard/no-imported-style-values, @atlaskit/design-system/consistent-css-prop-usage -- Ignored via go/DSP-18766
(0, _react.jsx)("span", {
css: _styles.separatorStyles
}))
);
};
// eslint-disable-next-line @typescript-eslint/ban-types
var _default_1 = (0, _reactIntl.injectIntl)(ToolbarUndoRedo);
var _default = exports.default = _default_1;