all files / markdown-parser/plugin/ link.js

100% Statements 34/34
100% Branches 12/12
100% Functions 8/8
100% Lines 34/34
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   152× 152× 152×   152× 152×   70× 70×                     70×        
define(["require", "exports", "./../base/constant", "./../../common/constant"], function (require, exports, CONSTANT, EVENTS) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    var MDLink = (function () {
        function MDLink(parent) {
            this.parent = parent;
            this.selection = this.parent.markdownSelection;
            this.addEventListener();
        }
        MDLink.prototype.addEventListener = function () {
            this.parent.observer.on(CONSTANT.LINK_COMMAND, this.createLink, this);
            this.parent.observer.on(EVENTS.INTERNAL_DESTROY, this.destroy, this);
        };
        MDLink.prototype.removeEventListener = function () {
            this.parent.observer.off(CONSTANT.LINK_COMMAND, this.createLink);
            this.parent.observer.off(EVENTS.INTERNAL_DESTROY, this.destroy);
        };
        MDLink.prototype.createLink = function (e) {
            var textArea = this.parent.element;
            textArea.focus();
            var start = textArea.selectionStart;
            var end = textArea.selectionEnd;
            var text = (e.subCommand === 'Image') ? this.selection.getSelectedText(textArea) : e.item.text;
            var startOffset = (e.subCommand === 'Image') ? (start + 2) : (start + 1);
            var endOffset = (e.subCommand === 'Image') ? (end + 2) : (end + 1);
            text = (e.subCommand === 'Image') ? '![' + text + '](' + e.item.url + ')' : '[' + text + '](' + e.item.url + ')';
            textArea.value = textArea.value.substr(0, start)
                + text + textArea.value.substr(end, textArea.value.length);
            this.parent.markdownSelection.setSelection(textArea, startOffset, endOffset);
            this.restore(textArea, startOffset, endOffset, e);
        };
        MDLink.prototype.restore = function (textArea, start, end, event) {
            this.selection.save(start, end);
            this.selection.restore(textArea);
            if (event && event.callBack) {
                event.callBack({
                    requestType: event.subCommand,
                    selectedText: this.selection.getSelectedText(textArea),
                    editorMode: 'Markdown',
                    event: event.event
                });
            }
        };
        MDLink.prototype.destroy = function () {
            this.removeEventListener();
        };
        return MDLink;
    }());
    exports.MDLink = MDLink;
});