UNPKG

@atlaskit/editor-plugin-track-changes

Version:

ShowDiff plugin for @atlaskit/editor-core

74 lines 3.18 kB
import React from 'react'; import { keymapPlugin } from './pm-plugins/keymaps'; import { createTrackChangesPlugin, trackChangesPluginKey } from './pm-plugins/main'; import { TOGGLE_TRACK_CHANGES_ACTION as ACTION } from './pm-plugins/types'; import { getToolbarComponents } from './ui/toolbar-components'; import { TrackChangesToolbarButton } from './ui/TrackChangesToolbarButton'; export const trackChangesPlugin = ({ api, config: options }) => { const isToolbarAIFCEnabled = Boolean(api === null || api === void 0 ? void 0 : api.toolbar); const primaryToolbarComponent = () => { return /*#__PURE__*/React.createElement(TrackChangesToolbarButton, { api: api }); }; if ((options === null || options === void 0 ? void 0 : options.showOnToolbar) === true) { if (isToolbarAIFCEnabled) { var _api$toolbar; api === null || api === void 0 ? void 0 : (_api$toolbar = api.toolbar) === null || _api$toolbar === void 0 ? void 0 : _api$toolbar.actions.registerComponents(getToolbarComponents(api, options)); } else { var _api$primaryToolbar, _api$primaryToolbar$a; api === null || api === void 0 ? void 0 : (_api$primaryToolbar = api.primaryToolbar) === null || _api$primaryToolbar === void 0 ? void 0 : (_api$primaryToolbar$a = _api$primaryToolbar.actions) === null || _api$primaryToolbar$a === void 0 ? void 0 : _api$primaryToolbar$a.registerComponent({ name: 'trackChanges', component: primaryToolbarComponent }); } } return { name: 'trackChanges', pmPlugins() { return [{ name: 'trackChangesKeyMap', plugin: () => keymapPlugin(api) }, { name: 'trackChangesPlugin', plugin: () => createTrackChangesPlugin(api) }]; }, commands: { toggleChanges: ({ tr }) => { return tr.setMeta(trackChangesPluginKey, { action: ACTION.TOGGLE_TRACK_CHANGES }); }, resetBaseline: ({ tr }) => { var _api$trackChanges, _api$trackChanges$sha; if (!(api !== null && api !== void 0 && (_api$trackChanges = api.trackChanges) !== null && _api$trackChanges !== void 0 && (_api$trackChanges$sha = _api$trackChanges.sharedState.currentState()) !== null && _api$trackChanges$sha !== void 0 && _api$trackChanges$sha.isShowDiffAvailable)) { return null; } return tr.setMeta(trackChangesPluginKey, { action: ACTION.RESET_BASELINE }); } }, getSharedState: editorState => { var _trackChangesPluginKe, _trackChangesPluginKe2; if (!editorState) { return { isDisplayingChanges: false, isShowDiffAvailable: false }; } return { isDisplayingChanges: Boolean((_trackChangesPluginKe = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe === void 0 ? void 0 : _trackChangesPluginKe.shouldChangesBeDisplayed), isShowDiffAvailable: Boolean((_trackChangesPluginKe2 = trackChangesPluginKey.getState(editorState)) === null || _trackChangesPluginKe2 === void 0 ? void 0 : _trackChangesPluginKe2.isShowDiffAvailable) }; } }; };