@atlaskit/editor-plugin-undo-redo
Version:
Undo redo plugin for @atlaskit/editor-core
128 lines (126 loc) • 5.84 kB
JavaScript
"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
};
};