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;
});
|