UNPKG

@atlaskit/editor-plugin-track-changes

Version:

ShowDiff plugin for @atlaskit/editor-core

103 lines (102 loc) 5.22 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.trackChangesPlugin = void 0; var _react = _interopRequireDefault(require("react")); var _keymaps = require("./pm-plugins/keymaps"); var _main = require("./pm-plugins/main"); var _types = require("./pm-plugins/types"); var _toolbarComponents = require("./ui/toolbar-components"); var _TrackChangesToolbarButton = require("./ui/TrackChangesToolbarButton"); var trackChangesPlugin = exports.trackChangesPlugin = function trackChangesPlugin(_ref) { var api = _ref.api, options = _ref.config; var isToolbarAIFCEnabled = Boolean(api === null || api === void 0 ? void 0 : api.toolbar); var primaryToolbarComponent = function primaryToolbarComponent() { return /*#__PURE__*/_react.default.createElement(_TrackChangesToolbarButton.TrackChangesToolbarButton, { api: api }); }; if ((options === null || options === void 0 ? void 0 : options.showOnToolbar) === true) { 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, options)); } else { var _api$primaryToolbar; api === null || api === void 0 || (_api$primaryToolbar = api.primaryToolbar) === null || _api$primaryToolbar === void 0 || (_api$primaryToolbar = _api$primaryToolbar.actions) === null || _api$primaryToolbar === void 0 || _api$primaryToolbar.registerComponent({ name: 'trackChanges', component: primaryToolbarComponent }); } } return { name: 'trackChanges', pmPlugins: function pmPlugins() { return [{ name: 'trackChangesKeyMap', plugin: function plugin() { return (0, _keymaps.keymapPlugin)(api); } }, { name: 'trackChangesPlugin', plugin: function plugin() { return (0, _main.createTrackChangesPlugin)(api); } }]; }, commands: { toggleChanges: function toggleChanges(_ref2) { var _api$trackChanges; var tr = _ref2.tr; // Another plugin currently owns the diff decorations (e.g. the AI Review moment), // so toggling would fight over the same diff — bail out. if (api !== null && api !== void 0 && (_api$trackChanges = api.trackChanges) !== null && _api$trackChanges !== void 0 && (_api$trackChanges = _api$trackChanges.sharedState.currentState()) !== null && _api$trackChanges !== void 0 && _api$trackChanges.isToggleChangesDisabled) { return null; } return tr.setMeta(_main.trackChangesPluginKey, { action: _types.TOGGLE_TRACK_CHANGES_ACTION.TOGGLE_TRACK_CHANGES }); }, setToggleChangesDisabled: function setToggleChangesDisabled(isDisabled) { return function (_ref3) { var _api$trackChanges2; var tr = _ref3.tr; if ((api === null || api === void 0 || (_api$trackChanges2 = api.trackChanges) === null || _api$trackChanges2 === void 0 || (_api$trackChanges2 = _api$trackChanges2.sharedState.currentState()) === null || _api$trackChanges2 === void 0 ? void 0 : _api$trackChanges2.isToggleChangesDisabled) === isDisabled) { return null; } return tr.setMeta(_main.trackChangesPluginKey, { action: _types.TOGGLE_TRACK_CHANGES_ACTION.SET_TOGGLE_CHANGES_DISABLED, isDisabled: isDisabled }); }; }, resetBaseline: function resetBaseline(_ref4) { var _api$trackChanges3; var tr = _ref4.tr; if (!(api !== null && api !== void 0 && (_api$trackChanges3 = api.trackChanges) !== null && _api$trackChanges3 !== void 0 && (_api$trackChanges3 = _api$trackChanges3.sharedState.currentState()) !== null && _api$trackChanges3 !== void 0 && _api$trackChanges3.isShowDiffAvailable)) { return null; } return tr.setMeta(_main.trackChangesPluginKey, { action: _types.TOGGLE_TRACK_CHANGES_ACTION.RESET_BASELINE }); } }, getSharedState: function getSharedState(editorState) { var _trackChangesPluginKe, _trackChangesPluginKe2, _trackChangesPluginKe3; if (!editorState) { return { isDisplayingChanges: false, isShowDiffAvailable: false, isToggleChangesDisabled: false }; } return { isDisplayingChanges: Boolean((_trackChangesPluginKe = _main.trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe === void 0 ? void 0 : _trackChangesPluginKe.shouldChangesBeDisplayed), isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = _main.trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable), isToggleChangesDisabled: Boolean((_trackChangesPluginKe3 = _main.trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe3 === void 0 ? void 0 : _trackChangesPluginKe3.isToggleChangesDisabled) }; } }; };