UNPKG

@atlaskit/editor-plugin-undo-redo

Version:

Undo redo plugin for @atlaskit/editor-core

128 lines (126 loc) 5.84 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.undoRedoPlugin = void 0; var _react = _interopRequireDefault(require("react")); var _analytics = require("@atlaskit/editor-common/analytics"); var _safePlugin = require("@atlaskit/editor-common/safe-plugin"); var _platformFeatureFlags = require("@atlaskit/platform-feature-flags"); var _prosemirrorHistory = require("@atlaskit/prosemirror-history"); var _experiments = require("@atlaskit/tmp-editor-statsig/experiments"); var _attachInputMeta = require("./pm-plugins/attach-input-meta"); var _enums = require("./pm-plugins/enums"); var _keymaps = require("./pm-plugins/keymaps"); var _main = require("./pm-plugins/main"); var _utils = require("./pm-plugins/utils"); var _ToolbarUndoRedo = _interopRequireDefault(require("./ui/ToolbarUndoRedo")); var _toolbarComponents = require("./ui/ToolbarUndoRedo/toolbar-components"); // Ignored via go/ees005 // eslint-disable-next-line import/no-named-as-default var undoRedoPlugin = exports.undoRedoPlugin = function undoRedoPlugin(_ref) { var _config$showToolbarBu; var api = _ref.api, config = _ref.config; var showToolbarButton = (_config$showToolbarBu = config === null || config === void 0 ? void 0 : config.showToolbarButton) !== null && _config$showToolbarBu !== void 0 ? _config$showToolbarBu : true; var editorViewRef = { current: null }; var isToolbarAIFCEnabled = Boolean(api === null || api === void 0 ? void 0 : api.toolbar); var primaryToolbarComponent = function primaryToolbarComponent(_ref2) { var editorView = _ref2.editorView, disabled = _ref2.disabled, isToolbarReducedSpacing = _ref2.isToolbarReducedSpacing; if (!editorView) { return null; } return /*#__PURE__*/_react.default.createElement(_ToolbarUndoRedo.default, { isReducedSpacing: isToolbarReducedSpacing, disabled: disabled, editorView: editorView, api: api }); }; if ((0, _platformFeatureFlags.fg)('platform_editor_ai_add_undoredo_jira')) { if (showToolbarButton) { if (isToolbarAIFCEnabled) { var _api$toolbar; api === null || api === void 0 || (_api$toolbar = api.toolbar) === null || _api$toolbar === void 0 || _api$toolbar.actions.registerComponents((0, _toolbarComponents.getToolbarComponents)(api)); } else { var _api$primaryToolbar; api === null || api === void 0 || (_api$primaryToolbar = api.primaryToolbar) === null || _api$primaryToolbar === void 0 || _api$primaryToolbar.actions.registerComponent({ name: 'undoRedoPlugin', component: primaryToolbarComponent }); } } } else { if (isToolbarAIFCEnabled) { var _api$toolbar2; api === null || api === void 0 || (_api$toolbar2 = api.toolbar) === null || _api$toolbar2 === void 0 || _api$toolbar2.actions.registerComponents((0, _toolbarComponents.getToolbarComponents)(api)); } else { var _api$primaryToolbar2; api === null || api === void 0 || (_api$primaryToolbar2 = api.primaryToolbar) === null || _api$primaryToolbar2 === void 0 || _api$primaryToolbar2.actions.registerComponent({ name: 'undoRedoPlugin', component: primaryToolbarComponent }); } } var handleUndo = function handleUndo(inputSource) { var _api$analytics; if (!editorViewRef.current) { return false; } return (0, _utils.forceFocus)(editorViewRef.current, api)((0, _attachInputMeta.attachInputMetaWithAnalytics)(api === null || api === void 0 || (_api$analytics = api.analytics) === null || _api$analytics === void 0 ? void 0 : _api$analytics.actions)(inputSource || _enums.InputSource.EXTERNAL, _analytics.ACTION.UNDO_PERFORMED)(_prosemirrorHistory.undo)); }; var handleRedo = function handleRedo(inputSource) { var _api$analytics2; if (!editorViewRef.current) { return false; } return (0, _utils.forceFocus)(editorViewRef.current, api)((0, _attachInputMeta.attachInputMetaWithAnalytics)(api === null || api === void 0 || (_api$analytics2 = api.analytics) === null || _api$analytics2 === void 0 ? void 0 : _api$analytics2.actions)(inputSource || _enums.InputSource.EXTERNAL, _analytics.ACTION.REDO_PERFORMED)(_prosemirrorHistory.redo)); }; var showPrimaryToolbarComponent = (0, _platformFeatureFlags.fg)('platform_editor_ai_add_undoredo_jira') ? !(api !== null && api !== void 0 && api.primaryToolbar) && !isToolbarAIFCEnabled && showToolbarButton : !(api !== null && api !== void 0 && api.primaryToolbar) && !isToolbarAIFCEnabled; return { name: 'undoRedoPlugin', actions: { undo: handleUndo, redo: handleRedo }, pmPlugins: function pmPlugins() { var plugins = [{ name: 'undoRedoKeyMap', plugin: function plugin() { return (0, _keymaps.keymapPlugin)(api); } }, { name: 'undoRedoPlugin', plugin: function plugin(options) { return (0, _main.createPlugin)(options); } }]; if ((0, _experiments.editorExperiment)('platform_editor_controls', 'variant1', { exposure: false })) { plugins.push({ name: 'undoRedoGetEditorViewReferencePlugin', plugin: function plugin() { return new _safePlugin.SafePlugin({ view: function view(editorView) { editorViewRef.current = editorView; return { destroy: function destroy() { editorViewRef.current = null; } }; } }); } }); } return plugins; }, primaryToolbarComponent: showPrimaryToolbarComponent ? primaryToolbarComponent : undefined }; };