@atlaskit/editor-plugin-undo-redo
Version:
Undo redo plugin for @atlaskit/editor-core
102 lines (98 loc) • 5.15 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 _toolbarButton = require("@atlaskit/editor-common/analytics/types/toolbar-button");
var _keymaps = require("@atlaskit/editor-common/keymaps");
var _undoRedo = require("@atlaskit/editor-common/messages/undo-redo");
var _plugins = require("@atlaskit/editor-common/styles/plugins");
var _ToolbarButton = _interopRequireDefault(require("@atlaskit/editor-common/ui-menu/ToolbarButton"));
var _useSharedPluginStateWithSelector = require("@atlaskit/editor-common/useSharedPluginStateWithSelector");
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, _useSharedPluginStateWithSelector.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(_undoRedo.messages.undo);
var labelRedo = formatMessage(_undoRedo.messages.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
_plugins.buttonGroupStyle
}, (0, _react.jsx)(_ToolbarButton.default, {
buttonId: _toolbarButton.TOOLBAR_ACTION_SUBJECT_ID.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)(_ToolbarButton.default, {
spacing: isReducedSpacing ? 'none' : 'default',
buttonId: _toolbarButton.TOOLBAR_ACTION_SUBJECT_ID.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: _plugins.separatorStyles
}))
);
};
// eslint-disable-next-line @typescript-eslint/no-restricted-types
var _default_1 = (0, _reactIntl.injectIntl)(ToolbarUndoRedo);
var _default = exports.default = _default_1;