UNPKG

@atlaskit/editor-plugin-selection-extension

Version:

editor-plugin-selection-extension plugin for @atlaskit/editor-core

52 lines (50 loc) 2.61 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.replaceWithAdf = void 0; var _model = require("@atlaskit/editor-prosemirror/model"); var _platformFeatureFlags = require("@atlaskit/platform-feature-flags"); var _types = require("../../types"); var _main = require("../main"); var replaceWithAdf = exports.replaceWithAdf = function replaceWithAdf(nodeAdf, api) { return function (state, dispatch) { var _selectionExtensionPl; var tr = state.tr, schema = state.schema; // we need to track if any changes were made since user click the toolbar button var docChangedAfterClick = ((_selectionExtensionPl = _main.selectionExtensionPluginKey.getState(state)) === null || _selectionExtensionPl === void 0 ? void 0 : _selectionExtensionPl.docChangedAfterClick) || false; tr.setMeta(_main.selectionExtensionPluginKey, { type: _types.SelectionExtensionActionTypes.START_TRACK_CHANGES, startTrackChanges: false // Reset the flag when starting to track changes }); if (docChangedAfterClick) { dispatch(tr); return { status: 'document-changed' }; } try { var _selectionExtensionPl2, _selectionExtensionPl3, _api$editorViewModeEf; var selectedNode = (_selectionExtensionPl2 = _main.selectionExtensionPluginKey.getState(state)) === null || _selectionExtensionPl2 === void 0 ? void 0 : _selectionExtensionPl2.selectedNode; var nodePos = (_selectionExtensionPl3 = _main.selectionExtensionPluginKey.getState(state)) === null || _selectionExtensionPl3 === void 0 ? void 0 : _selectionExtensionPl3.nodePos; if (!selectedNode || nodePos === undefined) { throw new Error('No selected node or node position found'); } var endPos = selectedNode.type.name === 'doc' && (0, _platformFeatureFlags.fg)('platform_editor_selection_extension_improvement') ? nodePos + selectedNode.content.size : nodePos + selectedNode.nodeSize; var modifiedNode = _model.Node.fromJSON(schema, nodeAdf); modifiedNode.check(); var updatedTr = tr.replaceWith(nodePos, endPos, modifiedNode).scrollIntoView(); // Allow this transaction in view mode and apply changes dispatch((api === null || api === void 0 || (_api$editorViewModeEf = api.editorViewModeEffects) === null || _api$editorViewModeEf === void 0 ? void 0 : _api$editorViewModeEf.actions.allowViewModeTransaction(updatedTr)) || updatedTr); return { status: 'success' }; } catch (_unused) { dispatch(tr); return { status: 'failed-to-replace' }; } }; };