{"version":3,"file":"js/chunk-vendors-1656f0b4-legacy.52479156.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() === \"


\" ? \"\" : 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