all files / src/js/base/module/ AutoReplace.js

41.82% Statements 23/55
8.33% Branches 2/24
38.46% Functions 5/13
40.74% Lines 22/54
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 83 97× 97× 97× 97× 97× 97×                     99×                                                                                                      
(function(global){global.wrappers['/Users/lqez/Dev/summernote/src/js/base/module/AutoReplace.js']=[function(require,module,exports,__dirname,__filename){ "use strict";
exports.__esModule = true;
var lists_1 = require("../core/lists");
var dom_1 = require("../core/dom");
var key_1 = require("../core/key");
var AutoReplace = /** @class */ (function () {
    function AutoReplace(context) {
        var _this = this;
        this.context = context;
        this.options = context.options.replace || {};
        this.keys = [key_1["default"].code.ENTER, key_1["default"].code.SPACE, key_1["default"].code.PERIOD, key_1["default"].code.COMMA, key_1["default"].code.SEMICOLON, key_1["default"].code.SLASH];
        this.previousKeydownCode = null;
        this.events = {
            'summernote.keyup': function (we, e) {
                if (!e.isDefaultPrevented()) {
                    _this.handleKeyup(e);
                }
            },
            'summernote.keydown': function (we, e) {
                _this.handleKeydown(e);
            }
        };
    }
    AutoReplace.prototype.shouldInitialize = function () {
        return !!this.options.match;
    };
    AutoReplace.prototype.initialize = function () {
        this.lastWord = null;
    };
    AutoReplace.prototype.destroy = function () {
        this.lastWord = null;
    };
    AutoReplace.prototype.replace = function () {
        if (!this.lastWord) {
            return;
        }
        var self = this;
        var keyword = this.lastWord.toString();
        this.options.match(keyword, function (match) {
            if (match) {
                var node = '';
                if (typeof match === 'string') {
                    node = dom_1["default"].createText(match);
                }
                else if (match instanceof jQuery) {
                    node = match[0];
                }
                else if (match instanceof Node) {
                    node = match;
                }
                if (!node)
                    return;
                self.lastWord.insertNode(node);
                self.lastWord = null;
                self.context.invoke('editor.focus');
            }
        });
    };
    AutoReplace.prototype.handleKeydown = function (e) {
        // this forces it to remember the last whole word, even if multiple termination keys are pressed
        // before the previous key is let go.
        if (this.previousKeydownCode && lists_1["default"].contains(this.keys, this.previousKeydownCode)) {
            this.previousKeydownCode = e.keyCode;
            return;
        }
        if (lists_1["default"].contains(this.keys, e.keyCode)) {
            var wordRange = this.context.invoke('editor.createRange').getWordRange();
            this.lastWord = wordRange;
        }
        this.previousKeydownCode = e.keyCode;
    };
    AutoReplace.prototype.handleKeyup = function (e) {
        if (lists_1["default"].contains(this.keys, e.keyCode)) {
            this.replace();
        }
    };
    return AutoReplace;
}());
exports["default"] = AutoReplace;
 
},'src/js/base/module/AutoReplace.js',{"../core/lists":"/Users/lqez/Dev/summernote/src/js/base/core/lists.js","../core/dom":"/Users/lqez/Dev/summernote/src/js/base/core/dom.js","../core/key":"/Users/lqez/Dev/summernote/src/js/base/core/key.js"}];})(this);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQXV0b1JlcGxhY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJBdXRvUmVwbGFjZS5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVDQUFrQztBQUNsQyxtQ0FBOEI7QUFDOUIsbUNBQThCO0FBRTlCO0lBQ0UscUJBQVksT0FBTztRQUFuQixpQkFpQkM7UUFoQkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFFN0MsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLGdCQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBRyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsZ0JBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLGdCQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxnQkFBRyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZ0JBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEgsSUFBSSxDQUFDLG1CQUFtQixHQUFHLElBQUksQ0FBQztRQUVoQyxJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osa0JBQWtCLEVBQUUsVUFBQyxFQUFFLEVBQUUsQ0FBQztnQkFDeEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFO29CQUMzQixLQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUNyQjtZQUNILENBQUM7WUFDRCxvQkFBb0IsRUFBRSxVQUFDLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixLQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQztJQUVELHNDQUFnQixHQUFoQjtRQUNFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO0lBQzlCLENBQUM7SUFFRCxnQ0FBVSxHQUFWO1FBQ0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVELDZCQUFPLEdBQVA7UUFDRSxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztJQUN2QixDQUFDO0lBRUQsNkJBQU8sR0FBUDtRQUNFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2xCLE9BQU87U0FDUjtRQUVELElBQU0sSUFBSSxHQUFHLElBQUksQ0FBQztRQUNsQixJQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ3pDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSxVQUFTLEtBQUs7WUFDeEMsSUFBSSxLQUFLLEVBQUU7Z0JBQ1QsSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO2dCQUVkLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO29CQUM3QixJQUFJLEdBQUcsZ0JBQUcsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzlCO3FCQUFNLElBQUksS0FBSyxZQUFZLE1BQU0sRUFBRTtvQkFDbEMsSUFBSSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDakI7cUJBQU0sSUFBSSxLQUFLLFlBQVksSUFBSSxFQUFFO29CQUNoQyxJQUFJLEdBQUcsS0FBSyxDQUFDO2lCQUNkO2dCQUVELElBQUksQ0FBQyxJQUFJO29CQUFFLE9BQU87Z0JBQ2xCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUMvQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztnQkFDckIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7YUFDckM7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxtQ0FBYSxHQUFiLFVBQWMsQ0FBQztRQUNiLGdHQUFnRztRQUNoRyxxQ0FBcUM7UUFDckMsSUFBSSxJQUFJLENBQUMsbUJBQW1CLElBQUksa0JBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsRUFBRTtZQUNuRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNyQyxPQUFPO1NBQ1I7UUFFRCxJQUFJLGtCQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hDLElBQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDM0UsSUFBSSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7U0FDM0I7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztJQUN2QyxDQUFDO0lBRUQsaUNBQVcsR0FBWCxVQUFZLENBQUM7UUFDWCxJQUFJLGtCQUFLLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3hDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztTQUNoQjtJQUNILENBQUM7SUFDSCxrQkFBQztBQUFELENBQUMsQUEvRUQsSUErRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbGlzdHMgZnJvbSAnLi4vY29yZS9saXN0cyc7XG5pbXBvcnQgZG9tIGZyb20gJy4uL2NvcmUvZG9tJztcbmltcG9ydCBrZXkgZnJvbSAnLi4vY29yZS9rZXknO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBdXRvUmVwbGFjZSB7XG4gIGNvbnN0cnVjdG9yKGNvbnRleHQpIHtcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMub3B0aW9ucyA9IGNvbnRleHQub3B0aW9ucy5yZXBsYWNlIHx8IHt9O1xuXG4gICAgdGhpcy5rZXlzID0gW2tleS5jb2RlLkVOVEVSLCBrZXkuY29kZS5TUEFDRSwga2V5LmNvZGUuUEVSSU9ELCBrZXkuY29kZS5DT01NQSwga2V5LmNvZGUuU0VNSUNPTE9OLCBrZXkuY29kZS5TTEFTSF07XG4gICAgdGhpcy5wcmV2aW91c0tleWRvd25Db2RlID0gbnVsbDtcblxuICAgIHRoaXMuZXZlbnRzID0ge1xuICAgICAgJ3N1bW1lcm5vdGUua2V5dXAnOiAod2UsIGUpID0+IHtcbiAgICAgICAgaWYgKCFlLmlzRGVmYXVsdFByZXZlbnRlZCgpKSB7XG4gICAgICAgICAgdGhpcy5oYW5kbGVLZXl1cChlKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgICdzdW1tZXJub3RlLmtleWRvd24nOiAod2UsIGUpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGUpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgc2hvdWxkSW5pdGlhbGl6ZSgpIHtcbiAgICByZXR1cm4gISF0aGlzLm9wdGlvbnMubWF0Y2g7XG4gIH1cblxuICBpbml0aWFsaXplKCkge1xuICAgIHRoaXMubGFzdFdvcmQgPSBudWxsO1xuICB9XG5cbiAgZGVzdHJveSgpIHtcbiAgICB0aGlzLmxhc3RXb3JkID0gbnVsbDtcbiAgfVxuXG4gIHJlcGxhY2UoKSB7XG4gICAgaWYgKCF0aGlzLmxhc3RXb3JkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgY29uc3Qga2V5d29yZCA9IHRoaXMubGFzdFdvcmQudG9TdHJpbmcoKTtcbiAgICB0aGlzLm9wdGlvbnMubWF0Y2goa2V5d29yZCwgZnVuY3Rpb24obWF0Y2gpIHtcbiAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICBsZXQgbm9kZSA9ICcnO1xuXG4gICAgICAgIGlmICh0eXBlb2YgbWF0Y2ggPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgbm9kZSA9IGRvbS5jcmVhdGVUZXh0KG1hdGNoKTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCBpbnN0YW5jZW9mIGpRdWVyeSkge1xuICAgICAgICAgIG5vZGUgPSBtYXRjaFswXTtcbiAgICAgICAgfSBlbHNlIGlmIChtYXRjaCBpbnN0YW5jZW9mIE5vZGUpIHtcbiAgICAgICAgICBub2RlID0gbWF0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW5vZGUpIHJldHVybjtcbiAgICAgICAgc2VsZi5sYXN0V29yZC5pbnNlcnROb2RlKG5vZGUpO1xuICAgICAgICBzZWxmLmxhc3RXb3JkID0gbnVsbDtcbiAgICAgICAgc2VsZi5jb250ZXh0Lmludm9rZSgnZWRpdG9yLmZvY3VzJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBoYW5kbGVLZXlkb3duKGUpIHtcbiAgICAvLyB0aGlzIGZvcmNlcyBpdCB0byByZW1lbWJlciB0aGUgbGFzdCB3aG9sZSB3b3JkLCBldmVuIGlmIG11bHRpcGxlIHRlcm1pbmF0aW9uIGtleXMgYXJlIHByZXNzZWRcbiAgICAvLyBiZWZvcmUgdGhlIHByZXZpb3VzIGtleSBpcyBsZXQgZ28uXG4gICAgaWYgKHRoaXMucHJldmlvdXNLZXlkb3duQ29kZSAmJiBsaXN0cy5jb250YWlucyh0aGlzLmtleXMsIHRoaXMucHJldmlvdXNLZXlkb3duQ29kZSkpIHtcbiAgICAgIHRoaXMucHJldmlvdXNLZXlkb3duQ29kZSA9IGUua2V5Q29kZTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAobGlzdHMuY29udGFpbnModGhpcy5rZXlzLCBlLmtleUNvZGUpKSB7XG4gICAgICBjb25zdCB3b3JkUmFuZ2UgPSB0aGlzLmNvbnRleHQuaW52b2tlKCdlZGl0b3IuY3JlYXRlUmFuZ2UnKS5nZXRXb3JkUmFuZ2UoKTtcbiAgICAgIHRoaXMubGFzdFdvcmQgPSB3b3JkUmFuZ2U7XG4gICAgfVxuICAgIHRoaXMucHJldmlvdXNLZXlkb3duQ29kZSA9IGUua2V5Q29kZTtcbiAgfVxuXG4gIGhhbmRsZUtleXVwKGUpIHtcbiAgICBpZiAobGlzdHMuY29udGFpbnModGhpcy5rZXlzLCBlLmtleUNvZGUpKSB7XG4gICAgICB0aGlzLnJlcGxhY2UoKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==