{"version":3,"file":"js/chunk-vendors-1656f0b4.bbdc31c3.js","mappings":"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","sources":["webpack://i4proportal/./node_modules/vue-upload-component/dist/vue-upload-component.js","webpack://i4proportal/./node_modules/vue2-editor/dist/vue2-editor.esm.js"],"sourcesContent":["/*!\n * Name: vue-upload-component\n * Version: 2.8.21\n * Author: Marco Lang\n */\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global.VueUploadComponent = factory());\n}(this, (function () { 'use strict';\n\n  /**\n   * Creates a XHR request\n   *\n   * @param {Object} options\n   */\n  var createRequest = function createRequest(options) {\n    var xhr = new XMLHttpRequest();\n    xhr.open(options.method || 'GET', options.url);\n    xhr.responseType = 'json';\n    if (options.headers) {\n      Object.keys(options.headers).forEach(function (key) {\n        xhr.setRequestHeader(key, options.headers[key]);\n      });\n    }\n\n    return xhr;\n  };\n\n  /**\n   * Sends a XHR request with certain body\n   *\n   * @param {XMLHttpRequest} xhr\n   * @param {Object} body\n   */\n  var sendRequest = function sendRequest(xhr, body) {\n    return new Promise(function (resolve, reject) {\n      xhr.onload = function () {\n        if (xhr.status >= 200 && xhr.status < 300) {\n          var response;\n          try {\n            response = JSON.parse(xhr.response);\n          } catch (err) {\n            response = xhr.response;\n          }\n          resolve(response);\n        } else {\n          reject(xhr.response);\n        }\n      };\n      xhr.onerror = function () {\n        return reject(xhr.response);\n      };\n      xhr.send(JSON.stringify(body));\n    });\n  };\n\n  /**\n   * Sends a XHR request with certain form data\n   *\n   * @param {XMLHttpRequest} xhr\n   * @param {Object} data\n   */\n  var sendFormRequest = function sendFormRequest(xhr, data) {\n    var body = new FormData();\n    for (var name in data) {\n      body.append(name, data[name]);\n    }\n\n    return new Promise(function (resolve, reject) {\n      xhr.onload = function () {\n        if (xhr.status >= 200 && xhr.status < 300) {\n          var response;\n          try {\n            response = JSON.parse(xhr.response);\n          } catch (err) {\n            response = xhr.response;\n          }\n          resolve(response);\n        } else {\n          reject(xhr.response);\n        }\n      };\n      xhr.onerror = function () {\n        return reject(xhr.response);\n      };\n      xhr.send(body);\n    });\n  };\n\n  /**\n   * Creates and sends XHR request\n   *\n   * @param {Object} options\n   *\n   * @returns Promise\n   */\n  function request (options) {\n    var xhr = createRequest(options);\n\n    return sendRequest(xhr, options.body);\n  }\n\n  var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n  var ChunkUploadHandler = function () {\n    /**\n     * Constructor\n     *\n     * @param {File} file\n     * @param {Object} options\n     */\n    function ChunkUploadHandler(file, options) {\n      _classCallCheck(this, ChunkUploadHandler);\n\n      this.file = file;\n      this.options = options;\n      this.chunks = [];\n      this.sessionId = null;\n      this.chunkSize = null;\n      this.speedInterval = null;\n    }\n\n    /**\n     * Gets the max retries from options\n     */\n\n\n    _createClass(ChunkUploadHandler, [{\n      key: 'createChunks',\n\n\n      /**\n       * Creates all the chunks in the initial state\n       */\n      value: function createChunks() {\n        this.chunks = [];\n\n        var start = 0;\n        var end = this.chunkSize;\n        while (start < this.fileSize) {\n          this.chunks.push({\n            blob: this.file.file.slice(start, end),\n            startOffset: start,\n            active: false,\n            retries: this.maxRetries\n          });\n          start = end;\n          end = start + this.chunkSize;\n        }\n      }\n\n      /**\n       * Updates the progress of the file with the handler's progress\n       */\n\n    }, {\n      key: 'updateFileProgress',\n      value: function updateFileProgress() {\n        this.file.progress = this.progress;\n      }\n\n      /**\n       * Paues the upload process\n       * - Stops all active requests\n       * - Sets the file not active\n       */\n\n    }, {\n      key: 'pause',\n      value: function pause() {\n        this.file.active = false;\n        this.stopChunks();\n      }\n\n      /**\n       * Stops all the current chunks\n       */\n\n    }, {\n      key: 'stopChunks',\n      value: function stopChunks() {\n        this.chunksUploading.forEach(function (chunk) {\n          chunk.xhr.abort();\n          chunk.active = false;\n        });\n\n        this.stopSpeedCalc();\n      }\n\n      /**\n       * Resumes the file upload\n       * - Sets the file active\n       * - Starts the following chunks\n       */\n\n    }, {\n      key: 'resume',\n      value: function resume() {\n        this.file.active = true;\n        this.startChunking();\n      }\n\n      /**\n       * Starts the file upload\n       *\n       * @returns Promise\n       * - resolve  The file was uploaded\n       * - reject   The file upload failed\n       */\n\n    }, {\n      key: 'upload',\n      value: function upload() {\n        var _this = this;\n\n        this.promise = new Promise(function (resolve, reject) {\n          _this.resolve = resolve;\n          _this.reject = reject;\n        });\n        this.start();\n\n        return this.promise;\n      }\n\n      /**\n       * Start phase\n       * Sends a request to the backend to initialise the chunks\n       */\n\n    }, {\n      key: 'start',\n      value: function start() {\n        var _this2 = this;\n\n        request({\n          method: 'POST',\n          headers: Object.assign({}, this.headers, {\n            'Content-Type': 'application/json'\n          }),\n          url: this.action,\n          body: Object.assign(this.startBody, {\n            phase: 'start',\n            mime_type: this.fileType,\n            size: this.fileSize,\n            name: this.fileName\n          })\n        }).then(function (res) {\n          if (res.status !== 'success') {\n            _this2.file.response = res;\n            return _this2.reject('server');\n          }\n\n          _this2.sessionId = res.data.session_id;\n          _this2.chunkSize = res.data.end_offset;\n\n          _this2.createChunks();\n          _this2.startChunking();\n        }).catch(function (res) {\n          _this2.file.response = res;\n          _this2.reject('server');\n        });\n      }\n\n      /**\n       * Starts to upload chunks\n       */\n\n    }, {\n      key: 'startChunking',\n      value: function startChunking() {\n        for (var i = 0; i < this.maxActiveChunks; i++) {\n          this.uploadNextChunk();\n        }\n\n        this.startSpeedCalc();\n      }\n\n      /**\n       * Uploads the next chunk\n       * - Won't do anything if the process is paused\n       * - Will start finish phase if there are no more chunks to upload\n       */\n\n    }, {\n      key: 'uploadNextChunk',\n      value: function uploadNextChunk() {\n        if (this.file.active) {\n          if (this.hasChunksToUpload) {\n            return this.uploadChunk(this.chunksToUpload[0]);\n          }\n\n          if (this.chunksUploading.length === 0) {\n            return this.finish();\n          }\n        }\n      }\n\n      /**\n       * Uploads a chunk\n       * - Sends the chunk to the backend\n       * - Sets the chunk as uploaded if everything went well\n       * - Decreases the number of retries if anything went wrong\n       * - Fails if there are no more retries\n       *\n       * @param {Object} chunk\n       */\n\n    }, {\n      key: 'uploadChunk',\n      value: function uploadChunk(chunk) {\n        var _this3 = this;\n\n        chunk.progress = 0;\n        chunk.active = true;\n        this.updateFileProgress();\n        chunk.xhr = createRequest({\n          method: 'POST',\n          headers: this.headers,\n          url: this.action\n        });\n\n        chunk.xhr.upload.addEventListener('progress', function (evt) {\n          if (evt.lengthComputable) {\n            chunk.progress = Math.round(evt.loaded / evt.total * 100);\n          }\n        }, false);\n\n        sendFormRequest(chunk.xhr, Object.assign(this.uploadBody, {\n          phase: 'upload',\n          session_id: this.sessionId,\n          start_offset: chunk.startOffset,\n          chunk: chunk.blob\n        })).then(function (res) {\n          chunk.active = false;\n          if (res.status === 'success') {\n            chunk.uploaded = true;\n          } else {\n            if (chunk.retries-- <= 0) {\n              _this3.stopChunks();\n              return _this3.reject('upload');\n            }\n          }\n\n          _this3.uploadNextChunk();\n        }).catch(function () {\n          chunk.active = false;\n          if (chunk.retries-- <= 0) {\n            _this3.stopChunks();\n            return _this3.reject('upload');\n          }\n\n          _this3.uploadNextChunk();\n        });\n      }\n\n      /**\n       * Finish phase\n       * Sends a request to the backend to finish the process\n       */\n\n    }, {\n      key: 'finish',\n      value: function finish() {\n        var _this4 = this;\n\n        this.updateFileProgress();\n        this.stopSpeedCalc();\n\n        request({\n          method: 'POST',\n          headers: Object.assign({}, this.headers, {\n            'Content-Type': 'application/json'\n          }),\n          url: this.action,\n          body: Object.assign(this.finishBody, {\n            phase: 'finish',\n            session_id: this.sessionId\n          })\n        }).then(function (res) {\n          _this4.file.response = res;\n          if (res.status !== 'success') {\n            return _this4.reject('server');\n          }\n\n          _this4.resolve(res);\n        }).catch(function (res) {\n          _this4.file.response = res;\n          _this4.reject('server');\n        });\n      }\n\n      /**\n       * Sets an interval to calculate and\n       * set upload speed every 3 seconds\n       */\n\n    }, {\n      key: 'startSpeedCalc',\n      value: function startSpeedCalc() {\n        var _this5 = this;\n\n        this.file.speed = 0;\n        var lastUploadedBytes = 0;\n        if (!this.speedInterval) {\n          this.speedInterval = window.setInterval(function () {\n            var uploadedBytes = _this5.progress / 100 * _this5.fileSize;\n            _this5.file.speed = uploadedBytes - lastUploadedBytes;\n            lastUploadedBytes = uploadedBytes;\n          }, 1000);\n        }\n      }\n\n      /**\n       * Removes the upload speed interval\n       */\n\n    }, {\n      key: 'stopSpeedCalc',\n      value: function stopSpeedCalc() {\n        this.speedInterval && window.clearInterval(this.speedInterval);\n        this.speedInterval = null;\n        this.file.speed = 0;\n      }\n    }, {\n      key: 'maxRetries',\n      get: function get() {\n        return parseInt(this.options.maxRetries, 10);\n      }\n\n      /**\n       * Gets the max number of active chunks being uploaded at once from options\n       */\n\n    }, {\n      key: 'maxActiveChunks',\n      get: function get() {\n        return parseInt(this.options.maxActive, 10);\n      }\n\n      /**\n       * Gets the file type\n       */\n\n    }, {\n      key: 'fileType',\n      get: function get() {\n        return this.file.type;\n      }\n\n      /**\n       * Gets the file size\n       */\n\n    }, {\n      key: 'fileSize',\n      get: function get() {\n        return this.file.size;\n      }\n\n      /**\n       * Gets the file name\n       */\n\n    }, {\n      key: 'fileName',\n      get: function get() {\n        return this.file.name;\n      }\n\n      /**\n       * Gets action (url) to upload the file\n       */\n\n    }, {\n      key: 'action',\n      get: function get() {\n        return this.options.action || null;\n      }\n\n      /**\n       * Gets the body to be merged when sending the request in start phase\n       */\n\n    }, {\n      key: 'startBody',\n      get: function get() {\n        return this.options.startBody || {};\n      }\n\n      /**\n       * Gets the body to be merged when sending the request in upload phase\n       */\n\n    }, {\n      key: 'uploadBody',\n      get: function get() {\n        return this.options.uploadBody || {};\n      }\n\n      /**\n       * Gets the body to be merged when sending the request in finish phase\n       */\n\n    }, {\n      key: 'finishBody',\n      get: function get() {\n        return this.options.finishBody || {};\n      }\n\n      /**\n       * Gets the headers of the requests from options\n       */\n\n    }, {\n      key: 'headers',\n      get: function get() {\n        return this.options.headers || {};\n      }\n\n      /**\n       * Whether it's ready to upload files or not\n       */\n\n    }, {\n      key: 'readyToUpload',\n      get: function get() {\n        return !!this.chunks;\n      }\n\n      /**\n       * Gets the progress of the chunk upload\n       * - Gets all the completed chunks\n       * - Gets the progress of all the chunks that are being uploaded\n       */\n\n    }, {\n      key: 'progress',\n      get: function get() {\n        var _this6 = this;\n\n        var completedProgress = this.chunksUploaded.length / this.chunks.length * 100;\n        var uploadingProgress = this.chunksUploading.reduce(function (progress, chunk) {\n          return progress + (chunk.progress | 0) / _this6.chunks.length;\n        }, 0);\n\n        return Math.min(completedProgress + uploadingProgress, 100);\n      }\n\n      /**\n       * Gets all the chunks that are pending to be uploaded\n       */\n\n    }, {\n      key: 'chunksToUpload',\n      get: function get() {\n        return this.chunks.filter(function (chunk) {\n          return !chunk.active && !chunk.uploaded;\n        });\n      }\n\n      /**\n       * Whether there are chunks to upload or not\n       */\n\n    }, {\n      key: 'hasChunksToUpload',\n      get: function get() {\n        return this.chunksToUpload.length > 0;\n      }\n\n      /**\n       * Gets all the chunks that are uploading\n       */\n\n    }, {\n      key: 'chunksUploading',\n      get: function get() {\n        return this.chunks.filter(function (chunk) {\n          return !!chunk.xhr && !!chunk.active;\n        });\n      }\n\n      /**\n       * Gets all the chunks that have finished uploading\n       */\n\n    }, {\n      key: 'chunksUploaded',\n      get: function get() {\n        return this.chunks.filter(function (chunk) {\n          return !!chunk.uploaded;\n        });\n      }\n    }]);\n\n    return ChunkUploadHandler;\n  }();\n\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n  //\n\n  var script = {\n    methods: {\n      change: function change(e) {\n        this.$parent.addInputFile(e.target);\n        if (e.target.files) {\n          e.target.value = '';\n          if (e.target.files.length && !/safari/i.test(navigator.userAgent)) {\n            e.target.type = '';\n            e.target.type = 'file';\n          }\n        } else {\n          // ie9 fix #219\n          this.$destroy();\n          // eslint-disable-next-line\n          new this.constructor({\n            parent: this.$parent,\n            el: this.$el\n          });\n        }\n      }\n    }\n  };\n\n  function normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n  /* server only */\n  , shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n    if (typeof shadowMode !== 'boolean') {\n      createInjectorSSR = createInjector;\n      createInjector = shadowMode;\n      shadowMode = false;\n    } // Vue.extend constructor export interop.\n\n\n    var options = typeof script === 'function' ? script.options : script; // render functions\n\n    if (template && template.render) {\n      options.render = template.render;\n      options.staticRenderFns = template.staticRenderFns;\n      options._compiled = true; // functional template\n\n      if (isFunctionalTemplate) {\n        options.functional = true;\n      }\n    } // scopedId\n\n\n    if (scopeId) {\n      options._scopeId = scopeId;\n    }\n\n    var hook;\n\n    if (moduleIdentifier) {\n      // server build\n      hook = function hook(context) {\n        // 2.3 injection\n        context = context || // cached call\n        this.$vnode && this.$vnode.ssrContext || // stateful\n        this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n        // 2.2 with runInNewContext: true\n\n        if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n          context = __VUE_SSR_CONTEXT__;\n        } // inject component styles\n\n\n        if (style) {\n          style.call(this, createInjectorSSR(context));\n        } // register component module identifier for async chunk inference\n\n\n        if (context && context._registeredComponents) {\n          context._registeredComponents.add(moduleIdentifier);\n        }\n      }; // used by ssr in case component is cached and beforeCreate\n      // never gets called\n\n\n      options._ssrRegister = hook;\n    } else if (style) {\n      hook = shadowMode ? function () {\n        style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n      } : function (context) {\n        style.call(this, createInjector(context));\n      };\n    }\n\n    if (hook) {\n      if (options.functional) {\n        // register for functional component in vue file\n        var originalRender = options.render;\n\n        options.render = function renderWithStyleInjection(h, context) {\n          hook.call(context);\n          return originalRender(h, context);\n        };\n      } else {\n        // inject component registration as beforeCreate hook\n        var existing = options.beforeCreate;\n        options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n      }\n    }\n\n    return script;\n  }\n\n  var normalizeComponent_1 = normalizeComponent;\n\n  /* script */\n  var __vue_script__ = script;\n\n  /* template */\n  var __vue_render__ = function __vue_render__() {\n    var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('input', { attrs: { \"type\": \"file\", \"name\": _vm.$parent.name, \"id\": _vm.$parent.inputId || _vm.$parent.name, \"accept\": _vm.$parent.accept, \"capture\": _vm.$parent.capture, \"disabled\": _vm.$parent.disabled, \"webkitdirectory\": _vm.$parent.directory && _vm.$parent.features.directory, \"directory\": _vm.$parent.directory && _vm.$parent.features.directory, \"multiple\": _vm.$parent.multiple && _vm.$parent.features.html5 }, on: { \"change\": _vm.change } });\n  };\n  var __vue_staticRenderFns__ = [];\n\n  /* style */\n  var __vue_inject_styles__ = undefined;\n  /* scoped */\n  var __vue_scope_id__ = undefined;\n  /* module identifier */\n  var __vue_module_identifier__ = undefined;\n  /* functional template */\n  var __vue_is_functional_template__ = false;\n  /* style inject */\n\n  /* style inject SSR */\n\n  var InputFile = normalizeComponent_1({ render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ }, __vue_inject_styles__, __vue_script__, __vue_scope_id__, __vue_is_functional_template__, __vue_module_identifier__, undefined, undefined);\n\n  var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\n  var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\n  function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n  var CHUNK_DEFAULT_OPTIONS = {\n    headers: {},\n    action: '',\n    minSize: 1048576,\n    maxActive: 3,\n    maxRetries: 5,\n\n    handler: ChunkUploadHandler\n  };\n\n  var script$1 = {\n    components: {\n      InputFile: InputFile\n    },\n    props: {\n      inputId: {\n        type: String\n      },\n\n      name: {\n        type: String,\n        default: 'file'\n      },\n\n      accept: {\n        type: String\n      },\n\n      capture: {},\n\n      disabled: {},\n\n      multiple: {\n        type: Boolean\n      },\n\n      maximum: {\n        type: Number,\n        default: function _default() {\n          return this.multiple ? 0 : 1;\n        }\n      },\n\n      addIndex: {\n        type: [Boolean, Number]\n      },\n\n      directory: {\n        type: Boolean\n      },\n\n      postAction: {\n        type: String\n      },\n\n      putAction: {\n        type: String\n      },\n\n      customAction: {\n        type: Function\n      },\n\n      headers: {\n        type: Object,\n        default: Object\n      },\n\n      data: {\n        type: Object,\n        default: Object\n      },\n\n      timeout: {\n        type: Number,\n        default: 0\n      },\n\n      drop: {\n        default: false\n      },\n\n      dropDirectory: {\n        type: Boolean,\n        default: true\n      },\n\n      size: {\n        type: Number,\n        default: 0\n      },\n\n      extensions: {\n        default: Array\n      },\n\n      value: {\n        type: Array,\n        default: Array\n      },\n\n      thread: {\n        type: Number,\n        default: 1\n      },\n\n      // Chunk upload enabled\n      chunkEnabled: {\n        type: Boolean,\n        default: false\n      },\n\n      // Chunk upload properties\n      chunk: {\n        type: Object,\n        default: function _default() {\n          return CHUNK_DEFAULT_OPTIONS;\n        }\n      }\n    },\n\n    data: function data() {\n      return {\n        files: this.value,\n        features: {\n          html5: true,\n          directory: false,\n          drop: false\n        },\n\n        active: false,\n        dropActive: false,\n\n        uploading: 0,\n\n        destroy: false\n      };\n    },\n\n\n    /**\n     * mounted\n     * @return {[type]} [description]\n     */\n    mounted: function mounted() {\n      var input = document.createElement('input');\n      input.type = 'file';\n      input.multiple = true;\n\n      // html5 特征\n      if (window.FormData && input.files) {\n        // 上传目录特征\n        if (typeof input.webkitdirectory === 'boolean' || typeof input.directory === 'boolean') {\n          this.features.directory = true;\n        }\n\n        // 拖拽特征\n        if (this.features.html5 && typeof input.ondrop !== 'undefined') {\n          this.features.drop = true;\n        }\n      } else {\n        this.features.html5 = false;\n      }\n\n      // files 定位缓存\n      this.maps = {};\n      if (this.files) {\n        for (var i = 0; i < this.files.length; i++) {\n          var file = this.files[i];\n          this.maps[file.id] = file;\n        }\n      }\n\n      this.$nextTick(function () {\n        var _this = this;\n\n        // 更新下父级\n        if (this.$parent) {\n          this.$parent.$forceUpdate();\n          // 拖拽渲染\n          this.$parent.$nextTick(function () {\n            _this.watchDrop(_this.drop);\n          });\n        } else {\n          // 拖拽渲染\n          this.watchDrop(this.drop);\n        }\n      });\n    },\n\n\n    /**\n     * beforeDestroy\n     * @return {[type]} [description]\n     */\n    beforeDestroy: function beforeDestroy() {\n      // 已销毁\n      this.destroy = true;\n\n      // 设置成不激活\n      this.active = false;\n\n      // 销毁拖拽事件\n      this.watchDrop(false);\n    },\n\n\n    computed: {\n      /**\n       * uploading 正在上传的线程\n       * @return {[type]} [description]\n       */\n\n      /**\n       * uploaded 文件列表是否全部已上传\n       * @return {[type]} [description]\n       */\n      uploaded: function uploaded() {\n        var file = void 0;\n        for (var i = 0; i < this.files.length; i++) {\n          file = this.files[i];\n          if (file.fileObject && !file.error && !file.success) {\n            return false;\n          }\n        }\n        return true;\n      },\n      chunkOptions: function chunkOptions() {\n        return Object.assign(CHUNK_DEFAULT_OPTIONS, this.chunk);\n      },\n      className: function className() {\n        return ['file-uploads', this.features.html5 ? 'file-uploads-html5' : 'file-uploads-html4', this.features.directory && this.directory ? 'file-uploads-directory' : undefined, this.features.drop && this.drop ? 'file-uploads-drop' : undefined, this.disabled ? 'file-uploads-disabled' : undefined];\n      }\n    },\n\n    watch: {\n      active: function active(_active) {\n        this.watchActive(_active);\n      },\n      dropActive: function dropActive() {\n        if (this.$parent) {\n          this.$parent.$forceUpdate();\n        }\n      },\n      drop: function drop(value) {\n        this.watchDrop(value);\n      },\n      value: function value(files) {\n        if (this.files === files) {\n          return;\n        }\n        this.files = files;\n\n        var oldMaps = this.maps;\n\n        // 重写 maps 缓存\n        this.maps = {};\n        for (var i = 0; i < this.files.length; i++) {\n          var file = this.files[i];\n          this.maps[file.id] = file;\n        }\n\n        // add, update\n        for (var key in this.maps) {\n          var newFile = this.maps[key];\n          var oldFile = oldMaps[key];\n          if (newFile !== oldFile) {\n            this.emitFile(newFile, oldFile);\n          }\n        }\n\n        // delete\n        for (var _key in oldMaps) {\n          if (!this.maps[_key]) {\n            this.emitFile(undefined, oldMaps[_key]);\n          }\n        }\n      }\n    },\n\n    methods: {\n\n      // 清空\n      clear: function clear() {\n        if (this.files.length) {\n          var files = this.files;\n          this.files = [];\n\n          // 定位\n          this.maps = {};\n\n          // 事件\n          this.emitInput();\n          for (var i = 0; i < files.length; i++) {\n            this.emitFile(undefined, files[i]);\n          }\n        }\n        return true;\n      },\n\n\n      // 选择\n      get: function get(id) {\n        if (!id) {\n          return false;\n        }\n\n        if ((typeof id === 'undefined' ? 'undefined' : _typeof(id)) === 'object') {\n          return this.maps[id.id] || false;\n        }\n\n        return this.maps[id] || false;\n      },\n\n\n      // 添加\n      add: function add(_files) {\n        var index = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.addIndex;\n\n        var files = _files;\n        var isArray = files instanceof Array;\n\n        // 不是数组整理成数组\n        if (!isArray) {\n          files = [files];\n        }\n\n        // 遍历规范对象\n        var addFiles = [];\n        for (var i = 0; i < files.length; i++) {\n          var file = files[i];\n          if (this.features.html5 && file instanceof Blob) {\n            file = {\n              file: file,\n              size: file.size,\n              name: file.webkitRelativePath || file.relativePath || file.name || 'unknown',\n              type: file.type\n            };\n          }\n          var fileObject = false;\n          if (file.fileObject === false) ; else if (file.fileObject) {\n            fileObject = true;\n          } else if (typeof Element !== 'undefined' && file.el instanceof Element) {\n            fileObject = true;\n          } else if (typeof Blob !== 'undefined' && file.file instanceof Blob) {\n            fileObject = true;\n          }\n          if (fileObject) {\n            file = _extends({\n              fileObject: true,\n              size: -1,\n              name: 'Filename',\n              type: '',\n              active: false,\n              error: '',\n              success: false,\n              putAction: this.putAction,\n              postAction: this.postAction,\n              timeout: this.timeout\n            }, file, {\n              response: {},\n\n              progress: '0.00', // 只读\n              speed: 0 // 只读\n              // xhr: false,                // 只读\n              // iframe: false,             // 只读\n            });\n\n            file.data = _extends({}, this.data, file.data ? file.data : {});\n\n            file.headers = _extends({}, this.headers, file.headers ? file.headers : {});\n          }\n\n          // 必须包含 id\n          if (!file.id) {\n            file.id = Math.random().toString(36).substr(2);\n          }\n\n          if (this.emitFilter(file, undefined)) {\n            continue;\n          }\n\n          // 最大数量限制\n          if (this.maximum > 1 && addFiles.length + this.files.length >= this.maximum) {\n            break;\n          }\n\n          addFiles.push(file);\n\n          // 最大数量限制\n          if (this.maximum === 1) {\n            break;\n          }\n        }\n\n        // 没有文件\n        if (!addFiles.length) {\n          return false;\n        }\n\n        // 如果是 1 清空\n        if (this.maximum === 1) {\n          this.clear();\n        }\n\n        // 添加进去 files\n        var newFiles = void 0;\n        if (index === true || index === 0) {\n          newFiles = addFiles.concat(this.files);\n        } else if (index) {\n          var _newFiles;\n\n          newFiles = this.files.concat([]);\n          (_newFiles = newFiles).splice.apply(_newFiles, [index, 0].concat(addFiles));\n        } else {\n          newFiles = this.files.concat(addFiles);\n        }\n\n        this.files = newFiles;\n\n        // 定位\n        for (var _i = 0; _i < addFiles.length; _i++) {\n          var _file2 = addFiles[_i];\n          this.maps[_file2.id] = _file2;\n        }\n\n        // 事件\n        this.emitInput();\n        for (var _i2 = 0; _i2 < addFiles.length; _i2++) {\n          this.emitFile(addFiles[_i2], undefined);\n        }\n\n        return isArray ? addFiles : addFiles[0];\n      },\n\n\n      // 添加表单文件\n      addInputFile: function addInputFile(el) {\n        var files = [];\n        if (el.files) {\n          for (var i = 0; i < el.files.length; i++) {\n            var file = el.files[i];\n            files.push({\n              size: file.size,\n              name: file.webkitRelativePath || file.relativePath || file.name,\n              type: file.type,\n              file: file\n            });\n          }\n        } else {\n          var names = el.value.replace(/\\\\/g, '/').split('/');\n          delete el.__vuex__;\n          files.push({\n            name: names[names.length - 1],\n            el: el\n          });\n        }\n        return this.add(files);\n      },\n\n\n      // 添加 DataTransfer\n      addDataTransfer: function addDataTransfer(dataTransfer) {\n        var _this2 = this;\n\n        var files = [];\n        if (dataTransfer.items && dataTransfer.items.length) {\n          var items = [];\n          for (var i = 0; i < dataTransfer.items.length; i++) {\n            var item = dataTransfer.items[i];\n            if (item.getAsEntry) {\n              item = item.getAsEntry() || item.getAsFile();\n            } else if (item.webkitGetAsEntry) {\n              item = item.webkitGetAsEntry() || item.getAsFile();\n            } else {\n              item = item.getAsFile();\n            }\n            if (item) {\n              items.push(item);\n            }\n          }\n\n          return new Promise(function (resolve, reject) {\n            var forEach = function forEach(i) {\n              var item = items[i];\n              // 结束 文件数量大于 最大数量\n              if (!item || _this2.maximum > 0 && files.length >= _this2.maximum) {\n                return resolve(_this2.add(files));\n              }\n              _this2.getEntry(item).then(function (results) {\n                files.push.apply(files, _toConsumableArray(results));\n                forEach(i + 1);\n              });\n            };\n            forEach(0);\n          });\n        }\n\n        if (dataTransfer.files.length) {\n          for (var _i3 = 0; _i3 < dataTransfer.files.length; _i3++) {\n            files.push(dataTransfer.files[_i3]);\n            if (this.maximum > 0 && files.length >= this.maximum) {\n              break;\n            }\n          }\n          return Promise.resolve(this.add(files));\n        }\n\n        return Promise.resolve([]);\n      },\n\n\n      // 获得 entry\n      getEntry: function getEntry(entry) {\n        var _this3 = this;\n\n        var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n\n        return new Promise(function (resolve, reject) {\n          if (entry.isFile) {\n            entry.file(function (file) {\n              resolve([{\n                size: file.size,\n                name: path + file.name,\n                type: file.type,\n                file: file\n              }]);\n            });\n          } else if (entry.isDirectory && _this3.dropDirectory) {\n            var files = [];\n            var dirReader = entry.createReader();\n            var readEntries = function readEntries() {\n              dirReader.readEntries(function (entries) {\n                var forEach = function forEach(i) {\n                  if (!entries[i] && i === 0 || _this3.maximum > 0 && files.length >= _this3.maximum) {\n                    return resolve(files);\n                  }\n                  if (!entries[i]) {\n                    return readEntries();\n                  }\n                  _this3.getEntry(entries[i], path + entry.name + '/').then(function (results) {\n                    files.push.apply(files, _toConsumableArray(results));\n                    forEach(i + 1);\n                  });\n                };\n                forEach(0);\n              });\n            };\n            readEntries();\n          } else {\n            resolve([]);\n          }\n        });\n      },\n      replace: function replace(id1, id2) {\n        var file1 = this.get(id1);\n        var file2 = this.get(id2);\n        if (!file1 || !file2 || file1 === file2) {\n          return false;\n        }\n        var files = this.files.concat([]);\n        var index1 = files.indexOf(file1);\n        var index2 = files.indexOf(file2);\n        if (index1 === -1 || index2 === -1) {\n          return false;\n        }\n        files[index1] = file2;\n        files[index2] = file1;\n        this.files = files;\n        this.emitInput();\n        return true;\n      },\n\n\n      // 移除\n      remove: function remove(id) {\n        var file = this.get(id);\n        if (file) {\n          if (this.emitFilter(undefined, file)) {\n            return false;\n          }\n          var files = this.files.concat([]);\n          var index = files.indexOf(file);\n          if (index === -1) {\n            console.error('remove', file);\n            return false;\n          }\n          files.splice(index, 1);\n          this.files = files;\n\n          // 定位\n          delete this.maps[file.id];\n\n          // 事件\n          this.emitInput();\n          this.emitFile(undefined, file);\n        }\n        return file;\n      },\n\n\n      // 更新\n      update: function update(id, data) {\n        var file = this.get(id);\n        if (file) {\n          var newFile = _extends({}, file, data);\n          // 停用必须加上错误\n          if (file.fileObject && file.active && !newFile.active && !newFile.error && !newFile.success) {\n            newFile.error = 'abort';\n          }\n\n          if (this.emitFilter(newFile, file)) {\n            return false;\n          }\n\n          var files = this.files.concat([]);\n          var index = files.indexOf(file);\n          if (index === -1) {\n            console.error('update', file);\n            return false;\n          }\n          files.splice(index, 1, newFile);\n          this.files = files;\n\n          // 删除  旧定位 写入 新定位 (已便支持修改id)\n          delete this.maps[file.id];\n          this.maps[newFile.id] = newFile;\n\n          // 事件\n          this.emitInput();\n          this.emitFile(newFile, file);\n          return newFile;\n        }\n        return false;\n      },\n\n\n      // 预处理 事件 过滤器\n      emitFilter: function emitFilter(newFile, oldFile) {\n        var isPrevent = false;\n        this.$emit('input-filter', newFile, oldFile, function () {\n          isPrevent = true;\n          return isPrevent;\n        });\n        return isPrevent;\n      },\n\n\n      // 处理后 事件 分发\n      emitFile: function emitFile(newFile, oldFile) {\n        this.$emit('input-file', newFile, oldFile);\n        if (newFile && newFile.fileObject && newFile.active && (!oldFile || !oldFile.active)) {\n          this.uploading++;\n          // 激活\n          this.$nextTick(function () {\n            var _this4 = this;\n\n            setTimeout(function () {\n              _this4.upload(newFile).then(function () {\n                // eslint-disable-next-line\n                newFile = _this4.get(newFile);\n                if (newFile && newFile.fileObject) {\n                  _this4.update(newFile, {\n                    active: false,\n                    success: !newFile.error\n                  });\n                }\n              }).catch(function (e) {\n                _this4.update(newFile, {\n                  active: false,\n                  success: false,\n                  error: e.code || e.error || e.message || e\n                });\n              });\n            }, parseInt(Math.random() * 50 + 50, 10));\n          });\n        } else if ((!newFile || !newFile.fileObject || !newFile.active) && oldFile && oldFile.fileObject && oldFile.active) {\n          // 停止\n          this.uploading--;\n        }\n\n        // 自动延续激活\n        if (this.active && (Boolean(newFile) !== Boolean(oldFile) || newFile.active !== oldFile.active)) {\n          this.watchActive(true);\n        }\n      },\n      emitInput: function emitInput() {\n        this.$emit('input', this.files);\n      },\n\n\n      // 上传\n      upload: function upload(id) {\n        var file = this.get(id);\n\n        // 被删除\n        if (!file) {\n          return Promise.reject('not_exists');\n        }\n\n        // 不是文件对象\n        if (!file.fileObject) {\n          return Promise.reject('file_object');\n        }\n\n        // 有错误直接响应\n        if (file.error) {\n          return Promise.reject(file.error);\n        }\n\n        // 已完成直接响应\n        if (file.success) {\n          return Promise.resolve(file);\n        }\n\n        // 后缀\n        var extensions = this.extensions;\n        if (extensions && (extensions.length || typeof extensions.length === 'undefined')) {\n          if ((typeof extensions === 'undefined' ? 'undefined' : _typeof(extensions)) !== 'object' || !(extensions instanceof RegExp)) {\n            if (typeof extensions === 'string') {\n              extensions = extensions.split(',').map(function (value) {\n                return value.trim();\n              }).filter(function (value) {\n                return value;\n              });\n            }\n            extensions = new RegExp('\\\\.(' + extensions.join('|').replace(/\\./g, '\\\\.') + ')$', 'i');\n          }\n          if (file.name.search(extensions) === -1) {\n            return Promise.reject('extension');\n          }\n        }\n\n        // 大小\n        if (this.size > 0 && file.size >= 0 && file.size > this.size) {\n          return Promise.reject('size');\n        }\n\n        if (this.customAction) {\n          return this.customAction(file, this);\n        }\n\n        if (this.features.html5) {\n          if (this.shouldUseChunkUpload(file)) {\n            return this.uploadChunk(file);\n          }\n          if (file.putAction) {\n            return this.uploadPut(file);\n          }\n          if (file.postAction) {\n            return this.uploadHtml5(file);\n          }\n        }\n        if (file.postAction) {\n          return this.uploadHtml4(file);\n        }\n        return Promise.reject('No action configured');\n      },\n\n\n      /**\n       * Whether this file should be uploaded using chunk upload or not\n       *\n       * @param Object file\n       */\n      shouldUseChunkUpload: function shouldUseChunkUpload(file) {\n        return this.chunkEnabled && !!this.chunkOptions.handler && file.size > this.chunkOptions.minSize;\n      },\n\n\n      /**\n       * Upload a file using Chunk method\n       *\n       * @param File file\n       */\n      uploadChunk: function uploadChunk(file) {\n        var HandlerClass = this.chunkOptions.handler;\n        file.chunk = new HandlerClass(file, this.chunkOptions);\n\n        return file.chunk.upload();\n      },\n      uploadPut: function uploadPut(file) {\n        var querys = [];\n        var value = void 0;\n        for (var key in file.data) {\n          value = file.data[key];\n          if (value !== null && value !== undefined) {\n            querys.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\n          }\n        }\n        var queryString = querys.length ? (file.putAction.indexOf('?') === -1 ? '?' : '&') + querys.join('&') : '';\n        var xhr = new XMLHttpRequest();\n        xhr.open('PUT', file.putAction + queryString);\n        return this.uploadXhr(xhr, file, file.file);\n      },\n      uploadHtml5: function uploadHtml5(file) {\n        var form = new window.FormData();\n        var value = void 0;\n        for (var key in file.data) {\n          value = file.data[key];\n          if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {\n            if (value instanceof File) {\n              form.append(key, value, value.name);\n            } else {\n              form.append(key, JSON.stringify(value));\n            }\n          } else if (value !== null && value !== undefined) {\n            form.append(key, value);\n          }\n        }\n        form.append(this.name, file.file, file.file.filename || file.name);\n        var xhr = new XMLHttpRequest();\n        xhr.open('POST', file.postAction);\n        return this.uploadXhr(xhr, file, form);\n      },\n      uploadXhr: function uploadXhr(xhr, _file, body) {\n        var _this5 = this;\n\n        var file = _file;\n        var speedTime = 0;\n        var speedLoaded = 0;\n\n        // 进度条\n        xhr.upload.onprogress = function (e) {\n          // 还未开始上传 已删除 未激活\n          file = _this5.get(file);\n          if (!e.lengthComputable || !file || !file.fileObject || !file.active) {\n            return;\n          }\n\n          // 进度 速度 每秒更新一次\n          var speedTime2 = Math.round(Date.now() / 1000);\n          if (speedTime2 === speedTime) {\n            return;\n          }\n          speedTime = speedTime2;\n\n          file = _this5.update(file, {\n            progress: (e.loaded / e.total * 100).toFixed(2),\n            speed: e.loaded - speedLoaded\n          });\n          speedLoaded = e.loaded;\n        };\n\n        // 检查激活状态\n        var interval = setInterval(function () {\n          file = _this5.get(file);\n          if (file && file.fileObject && !file.success && !file.error && file.active) {\n            return;\n          }\n\n          if (interval) {\n            clearInterval(interval);\n            interval = false;\n          }\n\n          try {\n            xhr.abort();\n            xhr.timeout = 1;\n          } catch (e) {}\n        }, 100);\n\n        return new Promise(function (resolve, reject) {\n          var complete = void 0;\n          var fn = function fn(e) {\n            // 已经处理过了\n            if (complete) {\n              return;\n            }\n            complete = true;\n            if (interval) {\n              clearInterval(interval);\n              interval = false;\n            }\n\n            file = _this5.get(file);\n\n            // 不存在直接响应\n            if (!file) {\n              return reject('not_exists');\n            }\n\n            // 不是文件对象\n            if (!file.fileObject) {\n              return reject('file_object');\n            }\n\n            // 有错误自动响应\n            if (file.error) {\n              return reject(file.error);\n            }\n\n            // 未激活\n            if (!file.active) {\n              return reject('abort');\n            }\n\n            // 已完成 直接相应\n            if (file.success) {\n              return resolve(file);\n            }\n\n            var data = {};\n\n            switch (e.type) {\n              case 'timeout':\n              case 'abort':\n                data.error = e.type;\n                break;\n              case 'error':\n                if (!xhr.status) {\n                  data.error = 'network';\n                } else if (xhr.status >= 500) {\n                  data.error = 'server';\n                } else if (xhr.status >= 400) {\n                  data.error = 'denied';\n                }\n                break;\n              default:\n                if (xhr.status >= 500) {\n                  data.error = 'server';\n                } else if (xhr.status >= 400) {\n                  data.error = 'denied';\n                } else {\n                  data.progress = '100.00';\n                }\n            }\n\n            if (xhr.responseText) {\n              var contentType = xhr.getResponseHeader('Content-Type');\n              if (contentType && contentType.indexOf('/json') !== -1) {\n                data.response = JSON.parse(xhr.responseText);\n              } else {\n                data.response = xhr.responseText;\n              }\n            }\n\n            // 更新\n            file = _this5.update(file, data);\n\n            // 相应错误\n            if (file.error) {\n              return reject(file.error);\n            }\n\n            // 响应\n            return resolve(file);\n          };\n\n          // 事件\n          xhr.onload = fn;\n          xhr.onerror = fn;\n          xhr.onabort = fn;\n          xhr.ontimeout = fn;\n\n          // 超时\n          if (file.timeout) {\n            xhr.timeout = file.timeout;\n          }\n\n          // headers\n          for (var key in file.headers) {\n            xhr.setRequestHeader(key, file.headers[key]);\n          }\n\n          // 更新 xhr\n          file = _this5.update(file, { xhr: xhr });\n\n          // 开始上传\n          xhr.send(body);\n        });\n      },\n      uploadHtml4: function uploadHtml4(_file) {\n        var _this6 = this;\n\n        var file = _file;\n        var onKeydown = function onKeydown(e) {\n          if (e.keyCode === 27) {\n            e.preventDefault();\n          }\n        };\n\n        var iframe = document.createElement('iframe');\n        iframe.id = 'upload-iframe-' + file.id;\n        iframe.name = 'upload-iframe-' + file.id;\n        iframe.src = 'about:blank';\n        iframe.setAttribute('style', 'width:1px;height:1px;top:-999em;position:absolute; margin-top:-999em;');\n\n        var form = document.createElement('form');\n\n        form.action = file.postAction;\n\n        form.name = 'upload-form-' + file.id;\n\n        form.setAttribute('method', 'POST');\n        form.setAttribute('target', 'upload-iframe-' + file.id);\n        form.setAttribute('enctype', 'multipart/form-data');\n\n        var value = void 0;\n        var input = void 0;\n        for (var key in file.data) {\n          value = file.data[key];\n          if (value && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object' && typeof value.toString !== 'function') {\n            value = JSON.stringify(value);\n          }\n          if (value !== null && value !== undefined) {\n            input = document.createElement('input');\n            input.type = 'hidden';\n            input.name = key;\n            input.value = value;\n            form.appendChild(input);\n          }\n        }\n        form.appendChild(file.el);\n\n        document.body.appendChild(iframe).appendChild(form);\n\n        var getResponseData = function getResponseData() {\n          var doc = void 0;\n          try {\n            if (iframe.contentWindow) {\n              doc = iframe.contentWindow.document;\n            }\n          } catch (err) {}\n          if (!doc) {\n            try {\n              doc = iframe.contentDocument ? iframe.contentDocument : iframe.document;\n            } catch (err) {\n              doc = iframe.document;\n            }\n          }\n          if (doc && doc.body) {\n            return doc.body.innerHTML;\n          }\n          return null;\n        };\n\n        return new Promise(function (resolve, reject) {\n          setTimeout(function () {\n            file = _this6.update(file, { iframe: iframe });\n\n            // 不存在\n            if (!file) {\n              return reject('not_exists');\n            }\n\n            // 定时检查\n            var interval = setInterval(function () {\n              file = _this6.get(file);\n              if (file && file.fileObject && !file.success && !file.error && file.active) {\n                return;\n              }\n\n              if (interval) {\n                clearInterval(interval);\n                interval = false;\n              }\n\n              iframe.onabort({ type: file ? 'abort' : 'not_exists' });\n            }, 100);\n\n            var complete = void 0;\n            var fn = function fn(e) {\n              // 已经处理过了\n              if (complete) {\n                return;\n              }\n              complete = true;\n\n              if (interval) {\n                clearInterval(interval);\n                interval = false;\n              }\n\n              // 关闭 esc 事件\n              document.body.removeEventListener('keydown', onKeydown);\n\n              file = _this6.get(file);\n\n              // 不存在直接响应\n              if (!file) {\n                return reject('not_exists');\n              }\n\n              // 不是文件对象\n              if (!file.fileObject) {\n                return reject('file_object');\n              }\n\n              // 有错误自动响应\n              if (file.error) {\n                return reject(file.error);\n              }\n\n              // 未激活\n              if (!file.active) {\n                return reject('abort');\n              }\n\n              // 已完成 直接相应\n              if (file.success) {\n                return resolve(file);\n              }\n\n              var response = getResponseData();\n              var data = {};\n              switch (e.type) {\n                case 'abort':\n                  data.error = 'abort';\n                  break;\n                case 'error':\n                  if (file.error) {\n                    data.error = file.error;\n                  } else if (response === null) {\n                    data.error = 'network';\n                  } else {\n                    data.error = 'denied';\n                  }\n                  break;\n                default:\n                  if (file.error) {\n                    data.error = file.error;\n                  } else if (data === null) {\n                    data.error = 'network';\n                  } else {\n                    data.progress = '100.00';\n                  }\n              }\n\n              if (response !== null) {\n                if (response && response.substr(0, 1) === '{' && response.substr(response.length - 1, 1) === '}') {\n                  try {\n                    response = JSON.parse(response);\n                  } catch (err) {}\n                }\n                data.response = response;\n              }\n\n              // 更新\n              file = _this6.update(file, data);\n\n              if (file.error) {\n                return reject(file.error);\n              }\n\n              // 响应\n              return resolve(file);\n            };\n\n            // 添加事件\n            iframe.onload = fn;\n            iframe.onerror = fn;\n            iframe.onabort = fn;\n\n            // 禁止 esc 键\n            document.body.addEventListener('keydown', onKeydown);\n\n            // 提交\n            form.submit();\n          }, 50);\n        }).then(function (res) {\n          iframe.parentNode && iframe.parentNode.removeChild(iframe);\n          return res;\n        }).catch(function (res) {\n          iframe.parentNode && iframe.parentNode.removeChild(iframe);\n          return res;\n        });\n      },\n      watchActive: function watchActive(active) {\n        var file = void 0;\n        var index = 0;\n        while (file = this.files[index]) {\n          index++;\n          if (!file.fileObject) ; else if (active && !this.destroy) {\n            if (this.uploading >= this.thread || this.uploading && !this.features.html5) {\n              break;\n            }\n            if (!file.active && !file.error && !file.success) {\n              this.update(file, { active: true });\n            }\n          } else {\n            if (file.active) {\n              this.update(file, { active: false });\n            }\n          }\n        }\n        if (this.uploading === 0) {\n          this.active = false;\n        }\n      },\n      watchDrop: function watchDrop(_el) {\n        var el = _el;\n        if (!this.features.drop) {\n          return;\n        }\n\n        // 移除挂载\n        if (this.dropElement) {\n          try {\n            document.removeEventListener('dragenter', this.onDragenter, false);\n            document.removeEventListener('dragleave', this.onDragleave, false);\n            document.removeEventListener('drop', this.onDocumentDrop, false);\n            this.dropElement.removeEventListener('dragover', this.onDragover, false);\n            this.dropElement.removeEventListener('drop', this.onDrop, false);\n          } catch (e) {}\n        }\n\n        if (!el) {\n          el = false;\n        } else if (typeof el === 'string') {\n          el = document.querySelector(el) || this.$root.$el.querySelector(el);\n        } else if (el === true) {\n          el = this.$parent.$el;\n        }\n\n        this.dropElement = el;\n\n        if (this.dropElement) {\n          document.addEventListener('dragenter', this.onDragenter, false);\n          document.addEventListener('dragleave', this.onDragleave, false);\n          document.addEventListener('drop', this.onDocumentDrop, false);\n          this.dropElement.addEventListener('dragover', this.onDragover, false);\n          this.dropElement.addEventListener('drop', this.onDrop, false);\n        }\n      },\n      onDragenter: function onDragenter(e) {\n        e.preventDefault();\n        if (this.dropActive) {\n          return;\n        }\n        if (!e.dataTransfer) {\n          return;\n        }\n        var dt = e.dataTransfer;\n        if (dt.files && dt.files.length) {\n          this.dropActive = true;\n        } else if (!dt.types) {\n          this.dropActive = true;\n        } else if (dt.types.indexOf && dt.types.indexOf('Files') !== -1) {\n          this.dropActive = true;\n        } else if (dt.types.contains && dt.types.contains('Files')) {\n          this.dropActive = true;\n        }\n      },\n      onDragleave: function onDragleave(e) {\n        e.preventDefault();\n        if (!this.dropActive) {\n          return;\n        }\n        if (e.target.nodeName === 'HTML' || e.target === e.explicitOriginalTarget || !e.fromElement && (e.clientX <= 0 || e.clientY <= 0 || e.clientX >= window.innerWidth || e.clientY >= window.innerHeight)) {\n          this.dropActive = false;\n        }\n      },\n      onDragover: function onDragover(e) {\n        e.preventDefault();\n      },\n      onDocumentDrop: function onDocumentDrop() {\n        this.dropActive = false;\n      },\n      onDrop: function onDrop(e) {\n        e.preventDefault();\n        this.addDataTransfer(e.dataTransfer);\n      }\n    }\n  };\n\n  var isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n  function createInjector(context) {\n    return function (id, style) {\n      return addStyle(id, style);\n    };\n  }\n  var HEAD = document.head || document.getElementsByTagName('head')[0];\n  var styles = {};\n\n  function addStyle(id, css) {\n    var group = isOldIE ? css.media || 'default' : id;\n    var style = styles[group] || (styles[group] = {\n      ids: new Set(),\n      styles: []\n    });\n\n    if (!style.ids.has(id)) {\n      style.ids.add(id);\n      var code = css.source;\n\n      if (css.map) {\n        // https://developer.chrome.com/devtools/docs/javascript-debugging\n        // this makes source maps inside style tags work properly in Chrome\n        code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875\n\n        code += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';\n      }\n\n      if (!style.element) {\n        style.element = document.createElement('style');\n        style.element.type = 'text/css';\n        if (css.media) style.element.setAttribute('media', css.media);\n        HEAD.appendChild(style.element);\n      }\n\n      if ('styleSheet' in style.element) {\n        style.styles.push(code);\n        style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\\n');\n      } else {\n        var index = style.ids.size - 1;\n        var textNode = document.createTextNode(code);\n        var nodes = style.element.childNodes;\n        if (nodes[index]) style.element.removeChild(nodes[index]);\n        if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n      }\n    }\n  }\n\n  var browser = createInjector;\n\n  /* script */\n  var __vue_script__$1 = script$1;\n\n  /* template */\n  var __vue_render__$1 = function __vue_render__() {\n    var _vm = this;var _h = _vm.$createElement;var _c = _vm._self._c || _h;return _c('span', { class: _vm.className }, [_vm._t(\"default\"), _vm._v(\" \"), _c('label', { attrs: { \"for\": _vm.inputId || _vm.name } }), _vm._v(\" \"), _c('input-file')], 2);\n  };\n  var __vue_staticRenderFns__$1 = [];\n\n  /* style */\n  var __vue_inject_styles__$1 = function __vue_inject_styles__(inject) {\n    if (!inject) return;\n    inject(\"data-v-76d380b6_0\", { source: \".file-uploads{overflow:hidden;position:relative;text-align:center;display:inline-block}.file-uploads.file-uploads-html4 input,.file-uploads.file-uploads-html5 label{background:#fff;opacity:0;font-size:20em;z-index:1;top:0;left:0;right:0;bottom:0;position:absolute;width:100%;height:100%}.file-uploads.file-uploads-html4 label,.file-uploads.file-uploads-html5 input{background:rgba(255,255,255,0);overflow:hidden;position:fixed;width:1px;height:1px;z-index:-1;opacity:0}\", map: undefined, media: undefined });\n  };\n  /* scoped */\n  var __vue_scope_id__$1 = undefined;\n  /* module identifier */\n  var __vue_module_identifier__$1 = undefined;\n  /* functional template */\n  var __vue_is_functional_template__$1 = false;\n  /* style inject SSR */\n\n  var FileUpload = normalizeComponent_1({ render: __vue_render__$1, staticRenderFns: __vue_staticRenderFns__$1 }, __vue_inject_styles__$1, __vue_script__$1, __vue_scope_id__$1, __vue_is_functional_template__$1, __vue_module_identifier__$1, browser, undefined);\n\n  var FileUpload$1 = /*#__PURE__*/Object.freeze({\n    default: FileUpload\n  });\n\n  function getCjsExportFromNamespace (n) {\n  \treturn n && n['default'] || n;\n  }\n\n  var require$$0 = getCjsExportFromNamespace(FileUpload$1);\n\n  var src = require$$0;\n\n  return src;\n\n})));\n//# sourceMappingURL=vue-upload-component.js.map\n","/*!\n * vue2-editor v2.10.3 \n * (c) 2021 David Royer\n * Released under the MIT License.\n */\nimport Quill from 'quill';\nexport { default as Quill } from 'quill';\n\nvar defaultToolbar = [[{\n  header: [false, 1, 2, 3, 4, 5, 6]\n}], [\"bold\", \"italic\", \"underline\", \"strike\"], // toggled buttons\n[{\n  align: \"\"\n}, {\n  align: \"center\"\n}, {\n  align: \"right\"\n}, {\n  align: \"justify\"\n}], [\"blockquote\", \"code-block\"], [{\n  list: \"ordered\"\n}, {\n  list: \"bullet\"\n}, {\n  list: \"check\"\n}], [{\n  indent: \"-1\"\n}, {\n  indent: \"+1\"\n}], // outdent/indent\n[{\n  color: []\n}, {\n  background: []\n}], // dropdown with defaults from theme\n[\"link\", \"image\", \"video\"], [\"clean\"] // remove formatting button\n];\n\nvar oldApi = {\n  props: {\n    customModules: Array\n  },\n  methods: {\n    registerCustomModules: function registerCustomModules(Quill) {\n      if (this.customModules !== undefined) {\n        this.customModules.forEach(function (customModule) {\n          Quill.register(\"modules/\" + customModule.alias, customModule.module);\n        });\n      }\n    }\n  }\n};\n\nfunction _typeof(obj) {\n  if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n    _typeof = function (obj) {\n      return typeof obj;\n    };\n  } else {\n    _typeof = function (obj) {\n      return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n  }\n\n  return _typeof(obj);\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, descriptor.key, descriptor);\n  }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  return Constructor;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n\n  return _setPrototypeOf(o, p);\n}\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n    return call;\n  }\n\n  return _assertThisInitialized(self);\n}\n\nfunction _slicedToArray(arr, i) {\n  return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\n      if (i && _arr.length === i) break;\n    }\n  } catch (err) {\n    _d = true;\n    _e = err;\n  } finally {\n    try {\n      if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n    } finally {\n      if (_d) throw _e;\n    }\n  }\n\n  return _arr;\n}\n\nfunction _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\n/**\n * Performs a deep merge of `source` into `target`.\n * Mutates `target` only but not its objects and arrays.\n *\n */\nfunction mergeDeep(target, source) {\n  var isObject = function isObject(obj) {\n    return obj && _typeof(obj) === \"object\";\n  };\n\n  if (!isObject(target) || !isObject(source)) {\n    return source;\n  }\n\n  Object.keys(source).forEach(function (key) {\n    var targetValue = target[key];\n    var sourceValue = source[key];\n\n    if (Array.isArray(targetValue) && Array.isArray(sourceValue)) {\n      target[key] = targetValue.concat(sourceValue);\n    } else if (isObject(targetValue) && isObject(sourceValue)) {\n      target[key] = mergeDeep(Object.assign({}, targetValue), sourceValue);\n    } else {\n      target[key] = sourceValue;\n    }\n  });\n  return target;\n}\n\nvar BlockEmbed = Quill.import(\"blots/block/embed\");\n\nvar HorizontalRule =\n/*#__PURE__*/\nfunction (_BlockEmbed) {\n  _inherits(HorizontalRule, _BlockEmbed);\n\n  function HorizontalRule() {\n    _classCallCheck(this, HorizontalRule);\n\n    return _possibleConstructorReturn(this, _getPrototypeOf(HorizontalRule).apply(this, arguments));\n  }\n\n  return HorizontalRule;\n}(BlockEmbed);\n\nHorizontalRule.blotName = \"hr\";\nHorizontalRule.tagName = \"hr\";\nQuill.register(\"formats/horizontal\", HorizontalRule);\n\nvar MarkdownShortcuts =\n/*#__PURE__*/\nfunction () {\n  function MarkdownShortcuts(quill, options) {\n    var _this = this;\n\n    _classCallCheck(this, MarkdownShortcuts);\n\n    this.quill = quill;\n    this.options = options;\n    this.ignoreTags = [\"PRE\"];\n    this.matches = [{\n      name: \"header\",\n      pattern: /^(#){1,6}\\s/g,\n      action: function action(text, selection, pattern) {\n        var match = pattern.exec(text);\n        if (!match) return;\n        var size = match[0].length; // Need to defer this action https://github.com/quilljs/quill/issues/1134\n\n        setTimeout(function () {\n          _this.quill.formatLine(selection.index, 0, \"header\", size - 1);\n\n          _this.quill.deleteText(selection.index - size, size);\n        }, 0);\n      }\n    }, {\n      name: \"blockquote\",\n      pattern: /^(>)\\s/g,\n      action: function action(_text, selection) {\n        // Need to defer this action https://github.com/quilljs/quill/issues/1134\n        setTimeout(function () {\n          _this.quill.formatLine(selection.index, 1, \"blockquote\", true);\n\n          _this.quill.deleteText(selection.index - 2, 2);\n        }, 0);\n      }\n    }, {\n      name: \"code-block\",\n      pattern: /^`{3}(?:\\s|\\n)/g,\n      action: function action(_text, selection) {\n        // Need to defer this action https://github.com/quilljs/quill/issues/1134\n        setTimeout(function () {\n          _this.quill.formatLine(selection.index, 1, \"code-block\", true);\n\n          _this.quill.deleteText(selection.index - 4, 4);\n        }, 0);\n      }\n    }, {\n      name: \"bolditalic\",\n      pattern: /(?:\\*|_){3}(.+?)(?:\\*|_){3}/g,\n      action: function action(text, _selection, pattern, lineStart) {\n        var match = pattern.exec(text);\n        var annotatedText = match[0];\n        var matchedText = match[1];\n        var startIndex = lineStart + match.index;\n        if (text.match(/^([*_ \\n]+)$/g)) return;\n        setTimeout(function () {\n          _this.quill.deleteText(startIndex, annotatedText.length);\n\n          _this.quill.insertText(startIndex, matchedText, {\n            bold: true,\n            italic: true\n          });\n\n          _this.quill.format(\"bold\", false);\n        }, 0);\n      }\n    }, {\n      name: \"bold\",\n      pattern: /(?:\\*|_){2}(.+?)(?:\\*|_){2}/g,\n      action: function action(text, _selection, pattern, lineStart) {\n        var match = pattern.exec(text);\n        var annotatedText = match[0];\n        var matchedText = match[1];\n        var startIndex = lineStart + match.index;\n        if (text.match(/^([*_ \\n]+)$/g)) return;\n        setTimeout(function () {\n          _this.quill.deleteText(startIndex, annotatedText.length);\n\n          _this.quill.insertText(startIndex, matchedText, {\n            bold: true\n          });\n\n          _this.quill.format(\"bold\", false);\n        }, 0);\n      }\n    }, {\n      name: \"italic\",\n      pattern: /(?:\\*|_){1}(.+?)(?:\\*|_){1}/g,\n      action: function action(text, _selection, pattern, lineStart) {\n        var match = pattern.exec(text);\n        var annotatedText = match[0];\n        var matchedText = match[1];\n        var startIndex = lineStart + match.index;\n        if (text.match(/^([*_ \\n]+)$/g)) return;\n        setTimeout(function () {\n          _this.quill.deleteText(startIndex, annotatedText.length);\n\n          _this.quill.insertText(startIndex, matchedText, {\n            italic: true\n          });\n\n          _this.quill.format(\"italic\", false);\n        }, 0);\n      }\n    }, {\n      name: \"strikethrough\",\n      pattern: /(?:~~)(.+?)(?:~~)/g,\n      action: function action(text, _selection, pattern, lineStart) {\n        var match = pattern.exec(text);\n        var annotatedText = match[0];\n        var matchedText = match[1];\n        var startIndex = lineStart + match.index;\n        if (text.match(/^([*_ \\n]+)$/g)) return;\n        setTimeout(function () {\n          _this.quill.deleteText(startIndex, annotatedText.length);\n\n          _this.quill.insertText(startIndex, matchedText, {\n            strike: true\n          });\n\n          _this.quill.format(\"strike\", false);\n        }, 0);\n      }\n    }, {\n      name: \"code\",\n      pattern: /(?:`)(.+?)(?:`)/g,\n      action: function action(text, _selection, pattern, lineStart) {\n        var match = pattern.exec(text);\n        var annotatedText = match[0];\n        var matchedText = match[1];\n        var startIndex = lineStart + match.index;\n        if (text.match(/^([*_ \\n]+)$/g)) return;\n        setTimeout(function () {\n          _this.quill.deleteText(startIndex, annotatedText.length);\n\n          _this.quill.insertText(startIndex, matchedText, {\n            code: true\n          });\n\n          _this.quill.format(\"code\", false);\n\n          _this.quill.insertText(_this.quill.getSelection(), \" \");\n        }, 0);\n      }\n    }, {\n      name: \"hr\",\n      pattern: /^([-*]\\s?){3}/g,\n      action: function action(text, selection) {\n        var startIndex = selection.index - text.length;\n        setTimeout(function () {\n          _this.quill.deleteText(startIndex, text.length);\n\n          _this.quill.insertEmbed(startIndex + 1, \"hr\", true, Quill.sources.USER);\n\n          _this.quill.insertText(startIndex + 2, \"\\n\", Quill.sources.SILENT);\n\n          _this.quill.setSelection(startIndex + 2, Quill.sources.SILENT);\n        }, 0);\n      }\n    }, {\n      name: \"asterisk-ul\",\n      pattern: /^(\\*|\\+)\\s$/g,\n      // eslint-disable-next-line no-unused-vars\n      action: function action(_text, selection, _pattern) {\n        setTimeout(function () {\n          _this.quill.formatLine(selection.index, 1, \"list\", \"unordered\");\n\n          _this.quill.deleteText(selection.index - 2, 2);\n        }, 0);\n      }\n    }, {\n      name: \"image\",\n      pattern: /(?:!\\[(.+?)\\])(?:\\((.+?)\\))/g,\n      action: function action(text, selection, pattern) {\n        var startIndex = text.search(pattern);\n        var matchedText = text.match(pattern)[0]; // const hrefText = text.match(/(?:!\\[(.*?)\\])/g)[0]\n\n        var hrefLink = text.match(/(?:\\((.*?)\\))/g)[0];\n        var start = selection.index - matchedText.length - 1;\n\n        if (startIndex !== -1) {\n          setTimeout(function () {\n            _this.quill.deleteText(start, matchedText.length);\n\n            _this.quill.insertEmbed(start, \"image\", hrefLink.slice(1, hrefLink.length - 1));\n          }, 0);\n        }\n      }\n    }, {\n      name: \"link\",\n      pattern: /(?:\\[(.+?)\\])(?:\\((.+?)\\))/g,\n      action: function action(text, selection, pattern) {\n        var startIndex = text.search(pattern);\n        var matchedText = text.match(pattern)[0];\n        var hrefText = text.match(/(?:\\[(.*?)\\])/g)[0];\n        var hrefLink = text.match(/(?:\\((.*?)\\))/g)[0];\n        var start = selection.index - matchedText.length - 1;\n\n        if (startIndex !== -1) {\n          setTimeout(function () {\n            _this.quill.deleteText(start, matchedText.length);\n\n            _this.quill.insertText(start, hrefText.slice(1, hrefText.length - 1), \"link\", hrefLink.slice(1, hrefLink.length - 1));\n          }, 0);\n        }\n      }\n    }]; // Handler that looks for insert deltas that match specific characters\n    // eslint-disable-next-line no-unused-vars\n\n    this.quill.on(\"text-change\", function (delta, _oldContents, _source) {\n      for (var i = 0; i < delta.ops.length; i++) {\n        if (delta.ops[i].hasOwnProperty(\"insert\")) {\n          if (delta.ops[i].insert === \" \") {\n            _this.onSpace();\n          } else if (delta.ops[i].insert === \"\\n\") {\n            _this.onEnter();\n          }\n        }\n      }\n    });\n  }\n\n  _createClass(MarkdownShortcuts, [{\n    key: \"isValid\",\n    value: function isValid(text, tagName) {\n      return typeof text !== \"undefined\" && text && this.ignoreTags.indexOf(tagName) === -1;\n    }\n  }, {\n    key: \"onSpace\",\n    value: function onSpace() {\n      var selection = this.quill.getSelection();\n      if (!selection) return;\n\n      var _this$quill$getLine = this.quill.getLine(selection.index),\n          _this$quill$getLine2 = _slicedToArray(_this$quill$getLine, 2),\n          line = _this$quill$getLine2[0],\n          offset = _this$quill$getLine2[1];\n\n      var text = line.domNode.textContent;\n      var lineStart = selection.index - offset;\n\n      if (this.isValid(text, line.domNode.tagName)) {\n        var _iteratorNormalCompletion = true;\n        var _didIteratorError = false;\n        var _iteratorError = undefined;\n\n        try {\n          for (var _iterator = this.matches[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n            var match = _step.value;\n            var matchedText = text.match(match.pattern);\n\n            if (matchedText) {\n              // We need to replace only matched text not the whole line\n              console.log(\"matched:\", match.name, text);\n              match.action(text, selection, match.pattern, lineStart);\n              return;\n            }\n          }\n        } catch (err) {\n          _didIteratorError = true;\n          _iteratorError = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion && _iterator.return != null) {\n              _iterator.return();\n            }\n          } finally {\n            if (_didIteratorError) {\n              throw _iteratorError;\n            }\n          }\n        }\n      }\n    }\n  }, {\n    key: \"onEnter\",\n    value: function onEnter() {\n      var selection = this.quill.getSelection();\n      if (!selection) return;\n\n      var _this$quill$getLine3 = this.quill.getLine(selection.index),\n          _this$quill$getLine4 = _slicedToArray(_this$quill$getLine3, 2),\n          line = _this$quill$getLine4[0],\n          offset = _this$quill$getLine4[1];\n\n      var text = line.domNode.textContent + \" \";\n      var lineStart = selection.index - offset;\n      selection.length = selection.index++;\n\n      if (this.isValid(text, line.domNode.tagName)) {\n        var _iteratorNormalCompletion2 = true;\n        var _didIteratorError2 = false;\n        var _iteratorError2 = undefined;\n\n        try {\n          for (var _iterator2 = this.matches[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n            var match = _step2.value;\n            var matchedText = text.match(match.pattern);\n\n            if (matchedText) {\n              console.log(\"matched\", match.name, text);\n              match.action(text, selection, match.pattern, lineStart);\n              return;\n            }\n          }\n        } catch (err) {\n          _didIteratorError2 = true;\n          _iteratorError2 = err;\n        } finally {\n          try {\n            if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n              _iterator2.return();\n            }\n          } finally {\n            if (_didIteratorError2) {\n              throw _iteratorError2;\n            }\n          }\n        }\n      }\n    }\n  }]);\n\n  return MarkdownShortcuts;\n}(); // module.exports = MarkdownShortcuts;\n\n//\nvar script = {\n  name: \"VueEditor\",\n  mixins: [oldApi],\n  props: {\n    id: {\n      type: String,\n      default: \"quill-container\"\n    },\n    placeholder: {\n      type: String,\n      default: \"\"\n    },\n    value: {\n      type: String,\n      default: \"\"\n    },\n    disabled: {\n      type: Boolean\n    },\n    editorToolbar: {\n      type: Array,\n      default: function _default() {\n        return [];\n      }\n    },\n    editorOptions: {\n      type: Object,\n      required: false,\n      default: function _default() {\n        return {};\n      }\n    },\n    useCustomImageHandler: {\n      type: Boolean,\n      default: false\n    },\n    useMarkdownShortcuts: {\n      type: Boolean,\n      default: false\n    }\n  },\n  data: function data() {\n    return {\n      quill: null\n    };\n  },\n  watch: {\n    value: function value(val) {\n      if (val != this.quill.root.innerHTML && !this.quill.hasFocus()) {\n        this.quill.root.innerHTML = val;\n      }\n    },\n    disabled: function disabled(status) {\n      this.quill.enable(!status);\n    }\n  },\n  mounted: function mounted() {\n    this.registerCustomModules(Quill);\n    this.registerPrototypes();\n    this.initializeEditor();\n  },\n  beforeDestroy: function beforeDestroy() {\n    this.quill = null;\n    delete this.quill;\n  },\n  methods: {\n    initializeEditor: function initializeEditor() {\n      this.setupQuillEditor();\n      this.checkForCustomImageHandler();\n      this.handleInitialContent();\n      this.registerEditorEventListeners();\n      this.$emit(\"ready\", this.quill);\n    },\n    setupQuillEditor: function setupQuillEditor() {\n      var editorConfig = {\n        debug: false,\n        modules: this.setModules(),\n        theme: \"snow\",\n        placeholder: this.placeholder ? this.placeholder : \"\",\n        readOnly: this.disabled ? this.disabled : false\n      };\n      this.prepareEditorConfig(editorConfig);\n      this.quill = new Quill(this.$refs.quillContainer, editorConfig);\n    },\n    setModules: function setModules() {\n      var modules = {\n        toolbar: this.editorToolbar.length ? this.editorToolbar : defaultToolbar\n      };\n\n      if (this.useMarkdownShortcuts) {\n        Quill.register(\"modules/markdownShortcuts\", MarkdownShortcuts, true);\n        modules[\"markdownShortcuts\"] = {};\n      }\n\n      return modules;\n    },\n    prepareEditorConfig: function prepareEditorConfig(editorConfig) {\n      if (Object.keys(this.editorOptions).length > 0 && this.editorOptions.constructor === Object) {\n        if (this.editorOptions.modules && typeof this.editorOptions.modules.toolbar !== \"undefined\") {\n          // We don't want to merge default toolbar with provided toolbar.\n          delete editorConfig.modules.toolbar;\n        }\n\n        mergeDeep(editorConfig, this.editorOptions);\n      }\n    },\n    registerPrototypes: function registerPrototypes() {\n      Quill.prototype.getHTML = function () {\n        return this.container.querySelector(\".ql-editor\").innerHTML;\n      };\n\n      Quill.prototype.getWordCount = function () {\n        return this.container.querySelector(\".ql-editor\").innerText.length;\n      };\n    },\n    registerEditorEventListeners: function registerEditorEventListeners() {\n      this.quill.on(\"text-change\", this.handleTextChange);\n      this.quill.on(\"selection-change\", this.handleSelectionChange);\n      this.listenForEditorEvent(\"text-change\");\n      this.listenForEditorEvent(\"selection-change\");\n      this.listenForEditorEvent(\"editor-change\");\n    },\n    listenForEditorEvent: function listenForEditorEvent(type) {\n      var _this = this;\n\n      this.quill.on(type, function () {\n        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n          args[_key] = arguments[_key];\n        }\n\n        _this.$emit.apply(_this, [type].concat(args));\n      });\n    },\n    handleInitialContent: function handleInitialContent() {\n      if (this.value) this.quill.root.innerHTML = this.value; // Set initial editor content\n    },\n    handleSelectionChange: function handleSelectionChange(range, oldRange) {\n      if (!range && oldRange) this.$emit(\"blur\", this.quill);else if (range && !oldRange) this.$emit(\"focus\", this.quill);\n    },\n    handleTextChange: function handleTextChange(delta, oldContents) {\n      var editorContent = this.quill.getHTML() === \"<p><br></p>\" ? \"\" : this.quill.getHTML();\n      this.$emit(\"input\", editorContent);\n      if (this.useCustomImageHandler) this.handleImageRemoved(delta, oldContents);\n    },\n    handleImageRemoved: function handleImageRemoved(delta, oldContents) {\n      var _this2 = this;\n\n      var currrentContents = this.quill.getContents();\n      var deletedContents = currrentContents.diff(oldContents);\n      var operations = deletedContents.ops;\n      operations.map(function (operation) {\n        if (operation.insert && operation.insert.hasOwnProperty(\"image\")) {\n          var image = operation.insert.image;\n\n          _this2.$emit(\"image-removed\", image);\n        }\n      });\n    },\n    checkForCustomImageHandler: function checkForCustomImageHandler() {\n      this.useCustomImageHandler === true ? this.setupCustomImageHandler() : \"\";\n    },\n    setupCustomImageHandler: function setupCustomImageHandler() {\n      var toolbar = this.quill.getModule(\"toolbar\");\n      toolbar.addHandler(\"image\", this.customImageHandler);\n    },\n    customImageHandler: function customImageHandler() {\n      this.$refs.fileInput.click();\n    },\n    emitImageInfo: function emitImageInfo($event) {\n      var resetUploader = function resetUploader() {\n        var uploader = document.getElementById(\"file-upload\");\n        uploader.value = \"\";\n      };\n\n      var file = $event.target.files[0];\n      var Editor = this.quill;\n      var range = Editor.getSelection();\n      var cursorLocation = range.index;\n      this.$emit(\"image-added\", file, Editor, cursorLocation, resetUploader);\n    }\n  }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier\n/* server only */\n, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\n  if (typeof shadowMode !== 'boolean') {\n    createInjectorSSR = createInjector;\n    createInjector = shadowMode;\n    shadowMode = false;\n  } // Vue.extend constructor export interop.\n\n\n  var options = typeof script === 'function' ? script.options : script; // render functions\n\n  if (template && template.render) {\n    options.render = template.render;\n    options.staticRenderFns = template.staticRenderFns;\n    options._compiled = true; // functional template\n\n    if (isFunctionalTemplate) {\n      options.functional = true;\n    }\n  } // scopedId\n\n\n  if (scopeId) {\n    options._scopeId = scopeId;\n  }\n\n  var hook;\n\n  if (moduleIdentifier) {\n    // server build\n    hook = function hook(context) {\n      // 2.3 injection\n      context = context || // cached call\n      this.$vnode && this.$vnode.ssrContext || // stateful\n      this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext; // functional\n      // 2.2 with runInNewContext: true\n\n      if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n        context = __VUE_SSR_CONTEXT__;\n      } // inject component styles\n\n\n      if (style) {\n        style.call(this, createInjectorSSR(context));\n      } // register component module identifier for async chunk inference\n\n\n      if (context && context._registeredComponents) {\n        context._registeredComponents.add(moduleIdentifier);\n      }\n    }; // used by ssr in case component is cached and beforeCreate\n    // never gets called\n\n\n    options._ssrRegister = hook;\n  } else if (style) {\n    hook = shadowMode ? function () {\n      style.call(this, createInjectorShadow(this.$root.$options.shadowRoot));\n    } : function (context) {\n      style.call(this, createInjector(context));\n    };\n  }\n\n  if (hook) {\n    if (options.functional) {\n      // register for functional component in vue file\n      var originalRender = options.render;\n\n      options.render = function renderWithStyleInjection(h, context) {\n        hook.call(context);\n        return originalRender(h, context);\n      };\n    } else {\n      // inject component registration as beforeCreate hook\n      var existing = options.beforeCreate;\n      options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\n    }\n  }\n\n  return script;\n}\n\nvar normalizeComponent_1 = normalizeComponent;\n\nvar isOldIE = typeof navigator !== 'undefined' && /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\n\nfunction createInjector(context) {\n  return function (id, style) {\n    return addStyle(id, style);\n  };\n}\n\nvar HEAD;\nvar styles = {};\n\nfunction addStyle(id, css) {\n  var group = isOldIE ? css.media || 'default' : id;\n  var style = styles[group] || (styles[group] = {\n    ids: new Set(),\n    styles: []\n  });\n\n  if (!style.ids.has(id)) {\n    style.ids.add(id);\n    var code = css.source;\n\n    if (css.map) {\n      // https://developer.chrome.com/devtools/docs/javascript-debugging\n      // this makes source maps inside style tags work properly in Chrome\n      code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */'; // http://stackoverflow.com/a/26603875\n\n      code += '\\n/*# sourceMappingURL=data:application/json;base64,' + btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) + ' */';\n    }\n\n    if (!style.element) {\n      style.element = document.createElement('style');\n      style.element.type = 'text/css';\n      if (css.media) style.element.setAttribute('media', css.media);\n\n      if (HEAD === undefined) {\n        HEAD = document.head || document.getElementsByTagName('head')[0];\n      }\n\n      HEAD.appendChild(style.element);\n    }\n\n    if ('styleSheet' in style.element) {\n      style.styles.push(code);\n      style.element.styleSheet.cssText = style.styles.filter(Boolean).join('\\n');\n    } else {\n      var index = style.ids.size - 1;\n      var textNode = document.createTextNode(code);\n      var nodes = style.element.childNodes;\n      if (nodes[index]) style.element.removeChild(nodes[index]);\n      if (nodes.length) style.element.insertBefore(textNode, nodes[index]);else style.element.appendChild(textNode);\n    }\n  }\n}\n\nvar browser = createInjector;\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"quillWrapper\"},[_vm._t(\"toolbar\"),_vm._v(\" \"),_c('div',{ref:\"quillContainer\",attrs:{\"id\":_vm.id}}),_vm._v(\" \"),(_vm.useCustomImageHandler)?_c('input',{ref:\"fileInput\",staticStyle:{\"display\":\"none\"},attrs:{\"id\":\"file-upload\",\"type\":\"file\",\"accept\":\"image/*\"},on:{\"change\":function($event){return _vm.emitImageInfo($event)}}}):_vm._e()],2)};\nvar __vue_staticRenderFns__ = [];\n\n  /* style */\n  const __vue_inject_styles__ = function (inject) {\n    if (!inject) return\n    inject(\"data-v-776e788e_0\", { source: \"/*!\\n * Quill Editor v1.3.6\\n * https://quilljs.com/\\n * Copyright (c) 2014, Jason Chen\\n * Copyright (c) 2013, salesforce.com\\n */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li::before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:0;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6,.ql-editor ol,.ql-editor p,.ql-editor pre,.ql-editor ul{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li::before{content:'\\\\2022'}.ql-editor ul[data-checked=false],.ql-editor ul[data-checked=true]{pointer-events:none}.ql-editor ul[data-checked=false]>li *,.ql-editor ul[data-checked=true]>li *{pointer-events:all}.ql-editor ul[data-checked=false]>li::before,.ql-editor ul[data-checked=true]>li::before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li::before{content:'\\\\2611'}.ql-editor ul[data-checked=false]>li::before{content:'\\\\2610'}.ql-editor li::before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl)::before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl::before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) '. '}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) '. '}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) '. '}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) '. '}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) '. '}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) '. '}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) '. '}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) '. '}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) '. '}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) '. '}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank::before{color:rgba(0,0,0,.6);content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow .ql-toolbar:after,.ql-snow.ql-toolbar:after{clear:both;content:'';display:table}.ql-snow .ql-toolbar button,.ql-snow.ql-toolbar button{background:0 0;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow .ql-toolbar button svg,.ql-snow.ql-toolbar button svg{float:left;height:100%}.ql-snow .ql-toolbar button:active:hover,.ql-snow.ql-toolbar button:active:hover{outline:0}.ql-snow .ql-toolbar input.ql-image[type=file],.ql-snow.ql-toolbar input.ql-image[type=file]{display:none}.ql-snow .ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar button.ql-active,.ql-snow .ql-toolbar button:focus,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar button.ql-active,.ql-snow.ql-toolbar button:focus,.ql-snow.ql-toolbar button:hover{color:#06c}.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill{fill:#06c}.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter{stroke:#06c}@media (pointer:coarse){.ql-snow .ql-toolbar button:hover:not(.ql-active),.ql-snow.ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow{box-sizing:border-box}.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:'';display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label::before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=''])::before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=''])::before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-item::before,.ql-snow .ql-picker.ql-header .ql-picker-label::before{content:'Normal'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"1\\\"]::before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"1\\\"]::before{content:'Heading 1'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"2\\\"]::before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"2\\\"]::before{content:'Heading 2'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"3\\\"]::before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"3\\\"]::before{content:'Heading 3'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"4\\\"]::before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"4\\\"]::before{content:'Heading 4'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"5\\\"]::before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"5\\\"]::before{content:'Heading 5'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"6\\\"]::before,.ql-snow .ql-picker.ql-header .ql-picker-label[data-value=\\\"6\\\"]::before{content:'Heading 6'}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"1\\\"]::before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"2\\\"]::before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"3\\\"]::before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"4\\\"]::before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"5\\\"]::before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value=\\\"6\\\"]::before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-item::before,.ql-snow .ql-picker.ql-font .ql-picker-label::before{content:'Sans Serif'}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]::before{content:'Serif'}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]::before{content:'Monospace'}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]::before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]::before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-item::before,.ql-snow .ql-picker.ql-size .ql-picker-label::before{content:'Normal'}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]::before{content:'Small'}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]::before{content:'Large'}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]::before{content:'Huge'}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]::before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]::before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]::before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:rgba(0,0,0,.2) 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label{border-color:#ccc}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip::before{content:\\\"Visit URL:\\\";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action::after{border-right:1px solid #ccc;content:'Edit';margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove::before{content:'Remove';margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action::after{border-right:0;content:'Save';padding-right:0}.ql-snow .ql-tooltip[data-mode=link]::before{content:\\\"Enter link:\\\"}.ql-snow .ql-tooltip[data-mode=formula]::before{content:\\\"Enter formula:\\\"}.ql-snow .ql-tooltip[data-mode=video]::before{content:\\\"Enter video:\\\"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}\", map: undefined, media: undefined })\n,inject(\"data-v-776e788e_1\", { source: \".ql-editor{min-height:200px;font-size:16px}.ql-snow .ql-stroke.ql-thin,.ql-snow .ql-thin{stroke-width:1px!important}.quillWrapper .ql-snow.ql-toolbar{padding-top:8px;padding-bottom:4px}.quillWrapper .ql-snow.ql-toolbar .ql-formats{margin-bottom:10px}.ql-snow .ql-toolbar button svg,.quillWrapper .ql-snow.ql-toolbar button svg{width:22px;height:22px}.quillWrapper .ql-editor ul[data-checked=false]>li::before,.quillWrapper .ql-editor ul[data-checked=true]>li::before{font-size:1.35em;vertical-align:baseline;bottom:-.065em;font-weight:900;color:#222}.quillWrapper .ql-snow .ql-stroke{stroke:rgba(63,63,63,.95);stroke-linecap:square;stroke-linejoin:initial;stroke-width:1.7px}.quillWrapper .ql-picker-label{font-size:15px}.quillWrapper .ql-snow .ql-active .ql-stroke{stroke-width:2.25px}.quillWrapper .ql-toolbar.ql-snow .ql-formats{vertical-align:top}.ql-picker:not(.ql-background){position:relative;top:2px}.ql-picker.ql-color-picker svg{width:22px!important;height:22px!important}.quillWrapper .imageResizeActive img{display:block;cursor:pointer}.quillWrapper .imageResizeActive~div svg{cursor:pointer}\", map: undefined, media: undefined });\n\n  };\n  /* scoped */\n  const __vue_scope_id__ = undefined;\n  /* module identifier */\n  const __vue_module_identifier__ = undefined;\n  /* functional template */\n  const __vue_is_functional_template__ = false;\n  /* style inject SSR */\n  \n\n  \n  var VueEditor = normalizeComponent_1(\n    { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n    __vue_inject_styles__,\n    __vue_script__,\n    __vue_scope_id__,\n    __vue_is_functional_template__,\n    __vue_module_identifier__,\n    browser,\n    undefined\n  );\n\nvar version = \"2.10.3\"; // Declare install function executed by Vue.use()\n\nfunction install(Vue) {\n  if (install.installed) return;\n  install.installed = true;\n  Vue.component(\"VueEditor\", VueEditor);\n}\nvar VPlugin = {\n  install: install,\n  version: version,\n  Quill: Quill,\n  VueEditor: VueEditor\n}; // Auto-install when vue is found (eg. in browser via <script> tag)\n\nvar GlobalVue = null;\n\nif (typeof window !== \"undefined\") {\n  GlobalVue = window.Vue;\n} else if (typeof global !== \"undefined\") {\n  GlobalVue = global.Vue;\n}\n\nif (GlobalVue) {\n  GlobalVue.use(VPlugin);\n}\n/*************************************************/\n\nexport default VPlugin;\nexport { VueEditor, install };\n"],"names":["global","factory","module","exports","this","createRequest","options","xhr","XMLHttpRequest","open","method","url","responseType","headers","Object","keys","forEach","key","setRequestHeader","sendRequest","body","Promise","resolve","reject","onload","status","response","JSON","parse","err","onerror","send","stringify","sendFormRequest","data","FormData","name","append","request","_createClass","defineProperties","target","props","i","length","descriptor","enumerable","configurable","writable","defineProperty","Constructor","protoProps","staticProps","prototype","_classCallCheck","instance","TypeError","ChunkUploadHandler","file","chunks","sessionId","chunkSize","speedInterval","value","start","end","fileSize","push","blob","slice","startOffset","active","retries","maxRetries","progress","stopChunks","chunksUploading","chunk","abort","stopSpeedCalc","startChunking","_this","promise","_this2","assign","action","startBody","phase","mime_type","fileType","size","fileName","then","res","session_id","end_offset","createChunks","catch","maxActiveChunks","uploadNextChunk","startSpeedCalc","hasChunksToUpload","uploadChunk","chunksToUpload","finish","_this3","updateFileProgress","upload","addEventListener","evt","lengthComputable","Math","round","loaded","total","uploadBody","start_offset","uploaded","_this4","finishBody","_this5","speed","lastUploadedBytes","window","setInterval","uploadedBytes","clearInterval","get","parseInt","maxActive","type","_this6","completedProgress","chunksUploaded","uploadingProgress","reduce","min","filter","script","methods","change","e","$parent","addInputFile","files","test","navigator","userAgent","$destroy","constructor","parent","el","$el","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","render","staticRenderFns","_compiled","functional","_scopeId","context","$vnode","ssrContext","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","normalizeComponent_1","__vue_script__","__vue_render__","_vm","_h","$createElement","_c","_self","attrs","inputId","accept","capture","disabled","directory","features","multiple","html5","on","__vue_staticRenderFns__","__vue_inject_styles__","undefined","__vue_scope_id__","__vue_module_identifier__","__vue_is_functional_template__","InputFile","_extends","arguments","source","hasOwnProperty","_typeof","Symbol","iterator","obj","_toConsumableArray","arr","Array","isArray","arr2","from","CHUNK_DEFAULT_OPTIONS","minSize","handler","script$1","components","String","default","Boolean","maximum","Number","addIndex","postAction","putAction","customAction","Function","timeout","drop","dropDirectory","extensions","thread","chunkEnabled","dropActive","uploading","destroy","mounted","input","document","createElement","webkitdirectory","ondrop","maps","id","$nextTick","$forceUpdate","watchDrop","beforeDestroy","computed","fileObject","error","success","chunkOptions","className","watch","_active","watchActive","oldMaps","newFile","oldFile","emitFile","_key","clear","emitInput","_files","index","addFiles","Blob","webkitRelativePath","relativePath","Element","random","toString","substr","emitFilter","newFiles","_newFiles","splice","apply","_i","_file2","_i2","names","replace","split","__vuex__","addDataTransfer","dataTransfer","items","item","getAsEntry","getAsFile","webkitGetAsEntry","getEntry","results","_i3","entry","path","isFile","isDirectory","dirReader","createReader","readEntries","entries","id1","id2","file1","file2","index1","indexOf","index2","remove","console","update","isPrevent","$emit","setTimeout","code","message","RegExp","map","trim","join","search","shouldUseChunkUpload","uploadPut","uploadHtml5","uploadHtml4","HandlerClass","querys","encodeURIComponent","queryString","uploadXhr","form","File","filename","_file","speedTime","speedLoaded","onprogress","speedTime2","Date","now","toFixed","interval","complete","fn","responseText","contentType","getResponseHeader","onabort","ontimeout","onKeydown","keyCode","preventDefault","iframe","src","setAttribute","appendChild","getResponseData","doc","contentWindow","contentDocument","innerHTML","removeEventListener","submit","parentNode","removeChild","_el","dropElement","onDragenter","onDragleave","onDocumentDrop","onDragover","onDrop","querySelector","dt","types","contains","nodeName","explicitOriginalTarget","fromElement","clientX","clientY","innerWidth","innerHeight","isOldIE","toLowerCase","addStyle","HEAD","head","getElementsByTagName","styles","css","group","media","ids","Set","has","sources","btoa","unescape","element","styleSheet","cssText","textNode","createTextNode","nodes","childNodes","insertBefore","browser","__vue_script__$1","__vue_render__$1","class","_t","_v","__vue_staticRenderFns__$1","__vue_inject_styles__$1","inject","__vue_scope_id__$1","__vue_module_identifier__$1","__vue_is_functional_template__$1","FileUpload","FileUpload$1","freeze","getCjsExportFromNamespace","n","require$$0","defaultToolbar","header","align","list","indent","color","background","oldApi","customModules","registerCustomModules","Quill","customModule","register","alias","_defineProperties","_inherits","subClass","superClass","create","_setPrototypeOf","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","p","_assertThisInitialized","self","ReferenceError","_possibleConstructorReturn","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","_arr","_n","_d","_e","_s","next","done","mergeDeep","isObject","targetValue","sourceValue","BlockEmbed","HorizontalRule","_BlockEmbed","blotName","tagName","MarkdownShortcuts","quill","ignoreTags","matches","pattern","text","selection","match","exec","formatLine","deleteText","_text","_selection","lineStart","annotatedText","matchedText","startIndex","insertText","bold","italic","format","strike","getSelection","insertEmbed","USER","SILENT","setSelection","_pattern","hrefLink","hrefText","delta","_oldContents","_source","ops","insert","onSpace","onEnter","_this$quill$getLine","getLine","_this$quill$getLine2","line","offset","domNode","textContent","isValid","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","log","return","_this$quill$getLine3","_this$quill$getLine4","_iteratorNormalCompletion2","_didIteratorError2","_iteratorError2","_step2","_iterator2","mixins","placeholder","editorToolbar","editorOptions","required","useCustomImageHandler","useMarkdownShortcuts","val","root","hasFocus","enable","registerPrototypes","initializeEditor","setupQuillEditor","checkForCustomImageHandler","handleInitialContent","registerEditorEventListeners","editorConfig","debug","modules","setModules","theme","readOnly","prepareEditorConfig","$refs","quillContainer","toolbar","getHTML","container","getWordCount","innerText","handleTextChange","handleSelectionChange","listenForEditorEvent","_len","args","range","oldRange","oldContents","editorContent","handleImageRemoved","currrentContents","getContents","deletedContents","diff","operations","operation","image","setupCustomImageHandler","getModule","addHandler","customImageHandler","fileInput","click","emitImageInfo","$event","resetUploader","uploader","getElementById","Editor","cursorLocation","staticClass","ref","staticStyle","VueEditor","version","install","Vue","installed","component","VPlugin","GlobalVue","g","use"],"sourceRoot":""}