# all files / src/js/base/module/ ImageDialog.js

41.1% Statements 30/73
12.5% Branches 2/16
33.33% Functions 6/18
40.28% Lines 29/72

    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
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    1291×
    1×
    1×
    1×
    1×
    1×
    2×
    97×
    97×
    97×
    97×
    97×
    97×

    1×
    97×
    97×
    97×

    97×

    97×
    97×
    97×

    1×
    2×
    2×

    1×

    1×

    1×

    1×

    1×

     (function(global){global.wrappers['/Users/lqez/Dev/summernote/src/js/base/module/ImageDialog.js']=[function(require,module,exports,__dirname,__filename){ "use strict";
    exports.__esModule = true;
    var jquery_1 = require("jquery");
    var env_1 = require("../core/env");
    var key_1 = require("../core/key");
    var ImageDialog = /** @class */ (function () {
        function ImageDialog(context) {
            this.context = context;
            this.ui = jquery_1["default"].summernote.ui;
            this.$body = jquery_1["default"](document.body);
            this.$editor = context.layoutInfo.editor;
            this.options = context.options;
            this.lang = this.options.langInfo;
        }
        ImageDialog.prototype.initialize = function () {
            var $container = this.options.dialogsInBody ? this.$body : this.$editor;
            var imageLimitation = '';
            Iif (this.options.maximumImageFileSize) {
                var unit = Math.floor(Math.log(this.options.maximumImageFileSize) / Math.log(1024));
                var readableSize = (this.options.maximumImageFileSize / Math.pow(1024, unit)).toFixed(2) * 1 +
                    ' ' + ' KMGTP'[unit] + 'B';
                imageLimitation = "<small>" + (this.lang.image.maximumFileSize + ' : ' + readableSize) + "</small>";
            }
            var body = [
                '<div class="form-group note-form-group note-group-select-from-files">',
                '<label class="note-form-label">' + this.lang.image.selectFromFiles + '</label>',
                '<input class="note-image-input form-control-file note-form-control note-input" ',
                ' type="file" name="files" accept="image/*" multiple="multiple" />',
                imageLimitation,
                '</div>',
                '<div class="form-group note-group-image-url" style="overflow:auto;">',
                '<label class="note-form-label">' + this.lang.image.url + '</label>',
                '<input class="note-image-url form-control note-form-control note-input ',
                ' col-md-12" type="text" />',
                '</div>',
            ].join('');
            var buttonClass = 'btn btn-primary note-btn note-btn-primary note-image-btn';
            var footer = "<input type=\"button\" href=\"#\" class=\"" + buttonClass + "\" value=\"" + this.lang.image.insert + "\" disabled>";
            this.$dialog = this.ui.dialog({
                title: this.lang.image.insert,
                fade: this.options.dialogsFade,
                body: body,
                footer: footer
            }).render().appendTo($container);
        };
        ImageDialog.prototype.destroy = function () {
            this.ui.hideDialog(this.$dialog);
            this.$dialog.remove();
        };
        ImageDialog.prototype.bindEnterKey = function ($input, $btn) {
            $input.on('keypress', function (event) {
                if (event.keyCode === key_1["default"].code.ENTER) {
                    event.preventDefault();
                    $btn.trigger('click');
                }
            });
        };
        ImageDialog.prototype.show = function () {
            var _this = this;
            this.context.invoke('editor.saveRange');
            this.showImageDialog().then(function (data) {
                // [workaround] hide dialog before restore range for IE range focus
                _this.ui.hideDialog(_this.$dialog);
                _this.context.invoke('editor.restoreRange');
                if (typeof data === 'string') { // image url
                    // If onImageLinkInsert set,
                    if (_this.options.callbacks.onImageLinkInsert) {
                        _this.context.triggerEvent('image.link.insert', data);
                    }
                    else {
                        _this.context.invoke('editor.insertImage', data);
                    }
                }
                else { // array of files
                    _this.context.invoke('editor.insertImagesOrCallback', data);
                }
            }).fail(function () {
                _this.context.invoke('editor.restoreRange');
            });
        };
        /**
         * show image dialog
         *
         * @param {jQuery} $dialog
         * @return {Promise}
         */
        ImageDialog.prototype.showImageDialog = function () {
            var _this = this;
            return jquery_1["default"].Deferred(function (deferred) {
                var $imageInput = _this.$dialog.find('.note-image-input');
                var $imageUrl = _this.$dialog.find('.note-image-url');
                var $imageBtn = _this.$dialog.find('.note-image-btn');
                _this.ui.onDialogShown(_this.$dialog, function () {
                    _this.context.triggerEvent('dialog.shown');
                    // Cloning imageInput to clear element.
                    $imageInput.replaceWith($imageInput.clone().on('change', function (event) {
                        deferred.resolve(event.target.files || event.target.value);
                    }).val(''));
                    $imageBtn.click(function (event) {
                        event.preventDefault();
                        deferred.resolve($imageUrl.val());
                    });
                    $imageUrl.on('keyup paste', function () {
                        var url = $imageUrl.val();
                        _this.ui.toggleBtn($imageBtn, url);
                    }).val('');
                    if (!env_1["default"].isSupportTouch) {
                        $imageUrl.trigger('focus');
                    }
                    _this.bindEnterKey($imageUrl, $imageBtn);
                });
                _this.ui.onDialogHidden(_this.$dialog, function () {
                    $imageInput.off('change');
                    $imageUrl.off('keyup paste keypress');
                    $imageBtn.off('click');
                    if (deferred.state() === 'pending') {
                        deferred.reject();
                    }
                });
                _this.ui.showDialog(_this.$dialog);
            });
        };
        return ImageDialog;
    }());
    exports["default"] = ImageDialog;

    },'src/js/base/module/ImageDialog.js',{"jquery":"/Users/lqez/Dev/summernote/node_modules/jquery/dist/jquery.js","../core/env":"/Users/lqez/Dev/summernote/src/js/base/core/env.js","../core/key":"/Users/lqez/Dev/summernote/src/js/base/core/key.js"}];})(this);
    //# sourceMappingURL=data:application/json;charset=utf-8;base64,