all files / block-manager/actions/ mention.js

98.21% Statements 55/56
89.74% Branches 35/39
100% Functions 11/11
98.18% Lines 54/55
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82   1394× 1394×   1394× 1394×   1390× 1390×   120×   121× 121× 121×   120×     120× 120× 85× 85× 85×     85× 50×           123× 123×   36×   87× 87× 87× 87×   94× 86×   85× 85× 85× 85× 23×   85× 85× 85× 57× 57×       85×   1390×        
define(["require", "exports", "../../common/utils/selection", "../../common/utils/block", "../../common/constant"], function (require, exports, selection_1, block_1, constant_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var MentionAction = (function () {
        function MentionAction(manager) {
            this.parent = manager;
            this.wireEvents();
        }
        MentionAction.prototype.wireEvents = function () {
            this.parent.observer.on('mentionOpened', this.onMentionOpen, this);
            this.parent.observer.on(constant_1.events.destroy, this.destroy, this);
        };
        MentionAction.prototype.unWireEvents = function () {
            this.parent.observer.off('mentionOpened', this.onMentionOpen);
            this.parent.observer.off(constant_1.events.destroy, this.destroy);
        };
        MentionAction.prototype.onMentionOpen = function () {
            this.parent.nodeSelection.storeCurrentRange();
        };
        MentionAction.prototype.cleanMentionArtifacts = function (element, isRemoveChip) {
            Eif (element) {
                var range = selection_1.getSelectedRange();
                if (!range) {
                    return;
                }
                var rangeParent = range.startContainer.nodeType === Node.TEXT_NODE
                    ? range.startContainer.parentElement
                    : range.startContainer;
                var mentionChips = rangeParent.querySelectorAll('span.e-mention-chip');
                if (mentionChips && mentionChips.length > 0) {
                    mentionChips.forEach(function (chip) {
                        var nextSibling = chip.nextSibling;
                        Iif (nextSibling && nextSibling.nodeType === Node.TEXT_NODE && nextSibling.textContent === '\u200B') {
                            nextSibling.parentNode.removeChild(nextSibling);
                        }
                        if (isRemoveChip) {
                            chip.remove();
                        }
                    });
                }
            }
        };
        MentionAction.prototype.removeMentionQueryKeysFromModel = function (mentionChar, isUndoRedoAction) {
            var rangePath = this.parent.nodeSelection.getStoredBackupRange();
            if ((!rangePath || isUndoRedoAction) ||
                (rangePath && (!rangePath.startContainer || !rangePath.endContainer))) {
                return;
            }
            var startOffset = rangePath.startOffset, endOffset = rangePath.endOffset, parentElement = rangePath.parentElement;
            var blockEl = this.parent.currentFocusedBlock;
            var block = block_1.getBlockModelById(blockEl.id, this.parent.getEditorBlocks());
            if (!block || !block.content || block.content.length === 0) {
                return;
            }
            var affectedContent = block.content.find(function (c) { return c.id === parentElement.id; });
            if (!affectedContent) {
                return;
            }
            var text = affectedContent.content;
            Eif (startOffset === endOffset) {
                var start = startOffset;
                while (start > 0 && text[start - 1] !== mentionChar) {
                    start--;
                }
                affectedContent.content = text.slice(0, start - 1) + text.slice(endOffset);
                Eif (!isUndoRedoAction) {
                    if (this.parent.undoRedoAction.undoRedoStack.length > 0) {
                        this.parent.undoRedoAction.undoRedoStack.pop();
                        this.parent.undoRedoAction.index = this.parent.undoRedoAction.undoRedoStack.length - 1;
                    }
                }
            }
            this.parent.stateManager.updateManagerBlocks();
        };
        MentionAction.prototype.destroy = function () {
            this.unWireEvents();
        };
        return MentionAction;
    }());
    exports.MentionAction = MentionAction;
});