{"version":3,"file":"control.min.js","sources":["../../../apps/frappe/frappe/public/js/frappe/ui/capture.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/base_control.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/base_input.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/data.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/int.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/float.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/currency.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/date.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/time.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/datetime.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/date_range.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/select.js","../../../apps/frappe/node_modules/awesomplete/awesomplete.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/link.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/dynamic_link.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/text.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/code.js","../../../apps/frappe/node_modules/quill/dist/quill.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/text_editor.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/quill-mention/constants/keys.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/quill-mention/blots/mention.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/quill-mention/quill.mention.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/comment.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/check.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/image.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/attach.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/attach_image.js","../../../apps/frappe/frappe/public/js/frappe/form/grid_row_form.js","../../../apps/frappe/frappe/public/js/frappe/form/grid_row.js","../../../apps/frappe/frappe/public/js/frappe/form/grid.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/table.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/color.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/signature.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/password.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/read_only.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/button.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/html.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/markdown_editor.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/html_editor.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/heading.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/autocomplete.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/Barcode.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE39/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/constants.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/CODE128.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/auto.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/CODE128_AUTO.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/CODE128A.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/CODE128B.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/CODE128C.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/CODE128/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/constants.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/encoder.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN13.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN8.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN5.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/EAN2.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/UPC.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/UPCE.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/EAN_UPC/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/ITF/constants.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/ITF/ITF.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/ITF/ITF14.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/ITF/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/MSI/MSI.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/MSI/checksums.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/MSI/MSI10.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/MSI/MSI11.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/MSI/MSI1010.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/MSI/MSI1110.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/MSI/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/pharmacode/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/codabar/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/GenericBarcode/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/barcodes/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/help/merge.js","../../../apps/frappe/node_modules/jsbarcode/bin/help/linearizeEncodings.js","../../../apps/frappe/node_modules/jsbarcode/bin/help/fixOptions.js","../../../apps/frappe/node_modules/jsbarcode/bin/help/optionsFromStrings.js","../../../apps/frappe/node_modules/jsbarcode/bin/options/defaults.js","../../../apps/frappe/node_modules/jsbarcode/bin/help/getOptionsFromElement.js","../../../apps/frappe/node_modules/jsbarcode/bin/renderers/shared.js","../../../apps/frappe/node_modules/jsbarcode/bin/renderers/canvas.js","../../../apps/frappe/node_modules/jsbarcode/bin/renderers/svg.js","../../../apps/frappe/node_modules/jsbarcode/bin/renderers/object.js","../../../apps/frappe/node_modules/jsbarcode/bin/renderers/index.js","../../../apps/frappe/node_modules/jsbarcode/bin/exceptions/exceptions.js","../../../apps/frappe/node_modules/jsbarcode/bin/help/getRenderProperties.js","../../../apps/frappe/node_modules/jsbarcode/bin/exceptions/ErrorHandler.js","../../../apps/frappe/node_modules/jsbarcode/bin/JsBarcode.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/barcode.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/geolocation.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/multiselect.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/multicheck.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/table_multiselect.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/multiselect_pills.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/multiselect_list.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/rating.js","../../../apps/frappe/frappe/public/js/frappe/form/controls/control.js"],"sourcesContent":["// frappe.ui.Capture\n// Author - Achilles Rasquinha \n\n/**\n * @description Converts a canvas, image or a video to a data URL string.\n * \n * @param \t{HTMLElement} element - canvas, img or video.\n * @returns {string} \t\t\t - The data URL string.\n * \n * @example\n * frappe._.get_data_uri(video)\n * // returns \"data:image/pngbase64,...\"\n */\nfrappe._.get_data_uri = element =>\n{\n\tconst $element = $(element)\n\tconst width = $element.width()\n\tconst height = $element.height()\n\n\tconst $canvas = $('')\n\t$canvas[0].width = width\n\t$canvas[0].height = height\n\n\tconst context = $canvas[0].getContext('2d')\n\tcontext.drawImage($element[0], 0, 0, width, height)\n\t\n\tconst data_uri = $canvas[0].toDataURL('image/png')\n\n\treturn data_uri\n}\n\n/**\n * @description Frappe's Capture object.\n * \n * @example\n * const capture = frappe.ui.Capture()\n * capture.show()\n * \n * capture.click((data_uri) => {\n * \t// do stuff\n * })\n * \n * @see https://developer.mozilla.org/en-US/docs/Web/API/WebRTC_API/Taking_still_photos\n */\nfrappe.ui.Capture = class\n{\n\tconstructor (options = { })\n\t{\n\t\tthis.options = frappe.ui.Capture.OPTIONS\n\t\tthis.set_options(options)\n\t}\n\t\n\tset_options (options)\n\t{\n\t\tthis.options = { ...frappe.ui.Capture.OPTIONS, ...options }\n\t\t\n\t\treturn this\n\t}\n\t\n\trender ( )\n\t{\n\t\treturn navigator.mediaDevices.getUserMedia({ video: true }).then(stream =>\n\t\t{\n\t\t\tthis.dialog \t = new frappe.ui.Dialog({\n\t\t\t\t title: this.options.title,\n\t\t\t\tanimate: this.options.animate,\n\t\t\t\t action:\n\t\t\t\t{\n\t\t\t\t\tsecondary:\n\t\t\t\t\t{\n\t\t\t\t\t\tlabel: \"×\"\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\n\t\t\tconst $e \t\t = $(frappe.ui.Capture.TEMPLATE)\n\t\t\t\n\t\t\tconst video = $e.find('video')[0]\n\t\t\tvideo.srcObject = stream\n\t\t\tvideo.play()\n\t\t\t\n\t\t\tconst $container = $(this.dialog.body)\n\t\t\t$container.html($e)\n\t\t\t\n\t\t\t$e.find('.fc-btf').hide()\n\n\t\t\t$e.find('.fc-bcp').click(() =>\n\t\t\t{\n\t\t\t\tconst data_url = frappe._.get_data_uri(video)\n\t\t\t\t$e.find('.fc-p').attr('src', data_url)\n\n\t\t\t\t$e.find('.fc-s').hide()\n\t\t\t\t$e.find('.fc-p').show()\n\n\t\t\t\t$e.find('.fc-btu').hide()\n\t\t\t\t$e.find('.fc-btf').show()\n\t\t\t})\n\n\t\t\t$e.find('.fc-br').click(() =>\n\t\t\t{\n\t\t\t\t$e.find('.fc-p').hide()\n\t\t\t\t$e.find('.fc-s').show()\n\n\t\t\t\t$e.find('.fc-btf').hide()\n\t\t\t\t$e.find('.fc-btu').show()\n\t\t\t})\n\n\t\t\t$e.find('.fc-bs').click(() =>\n\t\t\t{\n\t\t\t\tconst data_url = frappe._.get_data_uri(video)\n\t\t\t\tthis.hide()\n\t\t\t\t\n\t\t\t\tif (this.callback)\n\t\t\t\t\tthis.callback(data_url)\n\t\t\t})\n\t\t})\n\t}\n\n\tshow ( )\n\t{\n\t\tthis.render().then(() =>\n\t\t{\n\t\t\tthis.dialog.show()\n\t\t}).catch(err => {\n\t\t\tif ( this.options.error )\n\t\t\t{\n\t\t\t\tconst alert = ` ${frappe.ui.Capture.ERR_MESSAGE}`\n\t\t\t\tfrappe.show_alert(alert, 3)\n\t\t\t}\n\n\t\t\tthrow err\n\t\t})\n\t}\n\n\thide ( )\n\t{\n\t\tif ( this.dialog )\n\t\t\tthis.dialog.hide()\n\t}\n\n\tsubmit (fn)\n\t{\n\t\tthis.callback = fn\n\t}\n}\nfrappe.ui.Capture.OPTIONS =\n{\n\t title: __(`Camera`),\n\tanimate: false,\n\t error: false,\n}\nfrappe.ui.Capture.ERR_MESSAGE = __(\"Unable to load camera.\")\nfrappe.ui.Capture.TEMPLATE \t =\n`\n
\n\t
\n\t\t\n\t\t
\n\t\t\t\n\t\t
\n\t
\n\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t${\n\t\t\t\t\t\t''\n\t\t\t\t\t\t//
\n\t\t\t\t\t\t// \t\n\t\t\t\t\t\t//
\n\t\t\t\t\t}\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
\n
\n`","frappe.ui.form.Control = Class.extend({\n\tinit: function(opts) {\n\t\t$.extend(this, opts);\n\t\tthis.make();\n\n\t\t// if developer_mode=1, show fieldname as tooltip\n\t\tif(frappe.boot.user && frappe.boot.developer_mode===1 && this.$wrapper) {\n\t\t\tthis.$wrapper.attr(\"title\", __(this.df.fieldname));\n\t\t}\n\n\t\tif(this.render_input) {\n\t\t\tthis.refresh();\n\t\t}\n\t},\n\tmake: function() {\n\t\tthis.make_wrapper();\n\t\tthis.$wrapper\n\t\t\t.attr(\"data-fieldtype\", this.df.fieldtype)\n\t\t\t.attr(\"data-fieldname\", this.df.fieldname);\n\t\tthis.wrapper = this.$wrapper.get(0);\n\t\tthis.wrapper.fieldobj = this; // reference for event handlers\n\t},\n\n\tmake_wrapper: function() {\n\t\tthis.$wrapper = $(\"
\").appendTo(this.parent);\n\n\t\t// alias\n\t\tthis.wrapper = this.$wrapper;\n\t},\n\n\ttoggle: function(show) {\n\t\tthis.df.hidden = show ? 0 : 1;\n\t\tthis.refresh();\n\t},\n\n\t// returns \"Read\", \"Write\" or \"None\"\n\t// as strings based on permissions\n\tget_status: function(explain) {\n\t\tif (this.df.get_status) {\n\t\t\treturn this.df.get_status(this);\n\t\t}\n\n\t\tif((!this.doctype && !this.docname) || this.df.parenttype === 'Web Form') {\n\t\t\t// like in case of a dialog box\n\t\t\tif (cint(this.df.hidden)) {\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tif(explain) console.log(\"By Hidden: None\");\n\t\t\t\treturn \"None\";\n\n\t\t\t} else if (cint(this.df.hidden_due_to_dependency)) {\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tif(explain) console.log(\"By Hidden Dependency: None\");\n\t\t\t\treturn \"None\";\n\n\t\t\t} else if (cint(this.df.read_only)) {\n\t\t\t\t// eslint-disable-next-line\n\t\t\t\tif(explain) console.log(\"By Read Only: Read\");\n\t\t\t\treturn \"Read\";\n\n\t\t\t}\n\n\t\t\treturn \"Write\";\n\t\t}\n\n\t\tvar status = frappe.perm.get_field_display_status(this.df,\n\t\t\tfrappe.model.get_doc(this.doctype, this.docname), this.perm || (this.frm && this.frm.perm), explain);\n\n\t\t// hide if no value\n\t\tif (this.doctype && status===\"Read\" && !this.only_input\n\t\t\t&& is_null(frappe.model.get_value(this.doctype, this.docname, this.df.fieldname))\n\t\t\t&& !in_list([\"HTML\", \"Image\", \"Button\"], this.df.fieldtype)) {\n\n\t\t\t// eslint-disable-next-line\n\t\t\tif(explain) console.log(\"By Hide Read-only, null fields: None\");\n\t\t\tstatus = \"None\";\n\t\t}\n\n\t\treturn status;\n\t},\n\trefresh: function() {\n\t\tthis.disp_status = this.get_status();\n\t\tthis.$wrapper\n\t\t\t&& this.$wrapper.toggleClass(\"hide-control\", this.disp_status==\"None\")\n\t\t\t&& this.refresh_input\n\t\t\t&& this.refresh_input();\n\n\t\tvar value = this.get_value();\n\n\t\tthis.show_translatable_button(value);\n\t},\n\tshow_translatable_button(value) {\n\t\t// Disable translation non-string fields or special string fields\n\t\tif (!frappe.model\n\t\t\t|| !this.frm\n\t\t\t|| !this.doc\n\t\t\t|| !this.df.translatable\n\t\t\t|| !frappe.model.can_write('Translation')\n\t\t\t|| !value) return;\n\n\t\t// Disable translation in website\n\t\tif (!frappe.views || !frappe.views.TranslationManager) return;\n\n\t\t// Already attached button\n\t\tif (this.$wrapper.find('.clearfix .btn-translation').length) return;\n\n\t\tconst translation_btn =\n\t\t\t`\n\t\t\t\t\n\t\t\t`;\n\n\t\t$(translation_btn)\n\t\t\t.appendTo(this.$wrapper.find('.clearfix'))\n\t\t\t.on('click', () => {\n\t\t\t\tif (!this.doc.__islocal) {\n\t\t\t\t\tnew frappe.views.TranslationManager({\n\t\t\t\t\t\t'df': this.df,\n\t\t\t\t\t\t'source_name': this.value,\n\t\t\t\t\t\t'target_language': this.doc.language,\n\t\t\t\t\t\t'doc': this.doc\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t},\n\tget_doc: function() {\n\t\treturn this.doctype && this.docname\n\t\t\t&& locals[this.doctype] && locals[this.doctype][this.docname] || {};\n\t},\n\tget_model_value: function() {\n\t\tif(this.doc) {\n\t\t\treturn this.doc[this.df.fieldname];\n\t\t}\n\t},\n\tset_value: function(value) {\n\t\treturn this.validate_and_set_in_model(value);\n\t},\n\tparse_validate_and_set_in_model: function(value, e) {\n\t\tif(this.parse) {\n\t\t\tvalue = this.parse(value);\n\t\t}\n\t\treturn this.validate_and_set_in_model(value, e);\n\t},\n\tvalidate_and_set_in_model: function(value, e) {\n\t\tvar me = this;\n\t\tlet force_value_set = (this.doc && this.doc.__run_link_triggers);\n\t\tlet is_value_same = (this.get_model_value() === value);\n\n\t\tif (this.inside_change_event || (!force_value_set && is_value_same)) {\n\t\t\treturn Promise.resolve();\n\t\t}\n\n\t\tthis.inside_change_event = true;\n\t\tvar set = function(value) {\n\t\t\tme.inside_change_event = false;\n\t\t\treturn frappe.run_serially([\n\t\t\t\t() => me.set_model_value(value),\n\t\t\t\t() => {\n\t\t\t\t\tme.set_mandatory && me.set_mandatory(value);\n\n\t\t\t\t\tif(me.df.change || me.df.onchange) {\n\t\t\t\t\t\t// onchange event specified in df\n\t\t\t\t\t\tlet set = (me.df.change || me.df.onchange).apply(me, [e]);\n\t\t\t\t\t\tme.set_invalid && me.set_invalid();\n\t\t\t\t\t\treturn set;\n\t\t\t\t\t}\n\t\t\t\t\tme.set_invalid && me.set_invalid();\n\t\t\t\t}\n\t\t\t]);\n\t\t};\n\n\t\tvalue = this.validate(value);\n\t\tif (value && value.then) {\n\t\t\t// got a promise\n\t\t\treturn value.then((value) => set(value));\n\t\t} else {\n\t\t\t// all clear\n\t\t\treturn set(value);\n\t\t}\n\t},\n\tget_value: function() {\n\t\tif(this.get_status()==='Write') {\n\t\t\treturn this.get_input_value ?\n\t\t\t\t(this.parse ? this.parse(this.get_input_value()) : this.get_input_value()) :\n\t\t\t\tundefined;\n\t\t} else {\n\t\t\treturn this.value || undefined;\n\t\t}\n\t},\n\tset_model_value: function(value) {\n\t\tif(this.frm) {\n\t\t\tthis.last_value = value;\n\t\t\treturn frappe.model.set_value(this.doctype, this.docname, this.df.fieldname,\n\t\t\t\tvalue, this.df.fieldtype);\n\t\t} else {\n\t\t\tif(this.doc) {\n\t\t\t\tthis.doc[this.df.fieldname] = value;\n\t\t\t}\n\t\t\tthis.set_input(value);\n\t\t\treturn Promise.resolve();\n\t\t}\n\t},\n\tset_focus: function() {\n\t\tif(this.$input) {\n\t\t\tthis.$input.get(0).focus();\n\t\t\treturn true;\n\t\t}\n\t}\n});\n","frappe.ui.form.ControlInput = frappe.ui.form.Control.extend({\n\thorizontal: true,\n\tmake: function() {\n\t\t// parent element\n\t\tthis._super();\n\t\tthis.set_input_areas();\n\n\t\t// set description\n\t\tthis.set_max_width();\n\t},\n\tmake_wrapper: function() {\n\t\tif(this.only_input) {\n\t\t\tthis.$wrapper = $('
').appendTo(this.parent);\n\t\t} else {\n\t\t\tthis.$wrapper = $('
\\\n\t\t\t\t
\\\n\t\t\t\t\t
\\\n\t\t\t\t\t\t\\\n\t\t\t\t\t
\\\n\t\t\t\t\t
\\\n\t\t\t\t\t\t
\\\n\t\t\t\t\t\t
\\\n\t\t\t\t\t\t

\\\n\t\t\t\t\t
\\\n\t\t\t\t
\\\n\t\t\t
').appendTo(this.parent);\n\t\t}\n\t},\n\ttoggle_label: function(show) {\n\t\tthis.$wrapper.find(\".control-label\").toggleClass(\"hide\", !show);\n\t},\n\ttoggle_description: function(show) {\n\t\tthis.$wrapper.find(\".help-box\").toggleClass(\"hide\", !show);\n\t},\n\tset_input_areas: function() {\n\t\tif(this.only_input) {\n\t\t\tthis.input_area = this.wrapper;\n\t\t} else {\n\t\t\tthis.label_area = this.label_span = this.$wrapper.find(\"label\").get(0);\n\t\t\tthis.input_area = this.$wrapper.find(\".control-input\").get(0);\n\t\t\tthis.$input_wrapper = this.$wrapper.find(\".control-input-wrapper\");\n\t\t\t// keep a separate display area to rendered formatted values\n\t\t\t// like links, currencies, HTMLs etc.\n\t\t\tthis.disp_area = this.$wrapper.find(\".control-value\").get(0);\n\t\t}\n\t},\n\tset_max_width: function() {\n\t\tif(this.horizontal) {\n\t\t\tthis.$wrapper.addClass(\"input-max-width\");\n\t\t}\n\t},\n\n\t// update input value, label, description\n\t// display (show/hide/read-only),\n\t// mandatory style on refresh\n\trefresh_input: function() {\n\t\tvar me = this;\n\t\tvar make_input = function() {\n\t\t\tif (!me.has_input) {\n\t\t\t\tme.make_input();\n\t\t\t\tif (me.df.on_make) {\n\t\t\t\t\tme.df.on_make(me);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar update_input = function() {\n\t\t\tif (me.doctype && me.docname) {\n\t\t\t\tme.set_input(me.value);\n\t\t\t} else {\n\t\t\t\tme.set_input(me.value || null);\n\t\t\t}\n\t\t};\n\n\t\tif (me.disp_status != \"None\") {\n\t\t\t// refresh value\n\t\t\tif (me.frm) {\n\t\t\t\tme.value = frappe.model.get_value(me.doctype, me.docname, me.df.fieldname);\n\t\t\t} else if (me.doc) {\n\t\t\t\tme.value = me.doc[me.df.fieldname];\n\t\t\t}\n\n\t\t\tif (me.can_write()) {\n\t\t\t\tme.disp_area && $(me.disp_area).toggle(false);\n\t\t\t\t$(me.input_area).toggle(true);\n\t\t\t\tme.$input && me.$input.prop(\"disabled\", false);\n\t\t\t\tmake_input();\n\t\t\t\tupdate_input();\n\t\t\t} else {\n\t\t\t\tif (me.only_input) {\n\t\t\t\t\tmake_input();\n\t\t\t\t\tupdate_input();\n\t\t\t\t} else {\n\t\t\t\t\t$(me.input_area).toggle(false);\n\t\t\t\t\tif (me.disp_area) {\n\t\t\t\t\t\tme.set_disp_area(me.value);\n\t\t\t\t\t\t$(me.disp_area).toggle(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tme.$input && me.$input.prop(\"disabled\", true);\n\t\t\t}\n\n\t\t\tme.set_description();\n\t\t\tme.set_label();\n\t\t\tme.set_mandatory(me.value);\n\t\t\tme.set_bold();\n\t\t}\n\t},\n\n\tcan_write() {\n\t\treturn this.disp_status == \"Write\";\n\t},\n\n\tset_disp_area: function(value) {\n\t\tif(in_list([\"Currency\", \"Int\", \"Float\"], this.df.fieldtype)\n\t\t\t&& (this.value === 0 || value === 0)) {\n\t\t\t// to set the 0 value in readonly for currency, int, float field\n\t\t\tvalue = 0;\n\t\t} else {\n\t\t\tvalue = this.value || value;\n\t\t}\n\t\tif (this.df.fieldtype === 'Data') {\n\t\t\tvalue = frappe.utils.escape_html(value);\n\t\t}\n\t\tlet doc = this.doc || (this.frm && this.frm.doc);\n\t\tlet display_value = frappe.format(value, this.df, { no_icon: true, inline: true }, doc);\n\t\tthis.disp_area && $(this.disp_area).html(display_value);\n\t},\n\tset_label: function(label) {\n\t\tif(label) this.df.label = label;\n\n\t\tif(this.only_input || this.df.label==this._label)\n\t\t\treturn;\n\n\t\tvar icon = \"\";\n\t\tthis.label_span.innerHTML = (icon ? ' ' : \"\") +\n\t\t\t__(this.df.label) || \" \";\n\t\tthis._label = this.df.label;\n\t},\n\tset_description: function(description) {\n\t\tif (description !== undefined) {\n\t\t\tthis.df.description = description;\n\t\t}\n\t\tif (this.only_input || this.df.description===this._description) {\n\t\t\treturn;\n\t\t}\n\t\tif (this.df.description) {\n\t\t\tthis.$wrapper.find(\".help-box\").html(__(this.df.description));\n\t\t} else {\n\t\t\tthis.set_empty_description();\n\t\t}\n\t\tthis._description = this.df.description;\n\t},\n\tset_new_description: function(description) {\n\t\tthis.$wrapper.find(\".help-box\").html(description);\n\t},\n\tset_empty_description: function() {\n\t\tthis.$wrapper.find(\".help-box\").html(\"\");\n\t},\n\tset_mandatory: function(value) {\n\t\tthis.$wrapper.toggleClass(\"has-error\", (this.df.reqd && is_null(value)) ? true : false);\n\t},\n\tset_invalid: function () {\n\t\tlet invalid = !!this.df.invalid;\n\t\tif (this.grid) {\n\t\t\tthis.$wrapper.parents('.grid-static-col').toggleClass('invalid', invalid);\n\t\t\tthis.$input.toggleClass('invalid', invalid);\n\t\t\tthis.grid_row.columns[this.df.fieldname].is_invalid = invalid;\n\t\t} else {\n\t\t\tthis.$wrapper.toggleClass('has-error', invalid);\n\t\t}\n\t},\n\tset_bold: function() {\n\t\tif(this.$input) {\n\t\t\tthis.$input.toggleClass(\"bold\", !!(this.df.bold || this.df.reqd));\n\t\t}\n\t\tif(this.disp_area) {\n\t\t\t$(this.disp_area).toggleClass(\"bold\", !!(this.df.bold || this.df.reqd));\n\t\t}\n\t}\n});\n","frappe.ui.form.ControlData = frappe.ui.form.ControlInput.extend({\n\thtml_element: \"input\",\n\tinput_type: \"text\",\n\ttrigger_change_on_input_event: true,\n\tmake_input: function() {\n\t\tif(this.$input) return;\n\n\t\tthis.$input = $(\"<\"+ this.html_element +\">\")\n\t\t\t.attr(\"type\", this.input_type)\n\t\t\t.attr(\"autocomplete\", \"off\")\n\t\t\t.addClass(\"input-with-feedback form-control\")\n\t\t\t.prependTo(this.input_area);\n\n\t\tif (in_list(['Data', 'Link', 'Dynamic Link', 'Password', 'Select', 'Read Only', 'Attach', 'Attach Image'],\n\t\t\tthis.df.fieldtype)) {\n\t\t\tthis.$input.attr(\"maxlength\", this.df.length || 140);\n\t\t}\n\n\t\tthis.set_input_attributes();\n\t\tthis.input = this.$input.get(0);\n\t\tthis.has_input = true;\n\t\tthis.bind_change_event();\n\t\tthis.setup_autoname_check();\n\t},\n\tbind_change_event: function() {\n\t\tconst change_handler = e => {\n\t\t\tif (this.change) this.change(e);\n\t\t\telse {\n\t\t\t\tlet value = this.get_input_value();\n\t\t\t\tthis.parse_validate_and_set_in_model(value, e);\n\t\t\t}\n\t\t};\n\t\tthis.$input.on(\"change\", change_handler);\n\t\tif (this.trigger_change_on_input_event) {\n\t\t\t// debounce to avoid repeated validations on value change\n\t\t\tthis.$input.on(\"input\", frappe.utils.debounce(change_handler, 500));\n\t\t}\n\t},\n\tsetup_autoname_check: function() {\n\t\tif (!this.df.parent) return;\n\t\tthis.meta = frappe.get_meta(this.df.parent);\n\t\tif (this.meta && ((this.meta.autoname\n\t\t\t&& this.meta.autoname.substr(0, 6)==='field:'\n\t\t\t&& this.meta.autoname.substr(6) === this.df.fieldname) || this.df.fieldname==='__newname') ) {\n\t\t\tthis.$input.on('keyup', () => {\n\t\t\t\tthis.set_description('');\n\t\t\t\tif (this.doc && this.doc.__islocal) {\n\t\t\t\t\t// check after 1 sec\n\t\t\t\t\tlet timeout = setTimeout(() => {\n\t\t\t\t\t\t// clear any pending calls\n\t\t\t\t\t\tif (this.last_check) clearTimeout(this.last_check);\n\n\t\t\t\t\t\t// check if name exists\n\t\t\t\t\t\tfrappe.db.get_value(this.doctype, this.$input.val(),\n\t\t\t\t\t\t\t'name', (val) => {\n\t\t\t\t\t\t\t\tif (val && val.name) {\n\t\t\t\t\t\t\t\t\tthis.set_description(__('{0} already exists. Select another name', [val.name]));\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tthis.doc.parenttype\n\t\t\t\t\t\t);\n\t\t\t\t\t\tthis.last_check = null;\n\t\t\t\t\t}, 1000);\n\t\t\t\t\tthis.last_check = timeout;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t},\n\tset_input_attributes: function() {\n\t\tthis.$input\n\t\t\t.attr(\"data-fieldtype\", this.df.fieldtype)\n\t\t\t.attr(\"data-fieldname\", this.df.fieldname)\n\t\t\t.attr(\"placeholder\", this.df.placeholder || \"\");\n\t\tif(this.doctype) {\n\t\t\tthis.$input.attr(\"data-doctype\", this.doctype);\n\t\t}\n\t\tif(this.df.input_css) {\n\t\t\tthis.$input.css(this.df.input_css);\n\t\t}\n\t\tif(this.df.input_class) {\n\t\t\tthis.$input.addClass(this.df.input_class);\n\t\t}\n\t},\n\tset_input: function(value) {\n\t\tthis.last_value = this.value;\n\t\tthis.value = value;\n\t\tthis.set_formatted_input(value);\n\t\tthis.set_disp_area(value);\n\t\tthis.set_mandatory && this.set_mandatory(value);\n\t},\n\tset_formatted_input: function(value) {\n\t\tthis.$input && this.$input.val(this.format_for_input(value));\n\t},\n\tget_input_value: function() {\n\t\treturn this.$input ? this.$input.val() : undefined;\n\t},\n\tformat_for_input: function(val) {\n\t\treturn val==null ? \"\" : val;\n\t},\n\tvalidate: function(v) {\n\t\tif (!v) {\n\t\t\treturn '';\n\t\t}\n\t\tif(this.df.is_filter) {\n\t\t\treturn v;\n\t\t}\n\t\tif(this.df.options == 'Phone') {\n\t\t\tthis.df.invalid = !validate_phone(v);\n\t\t\treturn v;\n\t\t} else if(this.df.options == 'Email') {\n\t\t\tvar email_list = frappe.utils.split_emails(v);\n\t\t\tif (!email_list) {\n\t\t\t\treturn '';\n\t\t\t} else {\n\t\t\t\tlet email_invalid = false;\n\t\t\t\temail_list.forEach(function(email) {\n\t\t\t\t\tif (!validate_email(email)) {\n\t\t\t\t\t\temail_invalid = true;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.df.invalid = email_invalid;\n\t\t\t\treturn v;\n\t\t\t}\n\t\t} else {\n\t\t\treturn v;\n\t\t}\n\t}\n});\n","frappe.ui.form.ControlInt = frappe.ui.form.ControlData.extend({\n\ttrigger_change_on_input_event: false,\n\tmake: function () {\n\t\tthis._super();\n\t\t// $(this.label_area).addClass('pull-right');\n\t\t// $(this.disp_area).addClass('text-right');\n\t},\n\tmake_input: function() {\n\t\tvar me = this;\n\t\tthis._super();\n\t\tthis.$input\n\t\t\t// .addClass(\"text-right\")\n\t\t\t.on(\"focus\", function() {\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\tif(!document.activeElement) return;\n\t\t\t\t\tdocument.activeElement.value\n\t\t\t\t\t\t= me.validate(document.activeElement.value);\n\t\t\t\t\tdocument.activeElement.select();\n\t\t\t\t}, 100);\n\t\t\t\treturn false;\n\t\t\t});\n\t},\n\teval_expression: function(value) {\n\t\tif (typeof value === 'string') {\n\t\t\tif (value.match(/^[0-9+\\-/* ]+$/)) {\n\t\t\t\t// If it is a string containing operators\n\t\t\t\ttry {\n\t\t\t\t\treturn eval(value);\n\t\t\t\t} catch (e) {\n\t\t\t\t\t// bad expression\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn value;\n\t},\n\tparse: function(value) {\n\t\treturn cint(this.eval_expression(value), null);\n\t}\n});\n","frappe.ui.form.ControlFloat = frappe.ui.form.ControlInt.extend({\n\tparse: function(value) {\n\t\tvalue = this.eval_expression(value);\n\t\treturn isNaN(parseFloat(value)) ? null : flt(value, this.get_precision());\n\t},\n\n\tformat_for_input: function(value) {\n\t\tvar number_format;\n\t\tif (this.df.fieldtype===\"Float\" && this.df.options && this.df.options.trim()) {\n\t\t\tnumber_format = this.get_number_format();\n\t\t}\n\t\tvar formatted_value = format_number(value, number_format, this.get_precision());\n\t\treturn isNaN(Number(value)) ? \"\" : formatted_value;\n\t},\n\n\tget_number_format: function() {\n\t\tvar currency = frappe.meta.get_field_currency(this.df, this.get_doc());\n\t\treturn get_number_format(currency);\n\t},\n\n\tget_precision: function() {\n\t\t// round based on field precision or float precision, else don't round\n\t\treturn this.df.precision || cint(frappe.boot.sysdefaults.float_precision, null);\n\t}\n});\n\nfrappe.ui.form.ControlPercent = frappe.ui.form.ControlFloat;\n","frappe.ui.form.ControlCurrency = frappe.ui.form.ControlFloat.extend({\n\tformat_for_input: function(value) {\n\t\tvar formatted_value = format_number(value, this.get_number_format(), this.get_precision());\n\t\treturn isNaN(Number(value)) ? \"\" : formatted_value;\n\t},\n\n\tget_precision: function() {\n\t\t// always round based on field precision or currency's precision\n\t\t// this method is also called in this.parse()\n\t\tif (!this.df.precision) {\n\t\t\tif(frappe.boot.sysdefaults.currency_precision) {\n\t\t\t\tthis.df.precision = frappe.boot.sysdefaults.currency_precision;\n\t\t\t} else {\n\t\t\t\tthis.df.precision = get_number_format_info(this.get_number_format()).precision;\n\t\t\t}\n\t\t}\n\n\t\treturn this.df.precision;\n\t}\n});\n","frappe.ui.form.ControlDate = frappe.ui.form.ControlData.extend({\n\ttrigger_change_on_input_event: false,\n\tmake_input: function() {\n\t\tthis._super();\n\t\tthis.set_date_options();\n\t\tthis.set_datepicker();\n\t\tthis.set_t_for_today();\n\t},\n\tset_formatted_input: function(value) {\n\t\tthis._super(value);\n\t\tif (!this.datepicker) return;\n\t\tif(!value) {\n\t\t\tthis.datepicker.clear();\n\t\t\treturn;\n\t\t}\n\n\t\tlet should_refresh = this.last_value && this.last_value !== value;\n\n\t\tif (!should_refresh) {\n\t\t\tif(this.datepicker.selectedDates.length > 0) {\n\t\t\t\t// if date is selected but different from value, refresh\n\t\t\t\tconst selected_date =\n\t\t\t\t\tmoment(this.datepicker.selectedDates[0])\n\t\t\t\t\t\t.format(this.date_format);\n\n\t\t\t\tshould_refresh = selected_date !== value;\n\t\t\t} else {\n\t\t\t\t// if datepicker has no selected date, refresh\n\t\t\t\tshould_refresh = true;\n\t\t\t}\n\t\t}\n\n\t\tif(should_refresh) {\n\t\t\tthis.datepicker.selectDate(frappe.datetime.str_to_obj(value));\n\t\t}\n\t},\n\tset_date_options: function() {\n\t\t// webformTODO:\n\t\tlet sysdefaults = frappe.boot.sysdefaults;\n\n\t\tlet lang = 'en';\n\t\tfrappe.boot.user && (lang = frappe.boot.user.language);\n\t\tif(!$.fn.datepicker.language[lang]) {\n\t\t\tlang = 'en';\n\t\t}\n\n\t\tlet date_format = sysdefaults && sysdefaults.date_format\n\t\t\t? sysdefaults.date_format : 'yyyy-mm-dd';\n\n\t\tlet now_date = new Date();\n\n\t\tthis.today_text = __(\"Today\");\n\t\tthis.date_format = frappe.defaultDateFormat;\n\t\tthis.datepicker_options = {\n\t\t\tlanguage: lang,\n\t\t\tautoClose: true,\n\t\t\ttodayButton: true,\n\t\t\tdateFormat: date_format,\n\t\t\tstartDate: now_date,\n\t\t\tkeyboardNav: false,\n\t\t\tonSelect: () => {\n\t\t\t\tthis.$input.trigger('change');\n\t\t\t},\n\t\t\tonShow: () => {\n\t\t\t\tthis.datepicker.$datepicker\n\t\t\t\t\t.find('.datepicker--button:visible')\n\t\t\t\t\t.text(this.today_text);\n\n\t\t\t\tthis.update_datepicker_position();\n\t\t\t}\n\t\t};\n\t},\n\tupdate_datepicker_position: function() {\n\t\tif(!this.frm) return;\n\t\t// show datepicker above or below the input\n\t\t// based on scroll position\n\t\tvar window_height = $(window).height();\n\t\tvar window_scroll_top = $(window).scrollTop();\n\t\tvar el_offset_top = this.$input.offset().top + 280;\n\t\tvar position = 'top left';\n\t\tif(window_height + window_scroll_top >= el_offset_top) {\n\t\t\tposition = 'bottom left';\n\t\t}\n\t\tthis.datepicker.update('position', position);\n\t},\n\tset_datepicker: function() {\n\t\tthis.$input.datepicker(this.datepicker_options);\n\t\tthis.datepicker = this.$input.data('datepicker');\n\n\t\t// today button didn't work as expected,\n\t\t// so explicitly bind the event\n\t\tthis.datepicker.$datepicker\n\t\t\t.find('[data-action=\"today\"]')\n\t\t\t.click(() => {\n\t\t\t\tthis.datepicker.selectDate(this.get_now_date());\n\t\t\t});\n\t},\n\tget_now_date: function() {\n\t\treturn frappe.datetime.now_date(true);\n\t},\n\tset_t_for_today: function() {\n\t\tvar me = this;\n\t\tthis.$input.on(\"keydown\", function(e) {\n\t\t\tif(e.which===84) { // 84 === t\n\t\t\t\tif(me.df.fieldtype=='Date') {\n\t\t\t\t\tme.set_value(frappe.datetime.nowdate());\n\t\t\t\t} if(me.df.fieldtype=='Datetime') {\n\t\t\t\t\tme.set_value(frappe.datetime.now_datetime());\n\t\t\t\t} if(me.df.fieldtype=='Time') {\n\t\t\t\t\tme.set_value(frappe.datetime.now_time());\n\t\t\t\t}\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t},\n\tparse: function(value) {\n\t\tif(value) {\n\t\t\treturn frappe.datetime.user_to_str(value);\n\t\t}\n\t},\n\tformat_for_input: function(value) {\n\t\tif(value) {\n\t\t\treturn frappe.datetime.str_to_user(value);\n\t\t}\n\t\treturn \"\";\n\t},\n\tvalidate: function(value) {\n\t\tif(value && !frappe.datetime.validate(value)) {\n\t\t\tlet sysdefaults = frappe.sys_defaults;\n\t\t\tlet date_format = sysdefaults && sysdefaults.date_format\n\t\t\t\t? sysdefaults.date_format : 'yyyy-mm-dd';\n\t\t\tfrappe.msgprint(__(\"Date {0} must be in format: {1}\", [value, date_format]));\n\t\t\treturn '';\n\t\t}\n\t\treturn value;\n\t}\n});\n","frappe.ui.form.ControlTime = frappe.ui.form.ControlData.extend({\n\tmake_input: function() {\n\t\tvar me = this;\n\t\tthis._super();\n\t\tthis.$input.datepicker({\n\t\t\tlanguage: \"en\",\n\t\t\ttimepicker: true,\n\t\t\tonlyTimepicker: true,\n\t\t\ttimeFormat: \"hh:ii:ss\",\n\t\t\tstartDate: frappe.datetime.now_time(true),\n\t\t\tonSelect: function() {\n\t\t\t\t// ignore micro seconds\n\t\t\t\tif (moment(me.get_value(), 'hh:mm:ss').format('HH:mm:ss') != moment(me.value, 'hh:mm:ss').format('HH:mm:ss')) {\n\t\t\t\t\tme.$input.trigger('change');\n\t\t\t\t}\n\t\t\t},\n\t\t\tonShow: function() {\n\t\t\t\t$('.datepicker--button:visible').text(__('Now'));\n\t\t\t},\n\t\t\tkeyboardNav: false,\n\t\t\ttodayButton: true\n\t\t});\n\t\tthis.datepicker = this.$input.data('datepicker');\n\t\tthis.datepicker.$datepicker\n\t\t\t.find('[data-action=\"today\"]')\n\t\t\t.click(() => {\n\t\t\t\tthis.datepicker.selectDate(frappe.datetime.now_time(true));\n\t\t\t});\n\t\tthis.refresh();\n\t},\n\tset_input: function(value) {\n\t\tthis._super(value);\n\t\tif(value\n\t\t\t&& ((this.last_value && this.last_value !== this.value)\n\t\t\t\t|| (!this.datepicker.selectedDates.length))) {\n\n\t\t\tvar date_obj = frappe.datetime.moment_to_date_obj(moment(value, 'HH:mm:ss'));\n\t\t\tthis.datepicker.selectDate(date_obj);\n\t\t}\n\t},\n\tset_description: function() {\n\t\tconst { description } = this.df;\n\t\tconst { time_zone } = frappe.sys_defaults;\n\t\tif (!frappe.datetime.is_timezone_same()) {\n\t\t\tif (!description) {\n\t\t\t\tthis.df.description = time_zone;\n\t\t\t} else if (!description.includes(time_zone)) {\n\t\t\t\tthis.df.description += '
' + time_zone;\n\t\t\t}\n\t\t}\n\t\tthis._super();\n\t},\n\tparse: function(value) {\n\t\tif (value) {\n\t\t\treturn frappe.datetime.user_to_str(value, true);\n\t\t}\n\t},\n\tformat_for_input: function(value) {\n\t\tif (value) {\n\t\t\treturn frappe.datetime.str_to_user(value, true);\n\t\t}\n\t\treturn \"\";\n\t},\n\tvalidate: function(value) {\n\t\tif (value && !frappe.datetime.validate(value)) {\n\t\t\tlet time_format = 'HH:mm:ss';\n\t\t\tfrappe.msgprint(__(\"Time {0} must be in format: {1}\", [value, time_format.bold()]));\n\t\t\treturn '';\n\t\t}\n\t\treturn value;\n\t}\n});\n","frappe.ui.form.ControlDatetime = frappe.ui.form.ControlDate.extend({\n\tset_date_options: function() {\n\t\tthis._super();\n\t\tthis.today_text = __(\"Now\");\n\t\tthis.date_format = frappe.defaultDatetimeFormat;\n\t\t$.extend(this.datepicker_options, {\n\t\t\ttimepicker: true,\n\t\t\ttimeFormat: \"hh:ii:ss\"\n\t\t});\n\t},\n\tget_now_date: function() {\n\t\treturn frappe.datetime.now_datetime(true);\n\t},\n\tset_description: function() {\n\t\tconst { description } = this.df;\n\t\tconst { time_zone } = frappe.sys_defaults;\n\t\tif (!frappe.datetime.is_timezone_same()) {\n\t\t\tif (!description) {\n\t\t\t\tthis.df.description = time_zone;\n\t\t\t} else if (!description.includes(time_zone)) {\n\t\t\t\tthis.df.description += '
' + time_zone;\n\t\t\t}\n\t\t}\n\t\tthis._super();\n\t}\n});\n","frappe.ui.form.ControlDateRange = frappe.ui.form.ControlData.extend({\n\tmake_input: function() {\n\t\tthis._super();\n\t\tthis.set_date_options();\n\t\tthis.set_datepicker();\n\t\tthis.refresh();\n\t},\n\tset_date_options: function() {\n\t\tvar me = this;\n\t\tthis.datepicker_options = {\n\t\t\tlanguage: \"en\",\n\t\t\trange: true,\n\t\t\tautoClose: true,\n\t\t\ttoggleSelected: false\n\t\t};\n\t\tthis.datepicker_options.dateFormat =\n\t\t\t(frappe.boot.sysdefaults.date_format || 'yyyy-mm-dd');\n\t\tthis.datepicker_options.onSelect = function() {\n\t\t\tme.$input.trigger('change');\n\t\t};\n\t},\n\tset_datepicker: function() {\n\t\tthis.$input.datepicker(this.datepicker_options);\n\t\tthis.datepicker = this.$input.data('datepicker');\n\t},\n\tset_input: function(value, value2) {\n\t\tthis.last_value = this.value;\n\t\tif (value && value2) {\n\t\t\tthis.value = [value, value2];\n\t\t} else {\n\t\t\tthis.value = value;\n\t\t}\n\t\tif (this.value) {\n\t\t\tlet formatted = this.format_for_input(this.value[0], this.value[1]);\n\t\t\tthis.$input && this.$input.val(formatted);\n\t\t} else {\n\t\t\tthis.$input && this.$input.val(\"\");\n\t\t}\n\t\tthis.set_disp_area(value || '');\n\t\tthis.set_mandatory && this.set_mandatory(value);\n\t},\n\tparse: function(value) {\n\t\t// replace the separator (which can be in user language) with comma\n\t\tconst to = __('{0} to {1}').replace('{0}', '').replace('{1}', '');\n\t\tvalue = value.replace(to, ',');\n\n\t\tif(value && value.includes(',')) {\n\t\t\tvar vals = value.split(',');\n\t\t\tvar from_date = moment(frappe.datetime.user_to_obj(vals[0])).format('YYYY-MM-DD');\n\t\t\tvar to_date = moment(frappe.datetime.user_to_obj(vals[vals.length-1])).format('YYYY-MM-DD');\n\t\t\treturn [from_date, to_date];\n\t\t}\n\t},\n\tformat_for_input: function(value1, value2) {\n\t\tif(value1 && value2) {\n\t\t\tvalue1 = frappe.datetime.str_to_user(value1);\n\t\t\tvalue2 = frappe.datetime.str_to_user(value2);\n\t\t\treturn __(\"{0} to {1}\", [value1, value2]);\n\t\t}\n\t\treturn \"\";\n\t}\n});\n","frappe.ui.form.ControlSelect = frappe.ui.form.ControlData.extend({\n\thtml_element: 'select',\n\tmake_input: function() {\n\t\tthis._super();\n\t\tthis.$wrapper.find('.control-input')\n\t\t\t.addClass('flex align-center')\n\t\t\t.append('');\n\t\tthis.set_options();\n\t},\n\tset_formatted_input: function(value) {\n\t\t// refresh options first - (new ones??)\n\t\tif(value==null) value = '';\n\t\tthis.set_options(value);\n\n\t\t// set in the input element\n\t\tthis._super(value);\n\n\t\t// check if the value to be set is selected\n\t\tvar input_value = '';\n\t\tif(this.$input) {\n\t\t\tinput_value = this.$input.val();\n\t\t}\n\n\t\tif(value && input_value && value !== input_value) {\n\t\t\t// trying to set a non-existant value\n\t\t\t// model value must be same as whatever the input is\n\t\t\tthis.set_model_value(input_value);\n\t\t}\n\t},\n\tset_options: function(value) {\n\t\t// reset options, if something new is set\n\t\tvar options = this.df.options || [];\n\n\t\tif(typeof this.df.options===\"string\") {\n\t\t\toptions = this.df.options.split(\"\\n\");\n\t\t}\n\n\t\t// nothing changed\n\t\tif (JSON.stringify(options) === this.last_options) {\n\t\t\treturn;\n\t\t}\n\t\tthis.last_options = JSON.stringify(options);\n\n\t\tif(this.$input) {\n\t\t\tvar selected = this.$input.find(\":selected\").val();\n\t\t\tthis.$input.empty().add_options(options || []);\n\n\t\t\tif(value===undefined && selected) {\n\t\t\t\tthis.$input.val(selected);\n\t\t\t}\n\t\t}\n\t},\n\tget_file_attachment_list: function() {\n\t\tif(!this.frm) return;\n\t\tvar fl = frappe.model.docinfo[this.frm.doctype][this.frm.docname];\n\t\tif(fl && fl.attachments) {\n\t\t\tthis.set_description(\"\");\n\t\t\tvar options = [\"\"];\n\t\t\t$.each(fl.attachments, function(i, f) {\n\t\t\t\toptions.push(f.file_url);\n\t\t\t});\n\t\t\treturn options;\n\t\t} else {\n\t\t\tthis.set_description(__(\"Please attach a file first.\"));\n\t\t\treturn [\"\"];\n\t\t}\n\t}\n});\n\n// add
').prependTo(this.input_area);\n\t\tthis.$input_area = $(this.input_area);\n\t\tthis.$input = this.$input_area.find('input');\n\t\tthis.$link = this.$input_area.find('.link-btn');\n\t\tthis.$link_open = this.$link.find('.btn-open');\n\t\tthis.set_input_attributes();\n\t\tthis.$input.on(\"focus\", function() {\n\t\t\tsetTimeout(function() {\n\t\t\t\tif(me.$input.val() && me.get_options()) {\n\t\t\t\t\tlet doctype = me.get_options();\n\t\t\t\t\tlet name = me.$input.val();\n\t\t\t\t\tme.$link.toggle(true);\n\t\t\t\t\tme.$link_open.attr('href', frappe.utils.get_form_link(doctype, name));\n\t\t\t\t}\n\n\t\t\t\tif(!me.$input.val()) {\n\t\t\t\t\tme.$input.val(\"\").trigger(\"input\");\n\t\t\t\t}\n\t\t\t}, 500);\n\t\t});\n\t\tthis.$input.on(\"blur\", function() {\n\t\t\t// if this disappears immediately, the user's click\n\t\t\t// does not register, hence timeout\n\t\t\tsetTimeout(function() {\n\t\t\t\tme.$link.toggle(false);\n\t\t\t}, 500);\n\t\t});\n\t\tthis.$input.attr('data-target', this.df.options);\n\t\tthis.input = this.$input.get(0);\n\t\tthis.has_input = true;\n\t\tthis.translate_values = true;\n\t\tthis.setup_buttons();\n\t\tthis.setup_awesomeplete();\n\t\tthis.bind_change_event();\n\t},\n\tget_options: function() {\n\t\treturn this.df.options;\n\t},\n\tget_reference_doctype() {\n\t\t// this is used to get the context in which link field is loaded\n\t\tif (this.doctype) return this.doctype;\n\t\telse {\n\t\t\treturn frappe.get_route && frappe.get_route()[0] === 'List' ? frappe.get_route()[1] : null;\n\t\t}\n\t},\n\tsetup_buttons: function() {\n\t\tif(this.only_input && !this.with_link_btn) {\n\t\t\tthis.$input_area.find(\".link-btn\").remove();\n\t\t}\n\t},\n\topen_advanced_search: function() {\n\t\tvar doctype = this.get_options();\n\t\tif(!doctype) return;\n\t\tnew frappe.ui.form.LinkSelector({\n\t\t\tdoctype: doctype,\n\t\t\ttarget: this,\n\t\t\ttxt: this.get_input_value()\n\t\t});\n\t\treturn false;\n\t},\n\tnew_doc: function() {\n\t\tvar doctype = this.get_options();\n\t\tvar me = this;\n\n\t\tif(!doctype) return;\n\n\t\t// set values to fill in the new document\n\t\tif(this.df.get_route_options_for_new_doc) {\n\t\t\tfrappe.route_options = this.df.get_route_options_for_new_doc(this);\n\t\t} else {\n\t\t\tfrappe.route_options = {};\n\t\t}\n\n\t\t// partially entered name field\n\t\tfrappe.route_options.name_field = this.get_value();\n\n\t\t// reference to calling link\n\t\tfrappe._from_link = this;\n\t\tfrappe._from_link_scrollY = $(document).scrollTop();\n\n\t\tfrappe.ui.form.make_quick_entry(doctype, (doc) => {\n\t\t\treturn me.set_value(doc.name);\n\t\t});\n\n\t\treturn false;\n\t},\n\tsetup_awesomeplete: function() {\n\t\tvar me = this;\n\n\t\tthis.$input.cache = {};\n\n\t\tthis.awesomplete = new Awesomplete(me.input, {\n\t\t\tminChars: 0,\n\t\t\tmaxItems: 99,\n\t\t\tautoFirst: true,\n\t\t\tlist: [],\n\t\t\tdata: function (item) {\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item.label || item.value,\n\t\t\t\t\tvalue: item.value\n\t\t\t\t};\n\t\t\t},\n\t\t\tfilter: function() {\n\t\t\t\treturn true;\n\t\t\t},\n\t\t\titem: function (item) {\n\t\t\t\tvar d = this.get_item(item.value);\n\t\t\t\tif(!d.label) {\td.label = d.value; }\n\n\t\t\t\tvar _label = (me.translate_values) ? __(d.label) : d.label;\n\t\t\t\tvar html = d.html || \"\" + _label + \"\";\n\t\t\t\tif(d.description && d.value!==d.description) {\n\t\t\t\t\thtml += '
' + __(d.description) + '';\n\t\t\t\t}\n\t\t\t\treturn $('
  • ')\n\t\t\t\t\t.data('item.autocomplete', d)\n\t\t\t\t\t.prop('aria-selected', 'false')\n\t\t\t\t\t.html('

    ' + html + '

    ')\n\t\t\t\t\t.get(0);\n\t\t\t},\n\t\t\tsort: function() {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\n\t\tthis.$input.on(\"input\", frappe.utils.debounce(function(e) {\n\t\t\tvar doctype = me.get_options();\n\t\t\tif(!doctype) return;\n\t\t\tif (!me.$input.cache[doctype]) {\n\t\t\t\tme.$input.cache[doctype] = {};\n\t\t\t}\n\n\t\t\tvar term = e.target.value;\n\n\t\t\tif (me.$input.cache[doctype][term]!=null) {\n\t\t\t\t// immediately show from cache\n\t\t\t\tme.awesomplete.list = me.$input.cache[doctype][term];\n\t\t\t}\n\t\t\tvar args = {\n\t\t\t\t'txt': term,\n\t\t\t\t'doctype': doctype,\n\t\t\t\t'ignore_user_permissions': me.df.ignore_user_permissions,\n\t\t\t\t'reference_doctype': me.get_reference_doctype() || \"\"\n\t\t\t};\n\n\t\t\tme.set_custom_query(args);\n\n\t\t\tfrappe.call({\n\t\t\t\ttype: \"POST\",\n\t\t\t\tmethod:'frappe.desk.search.search_link',\n\t\t\t\tno_spinner: true,\n\t\t\t\targs: args,\n\t\t\t\tcallback: function(r) {\n\t\t\t\t\tif(!me.$input.is(\":focus\")) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tr.results = me.merge_duplicates(r.results);\n\n\t\t\t\t\t// show filter description in awesomplete\n\t\t\t\t\tif (args.filters) {\n\t\t\t\t\t\tlet filter_string = me.get_filter_description(args.filters);\n\t\t\t\t\t\tif (filter_string) {\n\t\t\t\t\t\t\tr.results.push({\n\t\t\t\t\t\t\t\thtml: `${filter_string}`,\n\t\t\t\t\t\t\t\tvalue: '',\n\t\t\t\t\t\t\t\taction: () => {}\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(!me.df.only_select) {\n\t\t\t\t\t\tif(frappe.model.can_create(doctype)) {\n\t\t\t\t\t\t\t// new item\n\t\t\t\t\t\t\tr.results.push({\n\t\t\t\t\t\t\t\thtml: \"\"\n\t\t\t\t\t\t\t\t\t+ \" \"\n\t\t\t\t\t\t\t\t\t+ __(\"Create a new {0}\", [__(me.get_options())])\n\t\t\t\t\t\t\t\t\t+ \"\",\n\t\t\t\t\t\t\t\tlabel: __(\"Create a new {0}\", [__(me.get_options())]),\n\t\t\t\t\t\t\t\tvalue: \"create_new__link_option\",\n\t\t\t\t\t\t\t\taction: me.new_doc\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// advanced search\n\n\t\t\t\t\t\tif (locals && locals['DocType']) {\n\t\t\t\t\t\t\t// not applicable in web forms\n\t\t\t\t\t\t\tr.results.push({\n\t\t\t\t\t\t\t\thtml: \"\"\n\t\t\t\t\t\t\t\t\t+ \" \"\n\t\t\t\t\t\t\t\t\t+ __(\"Advanced Search\")\n\t\t\t\t\t\t\t\t\t+ \"\",\n\t\t\t\t\t\t\t\tlabel: __(\"Advanced Search\"),\n\t\t\t\t\t\t\t\tvalue: \"advanced_search__link_option\",\n\t\t\t\t\t\t\t\taction: me.open_advanced_search\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tme.$input.cache[doctype][term] = r.results;\n\t\t\t\t\tme.awesomplete.list = me.$input.cache[doctype][term];\n\t\t\t\t}\n\t\t\t});\n\t\t}, 500));\n\n\t\tthis.$input.on(\"blur\", function() {\n\t\t\tif(me.selected) {\n\t\t\t\tme.selected = false;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar value = me.get_input_value();\n\t\t\tif(value!==me.last_value) {\n\t\t\t\tme.parse_validate_and_set_in_model(value);\n\t\t\t}\n\t\t});\n\n\t\tthis.$input.on(\"awesomplete-open\", function() {\n\t\t\tme.$wrapper.css({\"z-index\": 100});\n\t\t\tme.$wrapper.find('ul').css({\"z-index\": 100});\n\t\t\tme.autocomplete_open = true;\n\t\t});\n\n\t\tthis.$input.on(\"awesomplete-close\", function() {\n\t\t\tme.$wrapper.css({\"z-index\": 1});\n\t\t\tme.autocomplete_open = false;\n\t\t});\n\n\t\tthis.$input.on(\"awesomplete-select\", function(e) {\n\t\t\tvar o = e.originalEvent;\n\t\t\tvar item = me.awesomplete.get_item(o.text.value);\n\n\t\t\tme.autocomplete_open = false;\n\n\t\t\t// prevent selection on tab\n\t\t\tvar TABKEY = 9;\n\t\t\tif(e.keyCode === TABKEY) {\n\t\t\t\te.preventDefault();\n\t\t\t\tme.awesomplete.close();\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tif(item.action) {\n\t\t\t\titem.value = \"\";\n\t\t\t\titem.action.apply(me);\n\t\t\t}\n\n\t\t\t// if remember_last_selected is checked in the doctype against the field,\n\t\t\t// then add this value\n\t\t\t// to defaults so you do not need to set it again\n\t\t\t// unless it is changed.\n\t\t\tif(me.df.remember_last_selected_value) {\n\t\t\t\tfrappe.boot.user.last_selected_values[me.df.options] = item.value;\n\t\t\t}\n\n\t\t\tme.parse_validate_and_set_in_model(item.value);\n\t\t});\n\n\t\tthis.$input.on(\"awesomplete-selectcomplete\", function(e) {\n\t\t\tvar o = e.originalEvent;\n\t\t\tif(o.text.value.indexOf(\"__link_option\") !== -1) {\n\t\t\t\tme.$input.val(\"\");\n\t\t\t}\n\t\t});\n\t},\n\n\tmerge_duplicates(results) {\n\t\t// in case of result like this\n\t\t// [{value: 'Manufacturer 1', 'description': 'mobile part 1'},\n\t\t// \t{value: 'Manufacturer 1', 'description': 'mobile part 2'}]\n\t\t// suggestion list has two items with same value (docname) & description\n\t\treturn results.reduce((newArr, currElem) => {\n\t\t\tif (newArr.length === 0) return [currElem];\n\t\t\tlet element_with_same_value = newArr.find(e => e.value === currElem.value);\n\t\t\tif (element_with_same_value) {\n\t\t\t\telement_with_same_value.description += `, ${currElem.description}`;\n\t\t\t\treturn [...newArr];\n\t\t\t}\n\t\t\treturn [...newArr, currElem];\n\t\t}, []);\n\t\t// returns [{value: 'Manufacturer 1', 'description': 'mobile part 1, mobile part 2'}]\n\t},\n\n\tget_filter_description(filters) {\n\t\tlet doctype = this.get_options();\n\t\tlet filter_array = [];\n\t\tlet meta = null;\n\n\t\tfrappe.model.with_doctype(doctype, () => {\n\t\t\tmeta = frappe.get_meta(doctype);\n\t\t});\n\n\t\t// convert object style to array\n\t\tif (!Array.isArray(filters)) {\n\t\t\tfor (let fieldname in filters) {\n\t\t\t\tlet value = filters[fieldname];\n\t\t\t\tif (!Array.isArray(value)) {\n\t\t\t\t\tvalue = ['=', value];\n\t\t\t\t}\n\t\t\t\tfilter_array.push([fieldname, ...value]); // fieldname, operator, value\n\t\t\t}\n\t\t} else {\n\t\t\tfilter_array = filters;\n\t\t}\n\n\t\t// add doctype if missing\n\t\tfilter_array = filter_array.map(filter => {\n\t\t\tif (filter.length === 3) {\n\t\t\t\treturn [doctype, ...filter]; // doctype, fieldname, operator, value\n\t\t\t}\n\t\t\treturn filter;\n\t\t});\n\n\t\tfunction get_filter_description(filter) {\n\t\t\tlet doctype = filter[0];\n\t\t\tlet fieldname = filter[1];\n\t\t\tlet docfield = frappe.meta.get_docfield(doctype, fieldname);\n\t\t\tlet label = docfield ? docfield.label : frappe.model.unscrub(fieldname);\n\n\t\t\tif (filter[3] && Array.isArray(filter[3]) && filter[3].length > 5) {\n\t\t\t\tfilter[3] = filter[3].slice(0, 5);\n\t\t\t\tfilter[3].push('...');\n\t\t\t}\n\n\t\t\tlet value = filter[3] == null || filter[3] === ''\n\t\t\t\t? __('empty')\n\t\t\t\t: String(filter[3]);\n\n\t\t\treturn [__(label).bold(), filter[2], value.bold()].join(' ');\n\t\t}\n\n\t\tlet filter_string = filter_array\n\t\t\t.map(get_filter_description)\n\t\t\t.join(', ');\n\n\t\treturn __('Filters applied for {0}', [filter_string]);\n\t},\n\n\tset_custom_query: function(args) {\n\t\tvar set_nulls = function(obj) {\n\t\t\t$.each(obj, function(key, value) {\n\t\t\t\tif(value!==undefined) {\n\t\t\t\t\tobj[key] = value;\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn obj;\n\t\t};\n\t\tif(this.get_query || this.df.get_query) {\n\t\t\tvar get_query = this.get_query || this.df.get_query;\n\t\t\tif($.isPlainObject(get_query)) {\n\t\t\t\tvar filters = null;\n\t\t\t\tif(get_query.filters) {\n\t\t\t\t\t// passed as {'filters': {'key':'value'}}\n\t\t\t\t\tfilters = get_query.filters;\n\t\t\t\t} else if(get_query.query) {\n\n\t\t\t\t\t// passed as {'query': 'path.to.method'}\n\t\t\t\t\targs.query = get_query;\n\t\t\t\t} else {\n\n\t\t\t\t\t// dict is filters\n\t\t\t\t\tfilters = get_query;\n\t\t\t\t}\n\n\t\t\t\tif (filters) {\n\t\t\t\t\tfilters = set_nulls(filters);\n\n\t\t\t\t\t// extend args for custom functions\n\t\t\t\t\t$.extend(args, filters);\n\n\t\t\t\t\t// add \"filters\" for standard query (search.py)\n\t\t\t\t\targs.filters = filters;\n\t\t\t\t}\n\t\t\t} else if(typeof(get_query)===\"string\") {\n\t\t\t\targs.query = get_query;\n\t\t\t} else {\n\t\t\t\t// get_query by function\n\t\t\t\tvar q = (get_query)(this.frm && this.frm.doc || this.doc, this.doctype, this.docname);\n\n\t\t\t\tif (typeof(q)===\"string\") {\n\t\t\t\t\t// returns a string\n\t\t\t\t\targs.query = q;\n\t\t\t\t} else if($.isPlainObject(q)) {\n\t\t\t\t\t// returns a plain object with filters\n\t\t\t\t\tif(q.filters) {\n\t\t\t\t\t\tset_nulls(q.filters);\n\t\t\t\t\t}\n\n\t\t\t\t\t// turn off value translation\n\t\t\t\t\tif(q.translate_values !== undefined) {\n\t\t\t\t\t\tthis.translate_values = q.translate_values;\n\t\t\t\t\t}\n\n\t\t\t\t\t// extend args for custom functions\n\t\t\t\t\t$.extend(args, q);\n\n\t\t\t\t\t// add \"filters\" for standard query (search.py)\n\t\t\t\t\targs.filters = q.filters;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this.df.filters) {\n\t\t\tset_nulls(this.df.filters);\n\t\t\tif(!args.filters) args.filters = {};\n\t\t\t$.extend(args.filters, this.df.filters);\n\t\t}\n\t},\n\tvalidate: function(value) {\n\t\t// validate the value just entered\n\t\tif(this.df.options==\"[Select]\" || this.df.ignore_link_validation) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn this.validate_link_and_fetch(this.df, this.get_options(),\n\t\t\tthis.docname, value);\n\t},\n\tvalidate_link_and_fetch: function(df, doctype, docname, value) {\n\t\tvar me = this;\n\n\t\tif(value) {\n\t\t\treturn new Promise((resolve) => {\n\t\t\t\tvar fetch = '';\n\n\t\t\t\tif(this.frm && this.frm.fetch_dict[df.fieldname]) {\n\t\t\t\t\tfetch = this.frm.fetch_dict[df.fieldname].columns.join(', ');\n\t\t\t\t}\n\n\t\t\t\treturn frappe.call({\n\t\t\t\t\tmethod:'frappe.desk.form.utils.validate_link',\n\t\t\t\t\ttype: \"GET\",\n\t\t\t\t\targs: {\n\t\t\t\t\t\t'value': value,\n\t\t\t\t\t\t'options': doctype,\n\t\t\t\t\t\t'fetch': fetch\n\t\t\t\t\t},\n\t\t\t\t\tno_spinner: true,\n\t\t\t\t\tcallback: function(r) {\n\t\t\t\t\t\tif(r.message=='Ok') {\n\t\t\t\t\t\t\tif(r.fetch_values && docname) {\n\t\t\t\t\t\t\t\tme.set_fetch_values(df, docname, r.fetch_values);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tresolve(r.valid_value);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresolve(\"\");\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t},\n\tset_fetch_values: function(df, docname, fetch_values) {\n\t\tvar fl = this.frm.fetch_dict[df.fieldname].fields;\n\t\tfor(var i=0; i < fl.length; i++) {\n\t\t\tfrappe.model.set_value(df.parent, docname, fl[i], fetch_values[i], df.fieldtype);\n\t\t}\n\t}\n});\n\nif(Awesomplete) {\n\tAwesomplete.prototype.get_item = function(value) {\n\t\treturn this._list.find(function(item) {\n\t\t\treturn item.value === value;\n\t\t});\n\t};\n}\n\n","frappe.ui.form.ControlDynamicLink = frappe.ui.form.ControlLink.extend({\n\tget_options: function() {\n\t\tlet options = '';\n\t\tif(this.df.get_options) {\n\t\t\toptions = this.df.get_options();\n\t\t}\n\t\telse if (this.docname==null && cur_dialog) {\n\t\t\t//for dialog box\n\t\t\toptions = cur_dialog.get_value(this.df.options);\n\t\t}\n\t\telse if (!cur_frm) {\n\t\t\tconst selector = `input[data-fieldname=\"${this.df.options}\"]`;\n\t\t\tlet input = null;\n\t\t\tif (cur_list) {\n\t\t\t\t// for list page\n\t\t\t\tinput = cur_list.filter_area.standard_filters_wrapper.find(selector);\n\t\t\t}\n\t\t\tif (cur_page) {\n\t\t\t\tinput = $(cur_page.page).find(selector);\n\t\t\t}\n\t\t\tif (input) {\n\t\t\t\toptions = input.val();\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\toptions = frappe.model.get_value(this.df.parent, this.docname, this.df.options);\n\t\t}\n\n\t\tif (frappe.model.is_single(options)) {\n\t\t\tfrappe.throw(__(`${options.bold()} is not a valid DocType for Dynamic Link`));\n\t\t}\n\n\t\treturn options;\n\t},\n});\n","frappe.ui.form.ControlText = frappe.ui.form.ControlData.extend({\n\thtml_element: \"textarea\",\n\thorizontal: false,\n\tmake_wrapper: function() {\n\t\tthis._super();\n\t\tthis.$wrapper.find(\".like-disabled-input\").addClass(\"for-description\");\n\t},\n\tmake_input: function() {\n\t\tthis._super();\n\t\tthis.$input.css({'height': '300px'});\n\t}\n});\n\nfrappe.ui.form.ControlLongText = frappe.ui.form.ControlText;\nfrappe.ui.form.ControlSmallText = frappe.ui.form.ControlText.extend({\n\tmake_input: function() {\n\t\tthis._super();\n\t\tthis.$input.css({'height': '150px'});\n\t}\n});\n","frappe.ui.form.ControlCode = frappe.ui.form.ControlText.extend({\n\tmake_input() {\n\t\tif (this.editor) return;\n\t\tthis.load_lib().then(() => this.make_ace_editor());\n\t},\n\n\tmake_ace_editor() {\n\t\tif (this.editor) return;\n\t\tthis.ace_editor_target = $('
    ')\n\t\t\t.appendTo(this.input_area);\n\n\t\t// styling\n\t\tthis.ace_editor_target.addClass('border rounded');\n\t\tthis.ace_editor_target.css('height', 300);\n\n\t\t// initialize\n\t\tconst ace = window.ace;\n\t\tthis.editor = ace.edit(this.ace_editor_target.get(0));\n\t\tthis.editor.setTheme('ace/theme/tomorrow');\n\t\tthis.set_language();\n\n\t\t// events\n\t\tthis.editor.session.on('change', frappe.utils.debounce(() => {\n\t\t\tconst input_value = this.get_input_value();\n\t\t\tthis.parse_validate_and_set_in_model(input_value);\n\t\t}, 300));\n\t},\n\n\tset_language() {\n\t\tconst language_map = {\n\t\t\t'Javascript': 'ace/mode/javascript',\n\t\t\t'JS': 'ace/mode/javascript',\n\t\t\t'HTML': 'ace/mode/html',\n\t\t\t'CSS': 'ace/mode/css',\n\t\t\t'Markdown': 'ace/mode/markdown',\n\t\t\t'SCSS': 'ace/mode/scss',\n\t\t\t'JSON': 'ace/mode/json'\n\t\t};\n\t\tconst language = this.df.options;\n\n\t\tconst valid_languages = Object.keys(language_map);\n\t\tif (!valid_languages.includes(language)) {\n\t\t\t// eslint-disable-next-line\n\t\t\tconsole.warn(`Invalid language option provided for field \"${this.df.label}\". Valid options are ${valid_languages.join(', ')}.`);\n\t\t}\n\n\t\tconst ace_language_mode = language_map[language] || '';\n\t\tthis.editor.session.setMode(ace_language_mode);\n\t},\n\n\tparse(value) {\n\t\tif (value == null) {\n\t\t\tvalue = \"\";\n\t\t}\n\t\treturn value;\n\t},\n\n\tset_formatted_input(value) {\n\t\treturn this.load_lib().then(() => {\n\t\t\tif (!this.editor) return;\n\t\t\tif (!value) value = '';\n\t\t\tif (value === this.get_input_value()) return;\n\t\t\tthis.editor.session.setValue(value);\n\t\t});\n\t},\n\n\tget_input_value() {\n\t\treturn this.editor ? this.editor.session.getValue() : '';\n\t},\n\n\tload_lib() {\n\t\tif (this.library_loaded) return this.library_loaded;\n\n\t\tif (frappe.boot.developer_mode) {\n\t\t\tthis.root_lib_path = '/assets/frappe/node_modules/ace-builds/src-noconflict/';\n\t\t} else {\n\t\t\tthis.root_lib_path = '/assets/frappe/node_modules/ace-builds/src-min-noconflict/';\n\t\t}\n\n\t\tthis.library_loaded = new Promise(resolve => {\n\t\t\tfrappe.require(this.root_lib_path + 'ace.js', () => {\n\t\t\t\twindow.ace.config.set('basePath', this.root_lib_path);\n\t\t\t\tresolve();\n\t\t\t});\n\t\t});\n\n\t\treturn this.library_loaded;\n\t}\n});\n","/*!\n * Quill Editor v2.0.0-dev.2\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(window, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"./assets/icons/align-center.svg\":\n/*!***************************************!*\\\n !*** ./assets/icons/align-center.svg ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/align-center.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/align-justify.svg\":\n/*!****************************************!*\\\n !*** ./assets/icons/align-justify.svg ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/align-justify.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/align-left.svg\":\n/*!*************************************!*\\\n !*** ./assets/icons/align-left.svg ***!\n \\*************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/align-left.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/align-right.svg\":\n/*!**************************************!*\\\n !*** ./assets/icons/align-right.svg ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/align-right.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/background.svg\":\n/*!*************************************!*\\\n !*** ./assets/icons/background.svg ***!\n \\*************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/background.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/blockquote.svg\":\n/*!*************************************!*\\\n !*** ./assets/icons/blockquote.svg ***!\n \\*************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/blockquote.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/bold.svg\":\n/*!*******************************!*\\\n !*** ./assets/icons/bold.svg ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/bold.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/clean.svg\":\n/*!********************************!*\\\n !*** ./assets/icons/clean.svg ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/clean.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/code.svg\":\n/*!*******************************!*\\\n !*** ./assets/icons/code.svg ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/code.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/color.svg\":\n/*!********************************!*\\\n !*** ./assets/icons/color.svg ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/color.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/direction-ltr.svg\":\n/*!****************************************!*\\\n !*** ./assets/icons/direction-ltr.svg ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/direction-ltr.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/direction-rtl.svg\":\n/*!****************************************!*\\\n !*** ./assets/icons/direction-rtl.svg ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/direction-rtl.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/dropdown.svg\":\n/*!***********************************!*\\\n !*** ./assets/icons/dropdown.svg ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/dropdown.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/formula.svg\":\n/*!**********************************!*\\\n !*** ./assets/icons/formula.svg ***!\n \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/formula.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/header-2.svg\":\n/*!***********************************!*\\\n !*** ./assets/icons/header-2.svg ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/header-2.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/header.svg\":\n/*!*********************************!*\\\n !*** ./assets/icons/header.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/header.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/image.svg\":\n/*!********************************!*\\\n !*** ./assets/icons/image.svg ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/image.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/indent.svg\":\n/*!*********************************!*\\\n !*** ./assets/icons/indent.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/indent.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/italic.svg\":\n/*!*********************************!*\\\n !*** ./assets/icons/italic.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/italic.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/link.svg\":\n/*!*******************************!*\\\n !*** ./assets/icons/link.svg ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/link.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/list-bullet.svg\":\n/*!**************************************!*\\\n !*** ./assets/icons/list-bullet.svg ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/list-bullet.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/list-check.svg\":\n/*!*************************************!*\\\n !*** ./assets/icons/list-check.svg ***!\n \\*************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/list-check.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/list-ordered.svg\":\n/*!***************************************!*\\\n !*** ./assets/icons/list-ordered.svg ***!\n \\***************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/list-ordered.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/outdent.svg\":\n/*!**********************************!*\\\n !*** ./assets/icons/outdent.svg ***!\n \\**********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/outdent.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/strike.svg\":\n/*!*********************************!*\\\n !*** ./assets/icons/strike.svg ***!\n \\*********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/strike.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/subscript.svg\":\n/*!************************************!*\\\n !*** ./assets/icons/subscript.svg ***!\n \\************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/subscript.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/superscript.svg\":\n/*!**************************************!*\\\n !*** ./assets/icons/superscript.svg ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/superscript.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/table.svg\":\n/*!********************************!*\\\n !*** ./assets/icons/table.svg ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/table.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/underline.svg\":\n/*!************************************!*\\\n !*** ./assets/icons/underline.svg ***!\n \\************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/underline.svg?\");\n\n/***/ }),\n\n/***/ \"./assets/icons/video.svg\":\n/*!********************************!*\\\n !*** ./assets/icons/video.svg ***!\n \\********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"module.exports = \\\" \\\";\\n\\n//# sourceURL=webpack://Quill/./assets/icons/video.svg?\");\n\n/***/ }),\n\n/***/ \"./blots/block.js\":\n/*!************************!*\\\n !*** ./blots/block.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.BlockEmbed = exports.bubbleFormats = exports.blockDelta = undefined;\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _break = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n\\nvar _break2 = _interopRequireDefault(_break);\\n\\nvar _inline = __webpack_require__(/*! ./inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nvar _text = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst NEWLINE_LENGTH = 1;\\n\\nclass Block extends _parchment.BlockBlot {\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n this.cache = {};\\n }\\n\\n delta() {\\n if (this.cache.delta == null) {\\n this.cache.delta = blockDelta(this);\\n }\\n return this.cache.delta;\\n }\\n\\n deleteAt(index, length) {\\n super.deleteAt(index, length);\\n this.cache = {};\\n }\\n\\n formatAt(index, length, name, value) {\\n if (length <= 0) return;\\n if (this.scroll.query(name, _parchment.Scope.BLOCK)) {\\n if (index + length === this.length()) {\\n this.format(name, value);\\n }\\n } else {\\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\\n }\\n this.cache = {};\\n }\\n\\n insertAt(index, value, def) {\\n if (def != null) {\\n super.insertAt(index, value, def);\\n return;\\n }\\n if (value.length === 0) return;\\n const lines = value.split('\\\\n');\\n const text = lines.shift();\\n if (text.length > 0) {\\n if (index < this.length() - 1 || this.children.tail == null) {\\n super.insertAt(Math.min(index, this.length() - 1), text);\\n } else {\\n this.children.tail.insertAt(this.children.tail.length(), text);\\n }\\n this.cache = {};\\n }\\n let block = this;\\n lines.reduce((lineIndex, line) => {\\n block = block.split(lineIndex, true);\\n block.insertAt(0, line);\\n return line.length;\\n }, index + text.length);\\n }\\n\\n insertBefore(blot, ref) {\\n const head = this.children.head;\\n\\n super.insertBefore(blot, ref);\\n if (head instanceof _break2.default) {\\n head.remove();\\n }\\n this.cache = {};\\n }\\n\\n length() {\\n if (this.cache.length == null) {\\n this.cache.length = super.length() + NEWLINE_LENGTH;\\n }\\n return this.cache.length;\\n }\\n\\n moveChildren(target, ref) {\\n super.moveChildren(target, ref);\\n this.cache = {};\\n }\\n\\n optimize(context) {\\n super.optimize(context);\\n this.cache = {};\\n }\\n\\n path(index) {\\n return super.path(index, true);\\n }\\n\\n removeChild(child) {\\n super.removeChild(child);\\n this.cache = {};\\n }\\n\\n split(index, force = false) {\\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\\n const clone = this.clone();\\n if (index === 0) {\\n this.parent.insertBefore(clone, this);\\n return this;\\n }\\n this.parent.insertBefore(clone, this.next);\\n return clone;\\n }\\n const next = super.split(index, force);\\n this.cache = {};\\n return next;\\n }\\n}\\nBlock.blotName = 'block';\\nBlock.tagName = 'P';\\nBlock.defaultChild = _break2.default;\\nBlock.allowedChildren = [_break2.default, _inline2.default, _parchment.EmbedBlot, _text2.default];\\n\\nclass BlockEmbed extends _parchment.EmbedBlot {\\n attach() {\\n super.attach();\\n this.attributes = new _parchment.AttributorStore(this.domNode);\\n }\\n\\n delta() {\\n return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\\n }\\n\\n format(name, value) {\\n const attribute = this.scroll.query(name, _parchment.Scope.BLOCK_ATTRIBUTE);\\n if (attribute != null) {\\n this.attributes.attribute(attribute, value);\\n }\\n }\\n\\n formatAt(index, length, name, value) {\\n this.format(name, value);\\n }\\n\\n insertAt(index, value, def) {\\n if (typeof value === 'string' && value.endsWith('\\\\n')) {\\n const block = this.scroll.create(Block.blotName);\\n this.parent.insertBefore(block, index === 0 ? this : this.next);\\n block.insertAt(0, value.slice(0, -1));\\n } else {\\n super.insertAt(index, value, def);\\n }\\n }\\n}\\nBlockEmbed.scope = _parchment.Scope.BLOCK_BLOT;\\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\\n\\nfunction blockDelta(blot) {\\n return blot.descendants(_parchment.LeafBlot).reduce((delta, leaf) => {\\n if (leaf.length() === 0) {\\n return delta;\\n }\\n return delta.insert(leaf.value(), bubbleFormats(leaf));\\n }, new _quillDelta2.default()).insert('\\\\n', bubbleFormats(blot));\\n}\\n\\nfunction bubbleFormats(blot, formats = {}) {\\n if (blot == null) return formats;\\n if (typeof blot.formats === 'function') {\\n formats = (0, _extend2.default)(formats, blot.formats());\\n }\\n if (blot.parent == null || blot.parent.blotName === 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\\n return formats;\\n }\\n return bubbleFormats(blot.parent, formats);\\n}\\n\\nexports.blockDelta = blockDelta;\\nexports.bubbleFormats = bubbleFormats;\\nexports.BlockEmbed = BlockEmbed;\\nexports.default = Block;\\n\\n//# sourceURL=webpack://Quill/./blots/block.js?\");\n\n/***/ }),\n\n/***/ \"./blots/break.js\":\n/*!************************!*\\\n !*** ./blots/break.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nclass Break extends _parchment.EmbedBlot {\\n static value() {\\n return undefined;\\n }\\n\\n optimize() {\\n if (this.prev || this.next) {\\n this.remove();\\n }\\n }\\n\\n length() {\\n return 0;\\n }\\n\\n value() {\\n return '';\\n }\\n}\\nBreak.blotName = 'break';\\nBreak.tagName = 'BR';\\n\\nexports.default = Break;\\n\\n//# sourceURL=webpack://Quill/./blots/break.js?\");\n\n/***/ }),\n\n/***/ \"./blots/container.js\":\n/*!****************************!*\\\n !*** ./blots/container.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nclass Container extends _parchment.ContainerBlot {}\\n\\nexports.default = Container;\\n\\n//# sourceURL=webpack://Quill/./blots/container.js?\");\n\n/***/ }),\n\n/***/ \"./blots/cursor.js\":\n/*!*************************!*\\\n !*** ./blots/cursor.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _text = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Cursor extends _parchment.EmbedBlot {\\n static value() {\\n return undefined;\\n }\\n\\n constructor(scroll, domNode, selection) {\\n super(scroll, domNode);\\n this.selection = selection;\\n this.textNode = document.createTextNode(Cursor.CONTENTS);\\n this.domNode.appendChild(this.textNode);\\n this.savedLength = 0;\\n }\\n\\n detach() {\\n // super.detach() will also clear domNode.__blot\\n if (this.parent != null) this.parent.removeChild(this);\\n }\\n\\n format(name, value) {\\n if (this.savedLength !== 0) {\\n super.format(name, value);\\n return;\\n }\\n let target = this;\\n let index = 0;\\n while (target != null && target.statics.scope !== _parchment.Scope.BLOCK_BLOT) {\\n index += target.offset(target.parent);\\n target = target.parent;\\n }\\n if (target != null) {\\n this.savedLength = Cursor.CONTENTS.length;\\n target.optimize();\\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\\n this.savedLength = 0;\\n }\\n }\\n\\n index(node, offset) {\\n if (node === this.textNode) return 0;\\n return super.index(node, offset);\\n }\\n\\n length() {\\n return this.savedLength;\\n }\\n\\n position() {\\n return [this.textNode, this.textNode.data.length];\\n }\\n\\n remove() {\\n super.remove();\\n this.parent = null;\\n }\\n\\n restore() {\\n if (this.selection.composing || this.parent == null) return null;\\n const range = this.selection.getNativeRange();\\n let restoreText;\\n let start;\\n let end;\\n if (range != null && range.start.node === this.textNode && range.end.node === this.textNode) {\\n var _ref = [this.textNode, range.start.offset, range.end.offset];\\n restoreText = _ref[0];\\n start = _ref[1];\\n end = _ref[2];\\n }\\n // Link format will insert text outside of anchor tag\\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\\n }\\n if (this.textNode.data !== Cursor.CONTENTS) {\\n const text = this.textNode.data.split(Cursor.CONTENTS).join('');\\n if (this.next instanceof _text2.default) {\\n restoreText = this.next.domNode;\\n this.next.insertAt(0, text);\\n this.textNode.data = Cursor.CONTENTS;\\n } else {\\n this.textNode.data = text;\\n this.parent.insertBefore(this.scroll.create(this.textNode), this);\\n this.textNode = document.createTextNode(Cursor.CONTENTS);\\n this.domNode.appendChild(this.textNode);\\n }\\n }\\n this.remove();\\n if (start != null) {\\n var _map = [start, end].map(offset => {\\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\\n });\\n\\n var _map2 = _slicedToArray(_map, 2);\\n\\n start = _map2[0];\\n end = _map2[1];\\n\\n return {\\n startNode: restoreText,\\n startOffset: start,\\n endNode: restoreText,\\n endOffset: end\\n };\\n }\\n return null;\\n }\\n\\n update(mutations, context) {\\n if (mutations.some(mutation => {\\n return mutation.type === 'characterData' && mutation.target === this.textNode;\\n })) {\\n const range = this.restore();\\n if (range) context.range = range;\\n }\\n }\\n\\n value() {\\n return '';\\n }\\n}\\nCursor.blotName = 'cursor';\\nCursor.className = 'ql-cursor';\\nCursor.tagName = 'span';\\nCursor.CONTENTS = '\\\\uFEFF'; // Zero width no break space\\n\\nexports.default = Cursor;\\n\\n//# sourceURL=webpack://Quill/./blots/cursor.js?\");\n\n/***/ }),\n\n/***/ \"./blots/embed.js\":\n/*!************************!*\\\n !*** ./blots/embed.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _text = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst GUARD_TEXT = '\\\\uFEFF';\\n\\nclass Embed extends _parchment.EmbedBlot {\\n constructor(scroll, node) {\\n super(scroll, node);\\n this.contentNode = document.createElement('span');\\n this.contentNode.setAttribute('contenteditable', false);\\n Array.from(this.domNode.childNodes).forEach(childNode => {\\n this.contentNode.appendChild(childNode);\\n });\\n this.leftGuard = document.createTextNode(GUARD_TEXT);\\n this.rightGuard = document.createTextNode(GUARD_TEXT);\\n this.domNode.appendChild(this.leftGuard);\\n this.domNode.appendChild(this.contentNode);\\n this.domNode.appendChild(this.rightGuard);\\n }\\n\\n index(node, offset) {\\n if (node === this.leftGuard) return 0;\\n if (node === this.rightGuard) return 1;\\n return super.index(node, offset);\\n }\\n\\n restore(node) {\\n let range;\\n let textNode;\\n const text = node.data.split(GUARD_TEXT).join('');\\n if (node === this.leftGuard) {\\n if (this.prev instanceof _text2.default) {\\n const prevLength = this.prev.length();\\n this.prev.insertAt(prevLength, text);\\n range = {\\n startNode: this.prev.domNode,\\n startOffset: prevLength + text.length\\n };\\n } else {\\n textNode = document.createTextNode(text);\\n this.parent.insertBefore(this.scroll.create(textNode), this);\\n range = {\\n startNode: textNode,\\n startOffset: text.length\\n };\\n }\\n } else if (node === this.rightGuard) {\\n if (this.next instanceof _text2.default) {\\n this.next.insertAt(0, text);\\n range = {\\n startNode: this.next.domNode,\\n startOffset: text.length\\n };\\n } else {\\n textNode = document.createTextNode(text);\\n this.parent.insertBefore(this.scroll.create(textNode), this.next);\\n range = {\\n startNode: textNode,\\n startOffset: text.length\\n };\\n }\\n }\\n node.data = GUARD_TEXT;\\n return range;\\n }\\n\\n update(mutations, context) {\\n mutations.forEach(mutation => {\\n if (mutation.type === 'characterData' && (mutation.target === this.leftGuard || mutation.target === this.rightGuard)) {\\n const range = this.restore(mutation.target);\\n if (range) context.range = range;\\n }\\n });\\n }\\n}\\n\\nexports.default = Embed;\\n\\n//# sourceURL=webpack://Quill/./blots/embed.js?\");\n\n/***/ }),\n\n/***/ \"./blots/inline.js\":\n/*!*************************!*\\\n !*** ./blots/inline.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _break = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n\\nvar _break2 = _interopRequireDefault(_break);\\n\\nvar _text = __webpack_require__(/*! ./text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Inline extends _parchment.InlineBlot {\\n static compare(self, other) {\\n const selfIndex = Inline.order.indexOf(self);\\n const otherIndex = Inline.order.indexOf(other);\\n if (selfIndex >= 0 || otherIndex >= 0) {\\n return selfIndex - otherIndex;\\n } else if (self === other) {\\n return 0;\\n } else if (self < other) {\\n return -1;\\n }\\n return 1;\\n }\\n\\n formatAt(index, length, name, value) {\\n if (Inline.compare(this.statics.blotName, name) < 0 && this.scroll.query(name, _parchment.Scope.BLOT)) {\\n const blot = this.isolate(index, length);\\n if (value) {\\n blot.wrap(name, value);\\n }\\n } else {\\n super.formatAt(index, length, name, value);\\n }\\n }\\n\\n optimize(context) {\\n super.optimize(context);\\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\\n const parent = this.parent.isolate(this.offset(), this.length());\\n this.moveChildren(parent);\\n parent.wrap(this);\\n }\\n }\\n}\\nInline.allowedChildren = [Inline, _break2.default, _parchment.EmbedBlot, _text2.default];\\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\\nInline.order = ['cursor', 'inline', // Must be lower\\n'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code'];\\n\\nexports.default = Inline;\\n\\n//# sourceURL=webpack://Quill/./blots/inline.js?\");\n\n/***/ }),\n\n/***/ \"./blots/scroll.js\":\n/*!*************************!*\\\n !*** ./blots/scroll.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _emitter = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n\\nvar _emitter2 = _interopRequireDefault(_emitter);\\n\\nvar _block = __webpack_require__(/*! ./block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nvar _break = __webpack_require__(/*! ./break */ \\\"./blots/break.js\\\");\\n\\nvar _break2 = _interopRequireDefault(_break);\\n\\nvar _container = __webpack_require__(/*! ./container */ \\\"./blots/container.js\\\");\\n\\nvar _container2 = _interopRequireDefault(_container);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nfunction isLine(blot) {\\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\\n}\\n\\nclass Scroll extends _parchment.ScrollBlot {\\n constructor(registry, domNode, { emitter }) {\\n super(registry, domNode);\\n this.emitter = emitter;\\n // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\\n this.domNode.addEventListener('DOMNodeInserted', () => {});\\n this.optimize();\\n this.enable();\\n }\\n\\n batchStart() {\\n this.batch = true;\\n }\\n\\n batchEnd() {\\n this.batch = false;\\n this.optimize();\\n }\\n\\n emitMount(blot) {\\n this.emitter.emit(_emitter2.default.events.SCROLL_BLOT_MOUNT, blot);\\n }\\n\\n emitUnmount(blot) {\\n this.emitter.emit(_emitter2.default.events.SCROLL_BLOT_UNMOUNT, blot);\\n }\\n\\n deleteAt(index, length) {\\n var _line = this.line(index),\\n _line2 = _slicedToArray(_line, 2);\\n\\n const first = _line2[0],\\n offset = _line2[1];\\n\\n var _line3 = this.line(index + length),\\n _line4 = _slicedToArray(_line3, 1);\\n\\n const last = _line4[0];\\n\\n super.deleteAt(index, length);\\n if (last != null && first !== last && offset > 0) {\\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\\n this.optimize();\\n return;\\n }\\n const ref = last.children.head instanceof _break2.default ? null : last.children.head;\\n first.moveChildren(last, ref);\\n first.remove();\\n }\\n this.optimize();\\n }\\n\\n enable(enabled = true) {\\n this.domNode.setAttribute('contenteditable', enabled);\\n }\\n\\n formatAt(index, length, format, value) {\\n super.formatAt(index, length, format, value);\\n this.optimize();\\n }\\n\\n insertAt(index, value, def) {\\n if (index >= this.length()) {\\n if (def == null || this.scroll.query(value, _parchment.Scope.BLOCK) == null) {\\n const blot = this.scroll.create(this.statics.defaultChild.blotName);\\n this.appendChild(blot);\\n if (def == null && value.endsWith('\\\\n')) {\\n blot.insertAt(0, value.slice(0, -1), def);\\n } else {\\n blot.insertAt(0, value, def);\\n }\\n } else {\\n const embed = this.scroll.create(value, def);\\n this.appendChild(embed);\\n }\\n } else {\\n super.insertAt(index, value, def);\\n }\\n this.optimize();\\n }\\n\\n insertBefore(blot, ref) {\\n if (blot.statics.scope === _parchment.Scope.INLINE_BLOT) {\\n const wrapper = this.scroll.create(this.statics.defaultChild.blotName);\\n wrapper.appendChild(blot);\\n super.insertBefore(wrapper, ref);\\n } else {\\n super.insertBefore(blot, ref);\\n }\\n }\\n\\n leaf(index) {\\n return this.path(index).pop() || [null, -1];\\n }\\n\\n line(index) {\\n if (index === this.length()) {\\n return this.line(index - 1);\\n }\\n return this.descendant(isLine, index);\\n }\\n\\n lines(index = 0, length = Number.MAX_VALUE) {\\n const getLines = (blot, blotIndex, blotLength) => {\\n let lines = [];\\n let lengthLeft = blotLength;\\n blot.children.forEachAt(blotIndex, blotLength, (child, childIndex, childLength) => {\\n if (isLine(child)) {\\n lines.push(child);\\n } else if (child instanceof _parchment.ContainerBlot) {\\n lines = lines.concat(getLines(child, childIndex, lengthLeft));\\n }\\n lengthLeft -= childLength;\\n });\\n return lines;\\n };\\n return getLines(this, index, length);\\n }\\n\\n optimize(mutations = [], context = {}) {\\n if (this.batch === true) return;\\n super.optimize(mutations, context);\\n if (mutations.length > 0) {\\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations, context);\\n }\\n }\\n\\n path(index) {\\n return super.path(index).slice(1); // Exclude self\\n }\\n\\n remove() {\\n // Never remove self\\n }\\n\\n update(mutations) {\\n if (this.batch === true) return;\\n let source = _emitter2.default.sources.USER;\\n if (typeof mutations === 'string') {\\n source = mutations;\\n }\\n if (!Array.isArray(mutations)) {\\n mutations = this.observer.takeRecords();\\n }\\n if (mutations.length > 0) {\\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\\n }\\n super.update(mutations.concat([])); // pass copy\\n if (mutations.length > 0) {\\n this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\\n }\\n }\\n}\\nScroll.blotName = 'scroll';\\nScroll.className = 'ql-editor';\\nScroll.tagName = 'DIV';\\nScroll.defaultChild = _block2.default;\\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\\n\\nexports.default = Scroll;\\n\\n//# sourceURL=webpack://Quill/./blots/scroll.js?\");\n\n/***/ }),\n\n/***/ \"./blots/text.js\":\n/*!***********************!*\\\n !*** ./blots/text.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nclass Text extends _parchment.TextBlot {}\\n\\nexports.default = Text;\\n\\n//# sourceURL=webpack://Quill/./blots/text.js?\");\n\n/***/ }),\n\n/***/ \"./core.js\":\n/*!*****************!*\\\n !*** ./core.js ***!\n \\*****************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _quill = __webpack_require__(/*! ./core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nvar _block = __webpack_require__(/*! ./blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nvar _break = __webpack_require__(/*! ./blots/break */ \\\"./blots/break.js\\\");\\n\\nvar _break2 = _interopRequireDefault(_break);\\n\\nvar _container = __webpack_require__(/*! ./blots/container */ \\\"./blots/container.js\\\");\\n\\nvar _container2 = _interopRequireDefault(_container);\\n\\nvar _cursor = __webpack_require__(/*! ./blots/cursor */ \\\"./blots/cursor.js\\\");\\n\\nvar _cursor2 = _interopRequireDefault(_cursor);\\n\\nvar _embed = __webpack_require__(/*! ./blots/embed */ \\\"./blots/embed.js\\\");\\n\\nvar _embed2 = _interopRequireDefault(_embed);\\n\\nvar _inline = __webpack_require__(/*! ./blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nvar _scroll = __webpack_require__(/*! ./blots/scroll */ \\\"./blots/scroll.js\\\");\\n\\nvar _scroll2 = _interopRequireDefault(_scroll);\\n\\nvar _text = __webpack_require__(/*! ./blots/text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nvar _clipboard = __webpack_require__(/*! ./modules/clipboard */ \\\"./modules/clipboard.js\\\");\\n\\nvar _clipboard2 = _interopRequireDefault(_clipboard);\\n\\nvar _history = __webpack_require__(/*! ./modules/history */ \\\"./modules/history.js\\\");\\n\\nvar _history2 = _interopRequireDefault(_history);\\n\\nvar _keyboard = __webpack_require__(/*! ./modules/keyboard */ \\\"./modules/keyboard.js\\\");\\n\\nvar _keyboard2 = _interopRequireDefault(_keyboard);\\n\\nvar _uploader = __webpack_require__(/*! ./modules/uploader */ \\\"./modules/uploader.js\\\");\\n\\nvar _uploader2 = _interopRequireDefault(_uploader);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\n_quill2.default.register({\\n 'blots/block': _block2.default,\\n 'blots/block/embed': _block.BlockEmbed,\\n 'blots/break': _break2.default,\\n 'blots/container': _container2.default,\\n 'blots/cursor': _cursor2.default,\\n 'blots/embed': _embed2.default,\\n 'blots/inline': _inline2.default,\\n 'blots/scroll': _scroll2.default,\\n 'blots/text': _text2.default,\\n\\n 'modules/clipboard': _clipboard2.default,\\n 'modules/history': _history2.default,\\n 'modules/keyboard': _keyboard2.default,\\n 'modules/uploader': _uploader2.default\\n});\\n\\nexports.default = _quill2.default;\\n\\n//# sourceURL=webpack://Quill/./core.js?\");\n\n/***/ }),\n\n/***/ \"./core/editor.js\":\n/*!************************!*\\\n !*** ./core/editor.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _clone = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n\\nvar _clone2 = _interopRequireDefault(_clone);\\n\\nvar _deepEqual = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n\\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _op = __webpack_require__(/*! quill-delta/lib/op */ \\\"./node_modules/quill-delta/lib/op.js\\\");\\n\\nvar _op2 = _interopRequireDefault(_op);\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _cursor = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n\\nvar _cursor2 = _interopRequireDefault(_cursor);\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nvar _break = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n\\nvar _break2 = _interopRequireDefault(_break);\\n\\nvar _text = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nfunction _toArray(arr) { return Array.isArray(arr) ? arr : Array.from(arr); }\\n\\nconst ASCII = /^[ -~]*$/;\\n\\nclass Editor {\\n constructor(scroll) {\\n this.scroll = scroll;\\n this.delta = this.getDelta();\\n }\\n\\n applyDelta(delta) {\\n let consumeNextNewline = false;\\n this.scroll.update();\\n let scrollLength = this.scroll.length();\\n this.scroll.batchStart();\\n const normalizedDelta = normalizeDelta(delta);\\n normalizedDelta.reduce((index, op) => {\\n const length = op.retain || op.delete || op.insert.length || 1;\\n let attributes = op.attributes || {};\\n if (op.insert != null) {\\n if (typeof op.insert === 'string') {\\n let text = op.insert;\\n if (text.endsWith('\\\\n') && consumeNextNewline) {\\n consumeNextNewline = false;\\n text = text.slice(0, -1);\\n }\\n if (index >= scrollLength && !text.endsWith('\\\\n')) {\\n consumeNextNewline = true;\\n }\\n this.scroll.insertAt(index, text);\\n\\n var _scroll$line = this.scroll.line(index),\\n _scroll$line2 = _slicedToArray(_scroll$line, 2);\\n\\n const line = _scroll$line2[0],\\n offset = _scroll$line2[1];\\n\\n let formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\\n if (line instanceof _block2.default) {\\n var _line$descendant = line.descendant(_parchment.LeafBlot, offset),\\n _line$descendant2 = _slicedToArray(_line$descendant, 1);\\n\\n const leaf = _line$descendant2[0];\\n\\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\\n }\\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\\n } else if (typeof op.insert === 'object') {\\n const key = Object.keys(op.insert)[0]; // There should only be one key\\n if (key == null) return index;\\n this.scroll.insertAt(index, key, op.insert[key]);\\n }\\n scrollLength += length;\\n }\\n Object.keys(attributes).forEach(name => {\\n this.scroll.formatAt(index, length, name, attributes[name]);\\n });\\n return index + length;\\n }, 0);\\n normalizedDelta.reduce((index, op) => {\\n if (typeof op.delete === 'number') {\\n this.scroll.deleteAt(index, op.delete);\\n return index;\\n }\\n return index + (op.retain || op.insert.length || 1);\\n }, 0);\\n this.scroll.batchEnd();\\n this.scroll.optimize();\\n return this.update(normalizedDelta);\\n }\\n\\n deleteText(index, length) {\\n this.scroll.deleteAt(index, length);\\n return this.update(new _quillDelta2.default().retain(index).delete(length));\\n }\\n\\n formatLine(index, length, formats = {}) {\\n this.scroll.update();\\n Object.keys(formats).forEach(format => {\\n this.scroll.lines(index, Math.max(length, 1)).forEach(line => {\\n line.format(format, formats[format]);\\n });\\n });\\n this.scroll.optimize();\\n const delta = new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats));\\n return this.update(delta);\\n }\\n\\n formatText(index, length, formats = {}) {\\n Object.keys(formats).forEach(format => {\\n this.scroll.formatAt(index, length, format, formats[format]);\\n });\\n const delta = new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats));\\n return this.update(delta);\\n }\\n\\n getContents(index, length) {\\n return this.delta.slice(index, index + length);\\n }\\n\\n getDelta() {\\n return this.scroll.lines().reduce((delta, line) => {\\n return delta.concat(line.delta());\\n }, new _quillDelta2.default());\\n }\\n\\n getFormat(index, length = 0) {\\n let lines = [];\\n let leaves = [];\\n if (length === 0) {\\n this.scroll.path(index).forEach(path => {\\n var _path = _slicedToArray(path, 1);\\n\\n const blot = _path[0];\\n\\n if (blot instanceof _block2.default) {\\n lines.push(blot);\\n } else if (blot instanceof _parchment.LeafBlot) {\\n leaves.push(blot);\\n }\\n });\\n } else {\\n lines = this.scroll.lines(index, length);\\n leaves = this.scroll.descendants(_parchment.LeafBlot, index, length);\\n }\\n const formatsArr = [lines, leaves].map(blots => {\\n if (blots.length === 0) return {};\\n let formats = (0, _block.bubbleFormats)(blots.shift());\\n while (Object.keys(formats).length > 0) {\\n const blot = blots.shift();\\n if (blot == null) return formats;\\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\\n }\\n return formats;\\n });\\n return _extend2.default.apply(_extend2.default, formatsArr);\\n }\\n\\n getHTML(index, length) {\\n var _scroll$line3 = this.scroll.line(index),\\n _scroll$line4 = _slicedToArray(_scroll$line3, 2);\\n\\n const line = _scroll$line4[0],\\n lineOffset = _scroll$line4[1];\\n\\n if (line.length() >= lineOffset + length) {\\n return convertHTML(line, lineOffset, length, true);\\n }\\n return convertHTML(this.scroll, index, length, true);\\n }\\n\\n getText(index, length) {\\n return this.getContents(index, length).filter(op => typeof op.insert === 'string').map(op => op.insert).join('');\\n }\\n\\n insertEmbed(index, embed, value) {\\n this.scroll.insertAt(index, embed, value);\\n return this.update(new _quillDelta2.default().retain(index).insert({ [embed]: value }));\\n }\\n\\n insertText(index, text, formats = {}) {\\n text = text.replace(/\\\\r\\\\n/g, '\\\\n').replace(/\\\\r/g, '\\\\n');\\n this.scroll.insertAt(index, text);\\n Object.keys(formats).forEach(format => {\\n this.scroll.formatAt(index, text.length, format, formats[format]);\\n });\\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\\n }\\n\\n isBlank() {\\n if (this.scroll.children.length === 0) return true;\\n if (this.scroll.children.length > 1) return false;\\n const block = this.scroll.children.head;\\n if (block.statics.blotName !== _block2.default.blotName) return false;\\n if (block.children.length > 1) return false;\\n return block.children.head instanceof _break2.default;\\n }\\n\\n removeFormat(index, length) {\\n const text = this.getText(index, length);\\n\\n var _scroll$line5 = this.scroll.line(index + length),\\n _scroll$line6 = _slicedToArray(_scroll$line5, 2);\\n\\n const line = _scroll$line6[0],\\n offset = _scroll$line6[1];\\n\\n let suffixLength = 0;\\n let suffix = new _quillDelta2.default();\\n if (line != null) {\\n suffixLength = line.length() - offset;\\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\\\n');\\n }\\n const contents = this.getContents(index, length + suffixLength);\\n const diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\\n const delta = new _quillDelta2.default().retain(index).concat(diff);\\n return this.applyDelta(delta);\\n }\\n\\n update(change, mutations = [], cursorIndex = undefined) {\\n const oldDelta = this.delta;\\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && this.scroll.find(mutations[0].target)) {\\n // Optimization for character changes\\n const textBlot = this.scroll.find(mutations[0].target);\\n const formats = (0, _block.bubbleFormats)(textBlot);\\n const index = textBlot.offset(this.scroll);\\n const oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\\n const oldText = new _quillDelta2.default().insert(oldValue);\\n const newText = new _quillDelta2.default().insert(textBlot.value());\\n const diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\\n change = diffDelta.reduce((delta, op) => {\\n if (op.insert) {\\n return delta.insert(op.insert, formats);\\n }\\n return delta.push(op);\\n }, new _quillDelta2.default());\\n this.delta = oldDelta.compose(change);\\n } else {\\n this.delta = this.getDelta();\\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\\n change = oldDelta.diff(this.delta, cursorIndex);\\n }\\n }\\n return change;\\n }\\n}\\n\\nfunction convertListHTML(items, lastIndent, types) {\\n if (items.length === 0) {\\n var _getListType = getListType(types.pop()),\\n _getListType2 = _slicedToArray(_getListType, 1);\\n\\n const endTag = _getListType2[0];\\n\\n if (lastIndent <= 0) {\\n return ``;\\n }\\n return `${convertListHTML([], lastIndent - 1, types)}`;\\n }\\n\\n var _items = _toArray(items),\\n _items$ = _items[0];\\n\\n const child = _items$.child,\\n offset = _items$.offset,\\n length = _items$.length,\\n indent = _items$.indent,\\n type = _items$.type,\\n rest = _items.slice(1);\\n\\n var _getListType3 = getListType(type),\\n _getListType4 = _slicedToArray(_getListType3, 2);\\n\\n const tag = _getListType4[0],\\n attribute = _getListType4[1];\\n\\n if (indent > lastIndent) {\\n types.push(tag);\\n return `<${tag}>${convertHTML(child, offset, length)}${convertListHTML(rest, indent, types)}`;\\n } else if (indent === lastIndent) {\\n return `${convertHTML(child, offset, length)}${convertListHTML(rest, indent, types)}`;\\n } else if (indent === lastIndent - 1) {\\n var _getListType5 = getListType(types.pop()),\\n _getListType6 = _slicedToArray(_getListType5, 1);\\n\\n const endTag = _getListType6[0];\\n\\n return `${convertHTML(child, offset, length)}${convertListHTML(rest, indent, types)}`;\\n }\\n\\n var _getListType7 = getListType(types.pop()),\\n _getListType8 = _slicedToArray(_getListType7, 1);\\n\\n const endTag = _getListType8[0];\\n\\n return `${convertListHTML(items, lastIndent - 1, types)}`;\\n}\\n\\nfunction convertHTML(blot, index, length, isRoot = false) {\\n if (typeof blot.html === 'function') {\\n return blot.html(index, length);\\n } else if (blot instanceof _text2.default) {\\n return blot.value().slice(index, index + length);\\n } else if (blot.children) {\\n // TODO fix API\\n if (blot.statics.blotName === 'list-container') {\\n const items = [];\\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\\n const formats = child.formats();\\n items.push({\\n child,\\n offset,\\n length: childLength,\\n indent: formats.indent || 0,\\n type: formats.list\\n });\\n });\\n return convertListHTML(items, -1, []);\\n }\\n const parts = [];\\n blot.children.forEachAt(index, length, (child, offset, childLength) => {\\n parts.push(convertHTML(child, offset, childLength));\\n });\\n if (isRoot || blot.statics.blotName === 'list') {\\n return parts.join('');\\n }\\n var _blot$domNode = blot.domNode;\\n const outerHTML = _blot$domNode.outerHTML,\\n innerHTML = _blot$domNode.innerHTML;\\n\\n var _outerHTML$split = outerHTML.split(`>${innerHTML}<`),\\n _outerHTML$split2 = _slicedToArray(_outerHTML$split, 2);\\n\\n const start = _outerHTML$split2[0],\\n end = _outerHTML$split2[1];\\n\\n return `${start}>${parts.join('')}<${end}`;\\n }\\n return blot.domNode.outerHTML;\\n}\\n\\nfunction combineFormats(formats, combined) {\\n return Object.keys(combined).reduce((merged, name) => {\\n if (formats[name] == null) return merged;\\n if (combined[name] === formats[name]) {\\n merged[name] = combined[name];\\n } else if (Array.isArray(combined[name])) {\\n if (combined[name].indexOf(formats[name]) < 0) {\\n merged[name] = combined[name].concat([formats[name]]);\\n }\\n } else {\\n merged[name] = [combined[name], formats[name]];\\n }\\n return merged;\\n }, {});\\n}\\n\\nfunction getListType(type) {\\n const tag = type === 'ordered' ? 'ol' : 'ul';\\n switch (type) {\\n case 'checked':\\n return [tag, ' data-list=\\\"checked\\\"'];\\n case 'unchecked':\\n return [tag, ' data-list=\\\"unchecked\\\"'];\\n default:\\n return [tag, ''];\\n }\\n}\\n\\nfunction normalizeDelta(delta) {\\n return delta.reduce((normalizedDelta, op) => {\\n if (typeof op.insert === 'string') {\\n const text = op.insert.replace(/\\\\r\\\\n/g, '\\\\n').replace(/\\\\r/g, '\\\\n');\\n return normalizedDelta.insert(text, op.attributes);\\n }\\n return normalizedDelta.push(op);\\n }, new _quillDelta2.default());\\n}\\n\\nexports.default = Editor;\\n\\n//# sourceURL=webpack://Quill/./core/editor.js?\");\n\n/***/ }),\n\n/***/ \"./core/emitter.js\":\n/*!*************************!*\\\n !*** ./core/emitter.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _eventemitter = __webpack_require__(/*! eventemitter3 */ \\\"./node_modules/eventemitter3/index.js\\\");\\n\\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\\n\\nvar _instances = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n\\nvar _instances2 = _interopRequireDefault(_instances);\\n\\nvar _logger = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\nvar _logger2 = _interopRequireDefault(_logger);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst debug = (0, _logger2.default)('quill:events');\\nconst EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\\n\\nEVENTS.forEach(eventName => {\\n document.addEventListener(eventName, (...args) => {\\n Array.from(document.querySelectorAll('.ql-container')).forEach(node => {\\n const quill = _instances2.default.get(node);\\n if (quill && quill.emitter) {\\n quill.emitter.handleDOM(...args);\\n }\\n });\\n });\\n});\\n\\nclass Emitter extends _eventemitter2.default {\\n constructor() {\\n super();\\n this.listeners = {};\\n this.on('error', debug.error);\\n }\\n\\n emit(...args) {\\n debug.log.call(debug, ...args);\\n super.emit(...args);\\n }\\n\\n handleDOM(event, ...args) {\\n (this.listeners[event.type] || []).forEach(({ node, handler }) => {\\n if (event.target === node || node.contains(event.target)) {\\n handler(event, ...args);\\n }\\n });\\n }\\n\\n listenDOM(eventName, node, handler) {\\n if (!this.listeners[eventName]) {\\n this.listeners[eventName] = [];\\n }\\n this.listeners[eventName].push({ node, handler });\\n }\\n}\\n\\nEmitter.events = {\\n EDITOR_CHANGE: 'editor-change',\\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\\n SCROLL_BLOT_MOUNT: 'scroll-blot-mount',\\n SCROLL_BLOT_UNMOUNT: 'scroll-blot-unmount',\\n SCROLL_OPTIMIZE: 'scroll-optimize',\\n SCROLL_UPDATE: 'scroll-update',\\n SELECTION_CHANGE: 'selection-change',\\n TEXT_CHANGE: 'text-change'\\n};\\nEmitter.sources = {\\n API: 'api',\\n SILENT: 'silent',\\n USER: 'user'\\n};\\n\\nexports.default = Emitter;\\n\\n//# sourceURL=webpack://Quill/./core/emitter.js?\");\n\n/***/ }),\n\n/***/ \"./core/instances.js\":\n/*!***************************!*\\\n !*** ./core/instances.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = new WeakMap();\\n\\n//# sourceURL=webpack://Quill/./core/instances.js?\");\n\n/***/ }),\n\n/***/ \"./core/logger.js\":\n/*!************************!*\\\n !*** ./core/logger.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nconst levels = ['error', 'warn', 'log', 'info'];\\nlet level = 'warn';\\n\\nfunction debug(method, ...args) {\\n if (levels.indexOf(method) <= levels.indexOf(level)) {\\n console[method](...args); // eslint-disable-line no-console\\n }\\n}\\n\\nfunction namespace(ns) {\\n return levels.reduce((logger, method) => {\\n logger[method] = debug.bind(console, method, ns);\\n return logger;\\n }, {});\\n}\\n\\nnamespace.level = newLevel => {\\n level = newLevel;\\n};\\ndebug.level = namespace.level;\\n\\nexports.default = namespace;\\n\\n//# sourceURL=webpack://Quill/./core/logger.js?\");\n\n/***/ }),\n\n/***/ \"./core/module.js\":\n/*!************************!*\\\n !*** ./core/module.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nclass Module {\\n constructor(quill, options = {}) {\\n this.quill = quill;\\n this.options = options;\\n }\\n}\\nModule.DEFAULTS = {};\\n\\nexports.default = Module;\\n\\n//# sourceURL=webpack://Quill/./core/module.js?\");\n\n/***/ }),\n\n/***/ \"./core/quill.js\":\n/*!***********************!*\\\n !*** ./core/quill.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.overload = exports.expandConfig = exports.globalRegistry = undefined;\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar Parchment = _interopRequireWildcard(_parchment);\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _editor = __webpack_require__(/*! ./editor */ \\\"./core/editor.js\\\");\\n\\nvar _editor2 = _interopRequireDefault(_editor);\\n\\nvar _emitter = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n\\nvar _emitter2 = _interopRequireDefault(_emitter);\\n\\nvar _module = __webpack_require__(/*! ./module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nvar _selection = __webpack_require__(/*! ./selection */ \\\"./core/selection.js\\\");\\n\\nvar _selection2 = _interopRequireDefault(_selection);\\n\\nvar _instances = __webpack_require__(/*! ./instances */ \\\"./core/instances.js\\\");\\n\\nvar _instances2 = _interopRequireDefault(_instances);\\n\\nvar _logger = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\nvar _logger2 = _interopRequireDefault(_logger);\\n\\nvar _theme = __webpack_require__(/*! ./theme */ \\\"./core/theme.js\\\");\\n\\nvar _theme2 = _interopRequireDefault(_theme);\\n\\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst debug = (0, _logger2.default)('quill');\\n\\nconst globalRegistry = new Parchment.Registry();\\n\\nclass Quill {\\n static debug(limit) {\\n if (limit === true) {\\n limit = 'log';\\n }\\n _logger2.default.level(limit);\\n }\\n\\n static find(node) {\\n return _instances2.default.get(node) || globalRegistry.find(node);\\n }\\n\\n static import(name) {\\n if (this.imports[name] == null) {\\n debug.error(`Cannot import ${name}. Are you sure it was registered?`);\\n }\\n return this.imports[name];\\n }\\n\\n static register(path, target, overwrite = false) {\\n if (typeof path !== 'string') {\\n const name = path.attrName || path.blotName;\\n if (typeof name === 'string') {\\n // register(Blot | Attributor, overwrite)\\n this.register(`formats/${name}`, path, target);\\n } else {\\n Object.keys(path).forEach(key => {\\n this.register(key, path[key], target);\\n });\\n }\\n } else {\\n if (this.imports[path] != null && !overwrite) {\\n debug.warn(`Overwriting ${path} with`, target);\\n }\\n this.imports[path] = target;\\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\\n globalRegistry.register(target);\\n }\\n if (typeof target.register === 'function') {\\n target.register(globalRegistry);\\n }\\n }\\n }\\n\\n constructor(container, options = {}) {\\n this.options = expandConfig(container, options);\\n this.container = this.options.container;\\n if (this.container == null) {\\n return debug.error('Invalid Quill container', container);\\n }\\n if (this.options.debug) {\\n Quill.debug(this.options.debug);\\n }\\n const html = this.container.innerHTML.trim();\\n this.container.classList.add('ql-container');\\n this.container.innerHTML = '';\\n _instances2.default.set(this.container, this);\\n this.root = this.addContainer('ql-editor');\\n this.root.addEventListener('dragstart', e => {\\n e.preventDefault();\\n });\\n this.root.classList.add('ql-blank');\\n this.root.setAttribute('data-gramm', false);\\n this.scrollingContainer = this.options.scrollingContainer || this.root;\\n this.emitter = new _emitter2.default();\\n const ScrollBlot = this.options.registry.query(Parchment.ScrollBlot.blotName);\\n this.scroll = new ScrollBlot(this.options.registry, this.root, {\\n emitter: this.emitter\\n });\\n this.editor = new _editor2.default(this.scroll);\\n this.selection = new _selection2.default(this.scroll, this.emitter);\\n this.theme = new this.options.theme(this, this.options); // eslint-disable-line new-cap\\n this.keyboard = this.theme.addModule('keyboard');\\n this.clipboard = this.theme.addModule('clipboard');\\n this.history = this.theme.addModule('history');\\n this.uploader = this.theme.addModule('uploader');\\n this.theme.init();\\n this.emitter.on(_emitter2.default.events.EDITOR_CHANGE, type => {\\n if (type === _emitter2.default.events.TEXT_CHANGE) {\\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\\n }\\n });\\n this.emitter.on(_emitter2.default.events.SCROLL_UPDATE, (source, mutations) => {\\n const range = this.selection.lastRange;\\n const index = range && range.length === 0 ? range.index : undefined;\\n modify.call(this, () => this.editor.update(null, mutations, index), source);\\n });\\n const contents = this.clipboard.convert({\\n html: `${html}


    `,\\n text: '\\\\n'\\n });\\n this.setContents(contents);\\n this.history.clear();\\n if (this.options.placeholder) {\\n this.root.setAttribute('data-placeholder', this.options.placeholder);\\n }\\n if (this.options.readOnly) {\\n this.disable();\\n }\\n }\\n\\n addContainer(container, refNode = null) {\\n if (typeof container === 'string') {\\n const className = container;\\n container = document.createElement('div');\\n container.classList.add(className);\\n }\\n this.container.insertBefore(container, refNode);\\n return container;\\n }\\n\\n blur() {\\n this.selection.setRange(null);\\n }\\n\\n deleteText(index, length, source) {\\n var _overload = overload(index, length, source);\\n\\n var _overload2 = _slicedToArray(_overload, 4);\\n\\n index = _overload2[0];\\n length = _overload2[1];\\n source = _overload2[3];\\n\\n return modify.call(this, () => {\\n return this.editor.deleteText(index, length);\\n }, source, index, -1 * length);\\n }\\n\\n disable() {\\n this.enable(false);\\n }\\n\\n enable(enabled = true) {\\n this.scroll.enable(enabled);\\n this.container.classList.toggle('ql-disabled', !enabled);\\n }\\n\\n focus() {\\n const scrollTop = this.scrollingContainer.scrollTop;\\n\\n this.selection.focus();\\n this.scrollingContainer.scrollTop = scrollTop;\\n this.scrollIntoView();\\n }\\n\\n format(name, value, source = _emitter2.default.sources.API) {\\n return modify.call(this, () => {\\n const range = this.getSelection(true);\\n let change = new _quillDelta2.default();\\n if (range == null) {\\n return change;\\n } else if (this.scroll.query(name, Parchment.Scope.BLOCK)) {\\n change = this.editor.formatLine(range.index, range.length, {\\n [name]: value\\n });\\n } else if (range.length === 0) {\\n this.selection.format(name, value);\\n return change;\\n } else {\\n change = this.editor.formatText(range.index, range.length, {\\n [name]: value\\n });\\n }\\n this.setSelection(range, _emitter2.default.sources.SILENT);\\n return change;\\n }, source);\\n }\\n\\n formatLine(index, length, name, value, source) {\\n let formats;\\n // eslint-disable-next-line prefer-const\\n\\n var _overload3 = overload(index, length, name, value, source);\\n\\n var _overload4 = _slicedToArray(_overload3, 4);\\n\\n index = _overload4[0];\\n length = _overload4[1];\\n formats = _overload4[2];\\n source = _overload4[3];\\n\\n return modify.call(this, () => {\\n return this.editor.formatLine(index, length, formats);\\n }, source, index, 0);\\n }\\n\\n formatText(index, length, name, value, source) {\\n let formats;\\n // eslint-disable-next-line prefer-const\\n\\n var _overload5 = overload(index, length, name, value, source);\\n\\n var _overload6 = _slicedToArray(_overload5, 4);\\n\\n index = _overload6[0];\\n length = _overload6[1];\\n formats = _overload6[2];\\n source = _overload6[3];\\n\\n return modify.call(this, () => {\\n return this.editor.formatText(index, length, formats);\\n }, source, index, 0);\\n }\\n\\n getBounds(index, length = 0) {\\n let bounds;\\n if (typeof index === 'number') {\\n bounds = this.selection.getBounds(index, length);\\n } else {\\n bounds = this.selection.getBounds(index.index, index.length);\\n }\\n const containerBounds = this.container.getBoundingClientRect();\\n return {\\n bottom: bounds.bottom - containerBounds.top,\\n height: bounds.height,\\n left: bounds.left - containerBounds.left,\\n right: bounds.right - containerBounds.left,\\n top: bounds.top - containerBounds.top,\\n width: bounds.width\\n };\\n }\\n\\n getContents(index = 0, length = this.getLength() - index) {\\n var _overload7 = overload(index, length);\\n\\n var _overload8 = _slicedToArray(_overload7, 2);\\n\\n index = _overload8[0];\\n length = _overload8[1];\\n\\n return this.editor.getContents(index, length);\\n }\\n\\n getFormat(index = this.getSelection(true), length = 0) {\\n if (typeof index === 'number') {\\n return this.editor.getFormat(index, length);\\n }\\n return this.editor.getFormat(index.index, index.length);\\n }\\n\\n getIndex(blot) {\\n return blot.offset(this.scroll);\\n }\\n\\n getLength() {\\n return this.scroll.length();\\n }\\n\\n getLeaf(index) {\\n return this.scroll.leaf(index);\\n }\\n\\n getLine(index) {\\n return this.scroll.line(index);\\n }\\n\\n getLines(index = 0, length = Number.MAX_VALUE) {\\n if (typeof index !== 'number') {\\n return this.scroll.lines(index.index, index.length);\\n }\\n return this.scroll.lines(index, length);\\n }\\n\\n getModule(name) {\\n return this.theme.modules[name];\\n }\\n\\n getSelection(focus = false) {\\n if (focus) this.focus();\\n this.update(); // Make sure we access getRange with editor in consistent state\\n return this.selection.getRange()[0];\\n }\\n\\n getSemanticHTML(index = 0, length = this.getLength() - index) {\\n var _overload9 = overload(index, length);\\n\\n var _overload10 = _slicedToArray(_overload9, 2);\\n\\n index = _overload10[0];\\n length = _overload10[1];\\n\\n return this.editor.getHTML(index, length);\\n }\\n\\n getText(index = 0, length = this.getLength() - index) {\\n var _overload11 = overload(index, length);\\n\\n var _overload12 = _slicedToArray(_overload11, 2);\\n\\n index = _overload12[0];\\n length = _overload12[1];\\n\\n return this.editor.getText(index, length);\\n }\\n\\n hasFocus() {\\n return this.selection.hasFocus();\\n }\\n\\n insertEmbed(index, embed, value, source = Quill.sources.API) {\\n return modify.call(this, () => {\\n return this.editor.insertEmbed(index, embed, value);\\n }, source, index);\\n }\\n\\n insertText(index, text, name, value, source) {\\n let formats;\\n // eslint-disable-next-line prefer-const\\n\\n var _overload13 = overload(index, 0, name, value, source);\\n\\n var _overload14 = _slicedToArray(_overload13, 4);\\n\\n index = _overload14[0];\\n formats = _overload14[2];\\n source = _overload14[3];\\n\\n return modify.call(this, () => {\\n return this.editor.insertText(index, text, formats);\\n }, source, index, text.length);\\n }\\n\\n isEnabled() {\\n return !this.container.classList.contains('ql-disabled');\\n }\\n\\n off(...args) {\\n return this.emitter.off(...args);\\n }\\n\\n on(...args) {\\n return this.emitter.on(...args);\\n }\\n\\n once(...args) {\\n return this.emitter.once(...args);\\n }\\n\\n removeFormat(index, length, source) {\\n var _overload15 = overload(index, length, source);\\n\\n var _overload16 = _slicedToArray(_overload15, 4);\\n\\n index = _overload16[0];\\n length = _overload16[1];\\n source = _overload16[3];\\n\\n return modify.call(this, () => {\\n return this.editor.removeFormat(index, length);\\n }, source, index);\\n }\\n\\n scrollIntoView() {\\n this.selection.scrollIntoView(this.scrollingContainer);\\n }\\n\\n setContents(delta, source = _emitter2.default.sources.API) {\\n return modify.call(this, () => {\\n delta = new _quillDelta2.default(delta);\\n const length = this.getLength();\\n const deleted = this.editor.deleteText(0, length);\\n const applied = this.editor.applyDelta(delta);\\n const lastOp = applied.ops[applied.ops.length - 1];\\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\\\n') {\\n this.editor.deleteText(this.getLength() - 1, 1);\\n applied.delete(1);\\n }\\n return deleted.compose(applied);\\n }, source);\\n }\\n\\n setSelection(index, length, source) {\\n if (index == null) {\\n this.selection.setRange(null, length || Quill.sources.API);\\n } else {\\n var _overload17 = overload(index, length, source);\\n\\n var _overload18 = _slicedToArray(_overload17, 4);\\n\\n index = _overload18[0];\\n length = _overload18[1];\\n source = _overload18[3];\\n\\n this.selection.setRange(new _selection.Range(Math.max(0, index), length), source);\\n if (source !== _emitter2.default.sources.SILENT) {\\n this.selection.scrollIntoView(this.scrollingContainer);\\n }\\n }\\n }\\n\\n setText(text, source = _emitter2.default.sources.API) {\\n const delta = new _quillDelta2.default().insert(text);\\n return this.setContents(delta, source);\\n }\\n\\n update(source = _emitter2.default.sources.USER) {\\n const change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\\n this.selection.update(source);\\n // TODO this is usually undefined\\n return change;\\n }\\n\\n updateContents(delta, source = _emitter2.default.sources.API) {\\n return modify.call(this, () => {\\n delta = new _quillDelta2.default(delta);\\n return this.editor.applyDelta(delta, source);\\n }, source, true);\\n }\\n}\\nQuill.DEFAULTS = {\\n bounds: null,\\n modules: {},\\n placeholder: '',\\n readOnly: false,\\n registry: globalRegistry,\\n scrollingContainer: null,\\n theme: 'default'\\n};\\nQuill.events = _emitter2.default.events;\\nQuill.sources = _emitter2.default.sources;\\n// eslint-disable-next-line no-undef\\nQuill.version = false ? undefined : \\\"2.0.0-dev.2\\\";\\n\\nQuill.imports = {\\n delta: _quillDelta2.default,\\n parchment: Parchment,\\n 'core/module': _module2.default,\\n 'core/theme': _theme2.default\\n};\\n\\nfunction expandConfig(container, userConfig) {\\n userConfig = (0, _extend2.default)(true, {\\n container,\\n modules: {\\n clipboard: true,\\n keyboard: true,\\n history: true,\\n uploader: true\\n }\\n }, userConfig);\\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\\n userConfig.theme = _theme2.default;\\n } else {\\n userConfig.theme = Quill.import(`themes/${userConfig.theme}`);\\n if (userConfig.theme == null) {\\n throw new Error(`Invalid theme ${userConfig.theme}. Did you register it?`);\\n }\\n }\\n const themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\\n [themeConfig, userConfig].forEach(config => {\\n config.modules = config.modules || {};\\n Object.keys(config.modules).forEach(module => {\\n if (config.modules[module] === true) {\\n config.modules[module] = {};\\n }\\n });\\n });\\n const moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\\n const moduleConfig = moduleNames.reduce((config, name) => {\\n const moduleClass = Quill.import(`modules/${name}`);\\n if (moduleClass == null) {\\n debug.error(`Cannot load ${name} module. Are you sure you registered it?`);\\n } else {\\n config[name] = moduleClass.DEFAULTS || {};\\n }\\n return config;\\n }, {});\\n // Special case toolbar shorthand\\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\\n userConfig.modules.toolbar = {\\n container: userConfig.modules.toolbar\\n };\\n }\\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\\n ['bounds', 'container', 'scrollingContainer'].forEach(key => {\\n if (typeof userConfig[key] === 'string') {\\n userConfig[key] = document.querySelector(userConfig[key]);\\n }\\n });\\n userConfig.modules = Object.keys(userConfig.modules).reduce((config, name) => {\\n if (userConfig.modules[name]) {\\n config[name] = userConfig.modules[name];\\n }\\n return config;\\n }, {});\\n return userConfig;\\n}\\n\\n// Handle selection preservation and TEXT_CHANGE emission\\n// common to modification APIs\\nfunction modify(modifier, source, index, shift) {\\n if (!this.isEnabled() && source === _emitter2.default.sources.USER) {\\n return new _quillDelta2.default();\\n }\\n let range = index == null ? null : this.getSelection();\\n const oldDelta = this.editor.delta;\\n const change = modifier();\\n if (range != null) {\\n if (index === true) {\\n index = range.index; // eslint-disable-line prefer-destructuring\\n }\\n if (shift == null) {\\n range = shiftRange(range, change, source);\\n } else if (shift !== 0) {\\n range = shiftRange(range, index, shift, source);\\n }\\n this.setSelection(range, _emitter2.default.sources.SILENT);\\n }\\n if (change.length() > 0) {\\n const args = [_emitter2.default.events.TEXT_CHANGE, change, oldDelta, source];\\n this.emitter.emit(_emitter2.default.events.EDITOR_CHANGE, ...args);\\n if (source !== _emitter2.default.sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\n }\\n return change;\\n}\\n\\nfunction overload(index, length, name, value, source) {\\n let formats = {};\\n if (typeof index.index === 'number' && typeof index.length === 'number') {\\n // Allow for throwaway end (used by insertText/insertEmbed)\\n if (typeof length !== 'number') {\\n source = value;\\n value = name;\\n name = length;\\n length = index.length; // eslint-disable-line prefer-destructuring\\n index = index.index; // eslint-disable-line prefer-destructuring\\n } else {\\n length = index.length; // eslint-disable-line prefer-destructuring\\n index = index.index; // eslint-disable-line prefer-destructuring\\n }\\n } else if (typeof length !== 'number') {\\n source = value;\\n value = name;\\n name = length;\\n length = 0;\\n }\\n // Handle format being object, two format name/value strings or excluded\\n if (typeof name === 'object') {\\n formats = name;\\n source = value;\\n } else if (typeof name === 'string') {\\n if (value != null) {\\n formats[name] = value;\\n } else {\\n source = name;\\n }\\n }\\n // Handle optional source\\n source = source || _emitter2.default.sources.API;\\n return [index, length, formats, source];\\n}\\n\\nfunction shiftRange(range, index, length, source) {\\n if (range == null) return null;\\n let start;\\n let end;\\n if (index instanceof _quillDelta2.default) {\\n var _map = [range.index, range.index + range.length].map(pos => index.transformPosition(pos, source !== _emitter2.default.sources.USER));\\n\\n var _map2 = _slicedToArray(_map, 2);\\n\\n start = _map2[0];\\n end = _map2[1];\\n } else {\\n var _map3 = [range.index, range.index + range.length].map(pos => {\\n if (pos < index || pos === index && source === _emitter2.default.sources.USER) return pos;\\n if (length >= 0) {\\n return pos + length;\\n }\\n return Math.max(index, pos + length);\\n });\\n\\n var _map4 = _slicedToArray(_map3, 2);\\n\\n start = _map4[0];\\n end = _map4[1];\\n }\\n return new _selection.Range(start, end - start);\\n}\\n\\nexports.globalRegistry = globalRegistry;\\nexports.expandConfig = expandConfig;\\nexports.overload = overload;\\nexports.default = Quill;\\n\\n//# sourceURL=webpack://Quill/./core/quill.js?\");\n\n/***/ }),\n\n/***/ \"./core/selection.js\":\n/*!***************************!*\\\n !*** ./core/selection.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.Range = undefined;\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _clone = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n\\nvar _clone2 = _interopRequireDefault(_clone);\\n\\nvar _deepEqual = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n\\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\\n\\nvar _emitter = __webpack_require__(/*! ./emitter */ \\\"./core/emitter.js\\\");\\n\\nvar _emitter2 = _interopRequireDefault(_emitter);\\n\\nvar _logger = __webpack_require__(/*! ./logger */ \\\"./core/logger.js\\\");\\n\\nvar _logger2 = _interopRequireDefault(_logger);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst debug = (0, _logger2.default)('quill:selection');\\n\\nclass Range {\\n constructor(index, length = 0) {\\n this.index = index;\\n this.length = length;\\n }\\n}\\n\\nclass Selection {\\n constructor(scroll, emitter) {\\n this.emitter = emitter;\\n this.scroll = scroll;\\n this.composing = false;\\n this.mouseDown = false;\\n this.root = this.scroll.domNode;\\n this.cursor = this.scroll.create('cursor', this);\\n // savedRange is last non-null range\\n this.savedRange = new Range(0, 0);\\n this.lastRange = this.savedRange;\\n this.handleComposition();\\n this.handleDragging();\\n this.emitter.listenDOM('selectionchange', document, () => {\\n if (!this.mouseDown) {\\n setTimeout(this.update.bind(this, _emitter2.default.sources.USER), 1);\\n }\\n });\\n this.emitter.on(_emitter2.default.events.SCROLL_BEFORE_UPDATE, () => {\\n if (!this.hasFocus()) return;\\n const native = this.getNativeRange();\\n if (native == null) return;\\n if (native.start.node === this.cursor.textNode) return; // cursor.restore() will handle\\n this.emitter.once(_emitter2.default.events.SCROLL_UPDATE, () => {\\n try {\\n this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\\n this.update(_emitter2.default.sources.SILENT);\\n } catch (ignored) {\\n // ignore\\n }\\n });\\n });\\n this.emitter.on(_emitter2.default.events.SCROLL_OPTIMIZE, (mutations, context) => {\\n if (context.range) {\\n var _context$range = context.range;\\n const startNode = _context$range.startNode,\\n startOffset = _context$range.startOffset,\\n endNode = _context$range.endNode,\\n endOffset = _context$range.endOffset;\\n\\n this.setNativeRange(startNode, startOffset, endNode, endOffset);\\n this.update(_emitter2.default.sources.SILENT);\\n }\\n });\\n this.update(_emitter2.default.sources.SILENT);\\n }\\n\\n handleComposition() {\\n this.root.addEventListener('compositionstart', () => {\\n this.composing = true;\\n });\\n this.root.addEventListener('compositionend', () => {\\n this.composing = false;\\n if (this.cursor.parent) {\\n const range = this.cursor.restore();\\n if (!range) return;\\n setTimeout(() => {\\n this.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\\n }, 1);\\n }\\n });\\n }\\n\\n handleDragging() {\\n this.emitter.listenDOM('mousedown', document.body, () => {\\n this.mouseDown = true;\\n });\\n this.emitter.listenDOM('mouseup', document.body, () => {\\n this.mouseDown = false;\\n this.update(_emitter2.default.sources.USER);\\n });\\n }\\n\\n focus() {\\n if (this.hasFocus()) return;\\n this.root.focus();\\n this.setRange(this.savedRange);\\n }\\n\\n format(format, value) {\\n this.scroll.update();\\n const nativeRange = this.getNativeRange();\\n if (nativeRange == null || !nativeRange.native.collapsed || this.scroll.query(format, _parchment.Scope.BLOCK)) return;\\n if (nativeRange.start.node !== this.cursor.textNode) {\\n const blot = this.scroll.find(nativeRange.start.node, false);\\n if (blot == null) return;\\n // TODO Give blot ability to not split\\n if (blot instanceof _parchment.LeafBlot) {\\n const after = blot.split(nativeRange.start.offset);\\n blot.parent.insertBefore(this.cursor, after);\\n } else {\\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\\n }\\n this.cursor.attach();\\n }\\n this.cursor.format(format, value);\\n this.scroll.optimize();\\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\\n this.update();\\n }\\n\\n getBounds(index, length = 0) {\\n const scrollLength = this.scroll.length();\\n index = Math.min(index, scrollLength - 1);\\n length = Math.min(index + length, scrollLength - 1) - index;\\n let node;\\n\\n var _scroll$leaf = this.scroll.leaf(index),\\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2);\\n\\n let leaf = _scroll$leaf2[0],\\n offset = _scroll$leaf2[1];\\n\\n if (leaf == null) return null;\\n\\n var _leaf$position = leaf.position(offset, true);\\n\\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\\n\\n node = _leaf$position2[0];\\n offset = _leaf$position2[1];\\n\\n const range = document.createRange();\\n if (length > 0) {\\n range.setStart(node, offset);\\n\\n var _scroll$leaf3 = this.scroll.leaf(index + length);\\n\\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\\n\\n leaf = _scroll$leaf4[0];\\n offset = _scroll$leaf4[1];\\n\\n if (leaf == null) return null;\\n\\n var _leaf$position3 = leaf.position(offset, true);\\n\\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\\n\\n node = _leaf$position4[0];\\n offset = _leaf$position4[1];\\n\\n range.setEnd(node, offset);\\n return range.getBoundingClientRect();\\n }\\n let side = 'left';\\n let rect;\\n if (node instanceof Text) {\\n if (offset < node.data.length) {\\n range.setStart(node, offset);\\n range.setEnd(node, offset + 1);\\n } else {\\n range.setStart(node, offset - 1);\\n range.setEnd(node, offset);\\n side = 'right';\\n }\\n rect = range.getBoundingClientRect();\\n } else {\\n rect = leaf.domNode.getBoundingClientRect();\\n if (offset > 0) side = 'right';\\n }\\n return {\\n bottom: rect.top + rect.height,\\n height: rect.height,\\n left: rect[side],\\n right: rect[side],\\n top: rect.top,\\n width: 0\\n };\\n }\\n\\n getNativeRange() {\\n const selection = document.getSelection();\\n if (selection == null || selection.rangeCount <= 0) return null;\\n const nativeRange = selection.getRangeAt(0);\\n if (nativeRange == null) return null;\\n const range = this.normalizeNative(nativeRange);\\n debug.info('getNativeRange', range);\\n return range;\\n }\\n\\n getRange() {\\n const normalized = this.getNativeRange();\\n if (normalized == null) return [null, null];\\n const range = this.normalizedToRange(normalized);\\n return [range, normalized];\\n }\\n\\n hasFocus() {\\n return document.activeElement === this.root || contains(this.root, document.activeElement);\\n }\\n\\n normalizedToRange(range) {\\n const positions = [[range.start.node, range.start.offset]];\\n if (!range.native.collapsed) {\\n positions.push([range.end.node, range.end.offset]);\\n }\\n const indexes = positions.map(position => {\\n var _position = _slicedToArray(position, 2);\\n\\n const node = _position[0],\\n offset = _position[1];\\n\\n const blot = this.scroll.find(node, true);\\n const index = blot.offset(this.scroll);\\n if (offset === 0) {\\n return index;\\n } else if (blot instanceof _parchment.ContainerBlot) {\\n return index + blot.length();\\n }\\n return index + blot.index(node, offset);\\n });\\n const end = Math.min(Math.max(...indexes), this.scroll.length() - 1);\\n const start = Math.min(end, ...indexes);\\n return new Range(start, end - start);\\n }\\n\\n normalizeNative(nativeRange) {\\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\\n return null;\\n }\\n const range = {\\n start: {\\n node: nativeRange.startContainer,\\n offset: nativeRange.startOffset\\n },\\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\\n native: nativeRange\\n };\\n [range.start, range.end].forEach(position => {\\n let node = position.node,\\n offset = position.offset;\\n\\n while (!(node instanceof Text) && node.childNodes.length > 0) {\\n if (node.childNodes.length > offset) {\\n node = node.childNodes[offset];\\n offset = 0;\\n } else if (node.childNodes.length === offset) {\\n node = node.lastChild;\\n if (node instanceof Text) {\\n offset = node.data.length;\\n } else if (node.childNodes.length > 0) {\\n // Container case\\n offset = node.childNodes.length;\\n } else {\\n // Embed case\\n offset = node.childNodes.length + 1;\\n }\\n } else {\\n break;\\n }\\n }\\n position.node = node;\\n position.offset = offset;\\n });\\n return range;\\n }\\n\\n rangeToNative(range) {\\n const indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\\n const args = [];\\n const scrollLength = this.scroll.length();\\n indexes.forEach((index, i) => {\\n index = Math.min(scrollLength - 1, index);\\n\\n var _scroll$leaf5 = this.scroll.leaf(index),\\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2);\\n\\n const leaf = _scroll$leaf6[0],\\n leafOffset = _scroll$leaf6[1];\\n\\n var _leaf$position5 = leaf.position(leafOffset, i !== 0),\\n _leaf$position6 = _slicedToArray(_leaf$position5, 2);\\n\\n const node = _leaf$position6[0],\\n offset = _leaf$position6[1];\\n\\n args.push(node, offset);\\n });\\n if (args.length < 2) {\\n return args.concat(args);\\n }\\n return args;\\n }\\n\\n scrollIntoView(scrollingContainer) {\\n const range = this.lastRange;\\n if (range == null) return;\\n const bounds = this.getBounds(range.index, range.length);\\n if (bounds == null) return;\\n const limit = this.scroll.length() - 1;\\n\\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\\n _scroll$line2 = _slicedToArray(_scroll$line, 1);\\n\\n const first = _scroll$line2[0];\\n\\n let last = first;\\n if (range.length > 0) {\\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\\n\\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\\n\\n last = _scroll$line4[0];\\n }\\n if (first == null || last == null) return;\\n const scrollBounds = scrollingContainer.getBoundingClientRect();\\n if (bounds.top < scrollBounds.top) {\\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\\n } else if (bounds.bottom > scrollBounds.bottom) {\\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\\n }\\n }\\n\\n setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\\n return;\\n }\\n const selection = document.getSelection();\\n if (selection == null) return;\\n if (startNode != null) {\\n if (!this.hasFocus()) this.root.focus();\\n\\n var _ref = this.getNativeRange() || {};\\n\\n const native = _ref.native;\\n\\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\\n if (startNode.tagName === 'BR') {\\n startOffset = Array.from(startNode.parentNode.childNodes).indexOf(startNode);\\n startNode = startNode.parentNode;\\n }\\n if (endNode.tagName === 'BR') {\\n endOffset = Array.from(endNode.parentNode.childNodes).indexOf(endNode);\\n endNode = endNode.parentNode;\\n }\\n const range = document.createRange();\\n range.setStart(startNode, startOffset);\\n range.setEnd(endNode, endOffset);\\n selection.removeAllRanges();\\n selection.addRange(range);\\n }\\n } else {\\n selection.removeAllRanges();\\n this.root.blur();\\n }\\n }\\n\\n setRange(range, force = false, source = _emitter2.default.sources.API) {\\n if (typeof force === 'string') {\\n source = force;\\n force = false;\\n }\\n debug.info('setRange', range);\\n if (range != null) {\\n const args = this.rangeToNative(range);\\n this.setNativeRange(...args, force);\\n } else {\\n this.setNativeRange(null);\\n }\\n this.update(source);\\n }\\n\\n update(source = _emitter2.default.sources.USER) {\\n const oldRange = this.lastRange;\\n\\n var _getRange = this.getRange(),\\n _getRange2 = _slicedToArray(_getRange, 2);\\n\\n const lastRange = _getRange2[0],\\n nativeRange = _getRange2[1];\\n\\n this.lastRange = lastRange;\\n if (this.lastRange != null) {\\n this.savedRange = this.lastRange;\\n }\\n if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\\n this.cursor.restore();\\n }\\n const args = [_emitter2.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\\n this.emitter.emit(_emitter2.default.events.EDITOR_CHANGE, ...args);\\n if (source !== _emitter2.default.sources.SILENT) {\\n this.emitter.emit(...args);\\n }\\n }\\n }\\n}\\n\\nfunction contains(parent, descendant) {\\n try {\\n // Firefox inserts inaccessible nodes around video elements\\n descendant.parentNode; // eslint-disable-line no-unused-expressions\\n } catch (e) {\\n return false;\\n }\\n return parent.contains(descendant);\\n}\\n\\nexports.Range = Range;\\nexports.default = Selection;\\n\\n//# sourceURL=webpack://Quill/./core/selection.js?\");\n\n/***/ }),\n\n/***/ \"./core/theme.js\":\n/*!***********************!*\\\n !*** ./core/theme.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nclass Theme {\\n constructor(quill, options) {\\n this.quill = quill;\\n this.options = options;\\n this.modules = {};\\n }\\n\\n init() {\\n Object.keys(this.options.modules).forEach(name => {\\n if (this.modules[name] == null) {\\n this.addModule(name);\\n }\\n });\\n }\\n\\n addModule(name) {\\n const ModuleClass = this.quill.constructor.import(`modules/${name}`);\\n this.modules[name] = new ModuleClass(this.quill, this.options.modules[name] || {});\\n return this.modules[name];\\n }\\n}\\nTheme.DEFAULTS = {\\n modules: {}\\n};\\nTheme.themes = {\\n default: Theme\\n};\\n\\nexports.default = Theme;\\n\\n//# sourceURL=webpack://Quill/./core/theme.js?\");\n\n/***/ }),\n\n/***/ \"./formats/align.js\":\n/*!**************************!*\\\n !*** ./formats/align.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: _parchment.Scope.BLOCK,\\n whitelist: ['right', 'center', 'justify']\\n};\\n\\nconst AlignAttribute = new _parchment.Attributor('align', 'align', config);\\nconst AlignClass = new _parchment.ClassAttributor('align', 'ql-align', config);\\nconst AlignStyle = new _parchment.StyleAttributor('align', 'text-align', config);\\n\\nexports.AlignAttribute = AlignAttribute;\\nexports.AlignClass = AlignClass;\\nexports.AlignStyle = AlignStyle;\\n\\n//# sourceURL=webpack://Quill/./formats/align.js?\");\n\n/***/ }),\n\n/***/ \"./formats/background.js\":\n/*!*******************************!*\\\n !*** ./formats/background.js ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _color = __webpack_require__(/*! ./color */ \\\"./formats/color.js\\\");\\n\\nconst BackgroundClass = new _parchment.ClassAttributor('background', 'ql-bg', {\\n scope: _parchment.Scope.INLINE\\n});\\nconst BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\\n scope: _parchment.Scope.INLINE\\n});\\n\\nexports.BackgroundClass = BackgroundClass;\\nexports.BackgroundStyle = BackgroundStyle;\\n\\n//# sourceURL=webpack://Quill/./formats/background.js?\");\n\n/***/ }),\n\n/***/ \"./formats/blockquote.js\":\n/*!*******************************!*\\\n !*** ./formats/blockquote.js ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Blockquote extends _block2.default {}\\nBlockquote.blotName = 'blockquote';\\nBlockquote.tagName = 'blockquote';\\n\\nexports.default = Blockquote;\\n\\n//# sourceURL=webpack://Quill/./formats/blockquote.js?\");\n\n/***/ }),\n\n/***/ \"./formats/bold.js\":\n/*!*************************!*\\\n !*** ./formats/bold.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _inline = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Bold extends _inline2.default {\\n static create() {\\n return super.create();\\n }\\n\\n static formats() {\\n return true;\\n }\\n\\n optimize(context) {\\n super.optimize(context);\\n if (this.domNode.tagName !== this.statics.tagName[0]) {\\n this.replaceWith(this.statics.blotName);\\n }\\n }\\n}\\nBold.blotName = 'bold';\\nBold.tagName = ['STRONG', 'B'];\\n\\nexports.default = Bold;\\n\\n//# sourceURL=webpack://Quill/./formats/bold.js?\");\n\n/***/ }),\n\n/***/ \"./formats/code.js\":\n/*!*************************!*\\\n !*** ./formats/code.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.CodeBlockContainer = exports.Code = undefined;\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nvar _break = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n\\nvar _break2 = _interopRequireDefault(_break);\\n\\nvar _cursor = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n\\nvar _cursor2 = _interopRequireDefault(_cursor);\\n\\nvar _inline = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nvar _text = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nvar _container = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n\\nvar _container2 = _interopRequireDefault(_container);\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass CodeBlockContainer extends _container2.default {\\n static create(value) {\\n const domNode = super.create(value);\\n domNode.setAttribute('spellcheck', false);\\n return domNode;\\n }\\n\\n html(index, length) {\\n const html = this.domNode.innerText.slice(index, index + length);\\n return `
    ${html}
    `;\\n }\\n}\\n\\nclass CodeBlock extends _block2.default {\\n static register() {\\n _quill2.default.register(CodeBlockContainer);\\n }\\n}\\n\\nclass Code extends _inline2.default {}\\nCode.blotName = 'code';\\nCode.tagName = 'CODE';\\n\\nCodeBlock.blotName = 'code-block';\\nCodeBlock.className = 'ql-code-block';\\nCodeBlock.tagName = 'DIV';\\nCodeBlockContainer.blotName = 'code-block-container';\\nCodeBlockContainer.className = 'ql-code-block-container';\\nCodeBlockContainer.tagName = 'DIV';\\n\\nCodeBlockContainer.allowedChildren = [CodeBlock];\\n\\nCodeBlock.allowedChildren = [_text2.default, _break2.default, _cursor2.default];\\nCodeBlock.requiredContainer = CodeBlockContainer;\\nCodeBlock.TAB = ' ';\\n\\nexports.Code = Code;\\nexports.CodeBlockContainer = CodeBlockContainer;\\nexports.default = CodeBlock;\\n\\n//# sourceURL=webpack://Quill/./formats/code.js?\");\n\n/***/ }),\n\n/***/ \"./formats/color.js\":\n/*!**************************!*\\\n !*** ./formats/color.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nclass ColorAttributor extends _parchment.StyleAttributor {\\n value(domNode) {\\n let value = super.value(domNode);\\n if (!value.startsWith('rgb(')) return value;\\n value = value.replace(/^[^\\\\d]+/, '').replace(/[^\\\\d]+$/, '');\\n const hex = value.split(',').map(component => `00${parseInt(component, 10).toString(16)}`.slice(-2)).join('');\\n return `#${hex}`;\\n }\\n}\\n\\nconst ColorClass = new _parchment.ClassAttributor('color', 'ql-color', {\\n scope: _parchment.Scope.INLINE\\n});\\nconst ColorStyle = new ColorAttributor('color', 'color', {\\n scope: _parchment.Scope.INLINE\\n});\\n\\nexports.ColorAttributor = ColorAttributor;\\nexports.ColorClass = ColorClass;\\nexports.ColorStyle = ColorStyle;\\n\\n//# sourceURL=webpack://Quill/./formats/color.js?\");\n\n/***/ }),\n\n/***/ \"./formats/direction.js\":\n/*!******************************!*\\\n !*** ./formats/direction.js ***!\n \\******************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: _parchment.Scope.BLOCK,\\n whitelist: ['rtl']\\n};\\n\\nconst DirectionAttribute = new _parchment.Attributor('direction', 'dir', config);\\nconst DirectionClass = new _parchment.ClassAttributor('direction', 'ql-direction', config);\\nconst DirectionStyle = new _parchment.StyleAttributor('direction', 'direction', config);\\n\\nexports.DirectionAttribute = DirectionAttribute;\\nexports.DirectionClass = DirectionClass;\\nexports.DirectionStyle = DirectionStyle;\\n\\n//# sourceURL=webpack://Quill/./formats/direction.js?\");\n\n/***/ }),\n\n/***/ \"./formats/font.js\":\n/*!*************************!*\\\n !*** ./formats/font.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.FontClass = exports.FontStyle = undefined;\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst config = {\\n scope: _parchment.Scope.INLINE,\\n whitelist: ['serif', 'monospace']\\n};\\n\\nconst FontClass = new _parchment.ClassAttributor('font', 'ql-font', config);\\n\\nclass FontStyleAttributor extends _parchment.StyleAttributor {\\n value(node) {\\n return super.value(node).replace(/[\\\"']/g, '');\\n }\\n}\\n\\nconst FontStyle = new FontStyleAttributor('font', 'font-family', config);\\n\\nexports.FontStyle = FontStyle;\\nexports.FontClass = FontClass;\\n\\n//# sourceURL=webpack://Quill/./formats/font.js?\");\n\n/***/ }),\n\n/***/ \"./formats/formula.js\":\n/*!****************************!*\\\n !*** ./formats/formula.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _embed = __webpack_require__(/*! ../blots/embed */ \\\"./blots/embed.js\\\");\\n\\nvar _embed2 = _interopRequireDefault(_embed);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Formula extends _embed2.default {\\n static create(value) {\\n if (window.katex == null) {\\n throw new Error('Formula module requires KaTeX.');\\n }\\n const node = super.create(value);\\n if (typeof value === 'string') {\\n window.katex.render(value, node, {\\n throwOnError: false,\\n errorColor: '#f00'\\n });\\n node.setAttribute('data-value', value);\\n }\\n return node;\\n }\\n\\n static value(domNode) {\\n return domNode.getAttribute('data-value');\\n }\\n\\n html() {\\n var _value = this.value();\\n\\n const formula = _value.formula;\\n\\n return `${formula}`;\\n }\\n}\\nFormula.blotName = 'formula';\\nFormula.className = 'ql-formula';\\nFormula.tagName = 'SPAN';\\n\\nexports.default = Formula;\\n\\n//# sourceURL=webpack://Quill/./formats/formula.js?\");\n\n/***/ }),\n\n/***/ \"./formats/header.js\":\n/*!***************************!*\\\n !*** ./formats/header.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Header extends _block2.default {\\n static formats(domNode) {\\n return this.tagName.indexOf(domNode.tagName) + 1;\\n }\\n}\\nHeader.blotName = 'header';\\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\\n\\nexports.default = Header;\\n\\n//# sourceURL=webpack://Quill/./formats/header.js?\");\n\n/***/ }),\n\n/***/ \"./formats/image.js\":\n/*!**************************!*\\\n !*** ./formats/image.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _link = __webpack_require__(/*! ../formats/link */ \\\"./formats/link.js\\\");\\n\\nconst ATTRIBUTES = ['alt', 'height', 'width'];\\n\\nclass Image extends _parchment.EmbedBlot {\\n static create(value) {\\n const node = super.create(value);\\n if (typeof value === 'string') {\\n node.setAttribute('src', this.sanitize(value));\\n }\\n return node;\\n }\\n\\n static formats(domNode) {\\n return ATTRIBUTES.reduce((formats, attribute) => {\\n if (domNode.hasAttribute(attribute)) {\\n formats[attribute] = domNode.getAttribute(attribute);\\n }\\n return formats;\\n }, {});\\n }\\n\\n static match(url) {\\n return (/\\\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\\\/.+;base64/.test(url)\\n );\\n }\\n\\n static register() {\\n if (/Firefox/i.test(navigator.userAgent)) {\\n setTimeout(() => {\\n // Disable image resizing in Firefox\\n document.execCommand('enableObjectResizing', false, false);\\n }, 1);\\n }\\n }\\n\\n static sanitize(url) {\\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\\n }\\n\\n static value(domNode) {\\n return domNode.getAttribute('src');\\n }\\n\\n format(name, value) {\\n if (ATTRIBUTES.indexOf(name) > -1) {\\n if (value) {\\n this.domNode.setAttribute(name, value);\\n } else {\\n this.domNode.removeAttribute(name);\\n }\\n } else {\\n super.format(name, value);\\n }\\n }\\n}\\nImage.blotName = 'image';\\nImage.tagName = 'IMG';\\n\\nexports.default = Image;\\n\\n//# sourceURL=webpack://Quill/./formats/image.js?\");\n\n/***/ }),\n\n/***/ \"./formats/indent.js\":\n/*!***************************!*\\\n !*** ./formats/indent.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nclass IndentAttributor extends _parchment.ClassAttributor {\\n add(node, value) {\\n if (value === '+1' || value === '-1') {\\n const indent = this.value(node) || 0;\\n value = value === '+1' ? indent + 1 : indent - 1;\\n }\\n if (value === 0) {\\n this.remove(node);\\n return true;\\n }\\n return super.add(node, value);\\n }\\n\\n canAdd(node, value) {\\n return super.canAdd(node, value) || super.canAdd(node, parseInt(value, 10));\\n }\\n\\n value(node) {\\n return parseInt(super.value(node), 10) || undefined; // Don't return NaN\\n }\\n}\\n\\nconst IndentClass = new IndentAttributor('indent', 'ql-indent', {\\n scope: _parchment.Scope.BLOCK,\\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\\n});\\n\\nexports.default = IndentClass;\\n\\n//# sourceURL=webpack://Quill/./formats/indent.js?\");\n\n/***/ }),\n\n/***/ \"./formats/italic.js\":\n/*!***************************!*\\\n !*** ./formats/italic.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _bold = __webpack_require__(/*! ./bold */ \\\"./formats/bold.js\\\");\\n\\nvar _bold2 = _interopRequireDefault(_bold);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Italic extends _bold2.default {}\\nItalic.blotName = 'italic';\\nItalic.tagName = ['EM', 'I'];\\n\\nexports.default = Italic;\\n\\n//# sourceURL=webpack://Quill/./formats/italic.js?\");\n\n/***/ }),\n\n/***/ \"./formats/link.js\":\n/*!*************************!*\\\n !*** ./formats/link.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.sanitize = exports.default = undefined;\\n\\nvar _inline = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Link extends _inline2.default {\\n static create(value) {\\n const node = super.create(value);\\n node.setAttribute('href', this.sanitize(value));\\n node.setAttribute('target', '_blank');\\n return node;\\n }\\n\\n static formats(domNode) {\\n return domNode.getAttribute('href');\\n }\\n\\n static sanitize(url) {\\n return sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\\n }\\n\\n format(name, value) {\\n if (name !== this.statics.blotName || !value) {\\n super.format(name, value);\\n } else {\\n this.domNode.setAttribute('href', this.constructor.sanitize(value));\\n }\\n }\\n}\\nLink.blotName = 'link';\\nLink.tagName = 'A';\\nLink.SANITIZED_URL = 'about:blank';\\nLink.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\\n\\nfunction sanitize(url, protocols) {\\n const anchor = document.createElement('a');\\n anchor.href = url;\\n const protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\\n return protocols.indexOf(protocol) > -1;\\n}\\n\\nexports.default = Link;\\nexports.sanitize = sanitize;\\n\\n//# sourceURL=webpack://Quill/./formats/link.js?\");\n\n/***/ }),\n\n/***/ \"./formats/list.js\":\n/*!*************************!*\\\n !*** ./formats/list.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.ListContainer = undefined;\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nvar _container = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n\\nvar _container2 = _interopRequireDefault(_container);\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass ListContainer extends _container2.default {}\\nListContainer.blotName = 'list-container';\\nListContainer.tagName = 'OL';\\n\\nclass ListItem extends _block2.default {\\n static create(value) {\\n const node = super.create();\\n node.setAttribute('data-list', value);\\n return node;\\n }\\n\\n static formats(domNode) {\\n return domNode.getAttribute('data-list') || undefined;\\n }\\n\\n static register() {\\n _quill2.default.register(ListContainer);\\n }\\n\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n const listEventHandler = e => {\\n if (e.target !== domNode) return;\\n const format = this.statics.formats(domNode, scroll);\\n if (format === 'checked') {\\n this.format('list', 'unchecked');\\n } else if (format === 'unchecked') {\\n this.format('list', 'checked');\\n }\\n };\\n domNode.addEventListener('touchstart', listEventHandler);\\n domNode.addEventListener('mousedown', listEventHandler);\\n }\\n\\n format(name, value) {\\n if (name === this.statics.blotName && value) {\\n this.domNode.setAttribute('data-list', value);\\n } else {\\n super.format(name, value);\\n }\\n }\\n}\\nListItem.blotName = 'list';\\nListItem.tagName = 'LI';\\n\\nListContainer.allowedChildren = [ListItem];\\nListItem.requiredContainer = ListContainer;\\n\\nexports.ListContainer = ListContainer;\\nexports.default = ListItem;\\n\\n//# sourceURL=webpack://Quill/./formats/list.js?\");\n\n/***/ }),\n\n/***/ \"./formats/script.js\":\n/*!***************************!*\\\n !*** ./formats/script.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _inline = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Script extends _inline2.default {\\n static create(value) {\\n if (value === 'super') {\\n return document.createElement('sup');\\n } else if (value === 'sub') {\\n return document.createElement('sub');\\n }\\n return super.create(value);\\n }\\n\\n static formats(domNode) {\\n if (domNode.tagName === 'SUB') return 'sub';\\n if (domNode.tagName === 'SUP') return 'super';\\n return undefined;\\n }\\n}\\nScript.blotName = 'script';\\nScript.tagName = ['SUB', 'SUP'];\\n\\nexports.default = Script;\\n\\n//# sourceURL=webpack://Quill/./formats/script.js?\");\n\n/***/ }),\n\n/***/ \"./formats/size.js\":\n/*!*************************!*\\\n !*** ./formats/size.js ***!\n \\*************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.SizeStyle = exports.SizeClass = undefined;\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nconst SizeClass = new _parchment.ClassAttributor('size', 'ql-size', {\\n scope: _parchment.Scope.INLINE,\\n whitelist: ['small', 'large', 'huge']\\n});\\nconst SizeStyle = new _parchment.StyleAttributor('size', 'font-size', {\\n scope: _parchment.Scope.INLINE,\\n whitelist: ['10px', '18px', '32px']\\n});\\n\\nexports.SizeClass = SizeClass;\\nexports.SizeStyle = SizeStyle;\\n\\n//# sourceURL=webpack://Quill/./formats/size.js?\");\n\n/***/ }),\n\n/***/ \"./formats/strike.js\":\n/*!***************************!*\\\n !*** ./formats/strike.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _inline = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Strike extends _inline2.default {}\\nStrike.blotName = 'strike';\\nStrike.tagName = 'S';\\n\\nexports.default = Strike;\\n\\n//# sourceURL=webpack://Quill/./formats/strike.js?\");\n\n/***/ }),\n\n/***/ \"./formats/table.js\":\n/*!**************************!*\\\n !*** ./formats/table.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.tableId = exports.TableContainer = exports.TableBody = exports.TableRow = exports.TableCell = undefined;\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _block2 = _interopRequireDefault(_block);\\n\\nvar _container = __webpack_require__(/*! ../blots/container */ \\\"./blots/container.js\\\");\\n\\nvar _container2 = _interopRequireDefault(_container);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass TableCell extends _block2.default {\\n static create(value) {\\n const node = super.create();\\n if (value) {\\n node.setAttribute('data-row', value);\\n } else {\\n node.setAttribute('data-row', tableId());\\n }\\n return node;\\n }\\n\\n static formats(domNode) {\\n if (domNode.hasAttribute('data-row')) {\\n return domNode.getAttribute('data-row');\\n }\\n return undefined;\\n }\\n\\n format(name, value) {\\n if (name === TableCell.blotName && value) {\\n this.domNode.setAttribute('data-row', value);\\n } else {\\n super.format(name, value);\\n }\\n }\\n\\n table() {\\n let cur = this.parent;\\n while (cur != null && cur.statics.blotName !== 'table-container') {\\n cur = cur.parent;\\n }\\n return cur;\\n }\\n}\\nTableCell.blotName = 'table';\\nTableCell.tagName = 'TD';\\n\\nclass TableRow extends _container2.default {\\n checkMerge() {\\n if (super.checkMerge() && this.next.children.head != null) {\\n const thisHead = this.children.head.formats();\\n const thisTail = this.children.tail.formats();\\n const nextHead = this.next.children.head.formats();\\n const nextTail = this.next.children.tail.formats();\\n return thisHead.table === thisTail.table && thisHead.table === nextHead.table && thisHead.table === nextTail.table;\\n }\\n return false;\\n }\\n\\n optimize(...args) {\\n super.optimize(...args);\\n this.children.forEach(child => {\\n if (child.next == null) return;\\n const childFormats = child.formats();\\n const nextFormats = child.next.formats();\\n if (childFormats.table !== nextFormats.table) {\\n const next = this.splitAfter(child);\\n if (next) {\\n next.optimize();\\n }\\n // We might be able to merge with prev now\\n if (this.prev) {\\n this.prev.optimize();\\n }\\n }\\n });\\n }\\n}\\nTableRow.blotName = 'table-row';\\nTableRow.tagName = 'TR';\\n\\nclass TableBody extends _container2.default {}\\nTableBody.blotName = 'table-body';\\nTableBody.tagName = 'TBODY';\\n\\nclass TableContainer extends _container2.default {\\n balanceCells() {\\n const rows = this.descendants(TableRow);\\n const maxColumns = rows.reduce((max, row) => {\\n return Math.max(row.children.length, max);\\n }, 0);\\n rows.forEach(row => {\\n new Array(maxColumns - row.children.length).fill(0).forEach(() => {\\n let value;\\n if (row.children.head != null) {\\n value = TableCell.formats(row.children.head.domNode);\\n }\\n const blot = this.scroll.create(TableCell.blotName, value);\\n row.appendChild(blot);\\n blot.optimize(); // Add break blot\\n });\\n });\\n }\\n\\n deleteColumn(index) {\\n var _descendant = this.descendant(TableBody),\\n _descendant2 = _slicedToArray(_descendant, 1);\\n\\n const body = _descendant2[0];\\n\\n if (body == null || body.children.head == null) return;\\n body.children.forEach(row => {\\n const cell = row.children.at(index);\\n if (cell != null) {\\n cell.remove();\\n }\\n });\\n }\\n\\n insertColumn(index) {\\n var _descendant3 = this.descendant(TableBody),\\n _descendant4 = _slicedToArray(_descendant3, 1);\\n\\n const body = _descendant4[0];\\n\\n if (body == null || body.children.head == null) return;\\n body.children.forEach(row => {\\n const ref = row.children.at(index);\\n const value = TableCell.formats(row.children.head.domNode);\\n const cell = this.scroll.create(TableCell.blotName, value);\\n row.insertBefore(cell, ref);\\n });\\n }\\n\\n insertRow(index) {\\n var _descendant5 = this.descendant(TableBody),\\n _descendant6 = _slicedToArray(_descendant5, 1);\\n\\n const body = _descendant6[0];\\n\\n if (body == null || body.children.head == null) return;\\n const id = tableId();\\n const row = this.scroll.create(TableRow.blotName);\\n body.children.head.children.forEach(() => {\\n const cell = this.scroll.create(TableCell.blotName, id);\\n row.appendChild(cell);\\n });\\n const ref = body.children.at(index);\\n body.insertBefore(row, ref);\\n }\\n}\\nTableContainer.blotName = 'table-container';\\nTableContainer.tagName = 'TABLE';\\n\\nTableContainer.allowedChildren = [TableBody];\\nTableBody.requiredContainer = TableContainer;\\n\\nTableBody.allowedChildren = [TableRow];\\nTableRow.requiredContainer = TableBody;\\n\\nTableRow.allowedChildren = [TableCell];\\nTableCell.requiredContainer = TableRow;\\n\\nfunction tableId() {\\n const id = Math.random().toString(36).slice(2, 6);\\n return `row-${id}`;\\n}\\n\\nexports.TableCell = TableCell;\\nexports.TableRow = TableRow;\\nexports.TableBody = TableBody;\\nexports.TableContainer = TableContainer;\\nexports.tableId = tableId;\\n\\n//# sourceURL=webpack://Quill/./formats/table.js?\");\n\n/***/ }),\n\n/***/ \"./formats/underline.js\":\n/*!******************************!*\\\n !*** ./formats/underline.js ***!\n \\******************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _inline = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Underline extends _inline2.default {}\\nUnderline.blotName = 'underline';\\nUnderline.tagName = 'U';\\n\\nexports.default = Underline;\\n\\n//# sourceURL=webpack://Quill/./formats/underline.js?\");\n\n/***/ }),\n\n/***/ \"./formats/video.js\":\n/*!**************************!*\\\n !*** ./formats/video.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _link = __webpack_require__(/*! ../formats/link */ \\\"./formats/link.js\\\");\\n\\nvar _link2 = _interopRequireDefault(_link);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst ATTRIBUTES = ['height', 'width'];\\n\\nclass Video extends _block.BlockEmbed {\\n static create(value) {\\n const node = super.create(value);\\n node.setAttribute('frameborder', '0');\\n node.setAttribute('allowfullscreen', true);\\n node.setAttribute('src', this.sanitize(value));\\n return node;\\n }\\n\\n static formats(domNode) {\\n return ATTRIBUTES.reduce((formats, attribute) => {\\n if (domNode.hasAttribute(attribute)) {\\n formats[attribute] = domNode.getAttribute(attribute);\\n }\\n return formats;\\n }, {});\\n }\\n\\n static sanitize(url) {\\n return _link2.default.sanitize(url); // eslint-disable-line import/no-named-as-default-member\\n }\\n\\n static value(domNode) {\\n return domNode.getAttribute('src');\\n }\\n\\n format(name, value) {\\n if (ATTRIBUTES.indexOf(name) > -1) {\\n if (value) {\\n this.domNode.setAttribute(name, value);\\n } else {\\n this.domNode.removeAttribute(name);\\n }\\n } else {\\n super.format(name, value);\\n }\\n }\\n\\n html() {\\n var _value = this.value();\\n\\n const video = _value.video;\\n\\n return `${video}`;\\n }\\n}\\nVideo.blotName = 'video';\\nVideo.className = 'ql-video';\\nVideo.tagName = 'IFRAME';\\n\\nexports.default = Video;\\n\\n//# sourceURL=webpack://Quill/./formats/video.js?\");\n\n/***/ }),\n\n/***/ \"./modules/clipboard.js\":\n/*!******************************!*\\\n !*** ./modules/clipboard.js ***!\n \\******************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.traverse = exports.matchText = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nvar _logger = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n\\nvar _logger2 = _interopRequireDefault(_logger);\\n\\nvar _module = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nvar _align = __webpack_require__(/*! ../formats/align */ \\\"./formats/align.js\\\");\\n\\nvar _background = __webpack_require__(/*! ../formats/background */ \\\"./formats/background.js\\\");\\n\\nvar _code = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n\\nvar _code2 = _interopRequireDefault(_code);\\n\\nvar _color = __webpack_require__(/*! ../formats/color */ \\\"./formats/color.js\\\");\\n\\nvar _direction = __webpack_require__(/*! ../formats/direction */ \\\"./formats/direction.js\\\");\\n\\nvar _font = __webpack_require__(/*! ../formats/font */ \\\"./formats/font.js\\\");\\n\\nvar _size = __webpack_require__(/*! ../formats/size */ \\\"./formats/size.js\\\");\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst debug = (0, _logger2.default)('quill:clipboard');\\n\\nconst CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['ol, ul', matchList], ['pre', matchCodeBlock], ['tr', matchTable], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\\n\\nconst ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\n\\nconst STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce((memo, attr) => {\\n memo[attr.keyName] = attr;\\n return memo;\\n}, {});\\n\\nclass Clipboard extends _module2.default {\\n constructor(quill, options) {\\n super(quill, options);\\n this.quill.root.addEventListener('copy', this.onCaptureCopy.bind(this));\\n this.quill.root.addEventListener('cut', this.onCaptureCut.bind(this));\\n this.quill.root.addEventListener('paste', this.onCapturePaste.bind(this));\\n this.matchers = [];\\n CLIPBOARD_CONFIG.concat(this.options.matchers).forEach(([selector, matcher]) => {\\n this.addMatcher(selector, matcher);\\n });\\n }\\n\\n addMatcher(selector, matcher) {\\n this.matchers.push([selector, matcher]);\\n }\\n\\n convert({ html, text }) {\\n const formats = this.quill.getFormat(this.quill.selection.savedRange.index);\\n if (formats[_code2.default.blotName]) {\\n return new _quillDelta2.default().insert(text, {\\n [_code2.default.blotName]: formats[_code2.default.blotName]\\n });\\n } else if (!html) {\\n return new _quillDelta2.default().insert(text || '');\\n }\\n const container = this.quill.root.ownerDocument.createElement('div');\\n container.innerHTML = html.replace(/>\\\\r?\\\\n +<'); // Remove spaces between tags\\n const nodeMatches = new WeakMap();\\n\\n var _prepareMatching = this.prepareMatching(container, nodeMatches),\\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2);\\n\\n const elementMatchers = _prepareMatching2[0],\\n textMatchers = _prepareMatching2[1];\\n\\n const delta = traverse(this.quill.scroll, container, elementMatchers, textMatchers, nodeMatches);\\n // Remove trailing newline\\n if (deltaEndsWith(delta, '\\\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\\n }\\n return delta;\\n }\\n\\n dangerouslyPasteHTML(index, html, source = _quill2.default.sources.API) {\\n if (typeof index === 'string') {\\n const delta = this.convert({ html: index, text: '' });\\n this.quill.setContents(delta, html);\\n this.quill.setSelection(0, _quill2.default.sources.SILENT);\\n } else {\\n const paste = this.convert({ html, text: '' });\\n this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\\n this.quill.setSelection(index + paste.length(), _quill2.default.sources.SILENT);\\n }\\n }\\n\\n onCaptureCopy(e) {\\n if (e.defaultPrevented) return;\\n this.quill.update();\\n\\n var _quill$selection$getR = this.quill.selection.getRange(),\\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1);\\n\\n const range = _quill$selection$getR2[0];\\n\\n if (range) {\\n this.onCopy(e, range);\\n e.preventDefault();\\n }\\n }\\n\\n onCaptureCut(e) {\\n if (e.defaultPrevented) return;\\n this.quill.update();\\n\\n var _quill$selection$getR3 = this.quill.selection.getRange(),\\n _quill$selection$getR4 = _slicedToArray(_quill$selection$getR3, 1);\\n\\n const range = _quill$selection$getR4[0];\\n\\n if (range) {\\n this.onCopy(e, range);\\n this.quill.deleteText(range, _quill2.default.sources.USER);\\n e.preventDefault();\\n }\\n }\\n\\n onCapturePaste(e) {\\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\\n const range = this.quill.getSelection(true);\\n const files = Array.from(e.clipboardData.files || []);\\n if (files.length > 0) {\\n this.quill.uploader.upload(range, files);\\n } else {\\n this.onPaste(e, range);\\n }\\n e.preventDefault();\\n }\\n\\n onCopy(e, range) {\\n const text = this.quill.getText(range);\\n const html = this.quill.getSemanticHTML(range);\\n e.clipboardData.setData('text/plain', text);\\n e.clipboardData.setData('text/html', html);\\n }\\n\\n onPaste(e, range) {\\n const html = e.clipboardData.getData('text/html');\\n const text = e.clipboardData.getData('text/plain');\\n const pastedDelta = this.convert({ text, html });\\n debug.log('onPaste', pastedDelta, { text, html });\\n const delta = new _quillDelta2.default().retain(range.index).delete(range.length).concat(pastedDelta);\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n // range.length contributes to delta.length()\\n this.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n\\n prepareMatching(container, nodeMatches) {\\n const elementMatchers = [];\\n const textMatchers = [];\\n this.matchers.forEach(pair => {\\n var _pair = _slicedToArray(pair, 2);\\n\\n const selector = _pair[0],\\n matcher = _pair[1];\\n\\n switch (selector) {\\n case Node.TEXT_NODE:\\n textMatchers.push(matcher);\\n break;\\n case Node.ELEMENT_NODE:\\n elementMatchers.push(matcher);\\n break;\\n default:\\n Array.from(container.querySelectorAll(selector)).forEach(node => {\\n if (nodeMatches.has(node)) {\\n const matches = nodeMatches.get(node);\\n matches.push(matcher);\\n } else {\\n nodeMatches.set(node, [matcher]);\\n }\\n });\\n break;\\n }\\n });\\n return [elementMatchers, textMatchers];\\n }\\n}\\nClipboard.DEFAULTS = {\\n matchers: []\\n};\\n\\nfunction applyFormat(delta, format, value) {\\n if (typeof format === 'object') {\\n return Object.keys(format).reduce((newDelta, key) => {\\n return applyFormat(newDelta, key, format[key]);\\n }, delta);\\n }\\n return delta.reduce((newDelta, op) => {\\n if (op.attributes && op.attributes[format]) {\\n return newDelta.push(op);\\n }\\n return newDelta.insert(op.insert, (0, _extend2.default)({}, { [format]: value }, op.attributes));\\n }, new _quillDelta2.default());\\n}\\n\\nfunction deltaEndsWith(delta, text) {\\n let endText = '';\\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i // eslint-disable-line no-plusplus\\n ) {\\n const op = delta.ops[i];\\n if (typeof op.insert !== 'string') break;\\n endText = op.insert + endText;\\n }\\n return endText.slice(-1 * text.length) === text;\\n}\\n\\nfunction isLine(node) {\\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\\n return ['address', 'article', 'blockquote', 'canvas', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'iframe', 'li', 'main', 'nav', 'ol', 'output', 'p', 'pre', 'section', 'table', 'td', 'tr', 'ul', 'video'].includes(node.tagName.toLowerCase());\\n}\\n\\nconst preNodes = new WeakMap();\\nfunction isPre(node) {\\n if (node == null) return false;\\n if (!preNodes.has(node)) {\\n if (node.tagName === 'PRE') {\\n preNodes.set(node, true);\\n } else {\\n preNodes.set(node, isPre(node.parentNode));\\n }\\n }\\n return preNodes.get(node);\\n}\\n\\nfunction traverse(scroll, node, elementMatchers, textMatchers, nodeMatches) {\\n // Post-order\\n if (node.nodeType === node.TEXT_NODE) {\\n return textMatchers.reduce((delta, matcher) => {\\n return matcher(node, delta, scroll);\\n }, new _quillDelta2.default());\\n } else if (node.nodeType === node.ELEMENT_NODE) {\\n return Array.from(node.childNodes || []).reduce((delta, childNode) => {\\n let childrenDelta = traverse(scroll, childNode, elementMatchers, textMatchers, nodeMatches);\\n if (childNode.nodeType === node.ELEMENT_NODE) {\\n childrenDelta = elementMatchers.reduce((reducedDelta, matcher) => {\\n return matcher(childNode, reducedDelta, scroll);\\n }, childrenDelta);\\n childrenDelta = (nodeMatches.get(childNode) || []).reduce((reducedDelta, matcher) => {\\n return matcher(childNode, reducedDelta, scroll);\\n }, childrenDelta);\\n }\\n return delta.concat(childrenDelta);\\n }, new _quillDelta2.default());\\n }\\n return new _quillDelta2.default();\\n}\\n\\nfunction matchAlias(format, node, delta) {\\n return applyFormat(delta, format, true);\\n}\\n\\nfunction matchAttributor(node, delta, scroll) {\\n const attributes = _parchment.Attributor.keys(node);\\n const classes = _parchment.ClassAttributor.keys(node);\\n const styles = _parchment.StyleAttributor.keys(node);\\n const formats = {};\\n attributes.concat(classes).concat(styles).forEach(name => {\\n let attr = scroll.query(name, _parchment.Scope.ATTRIBUTE);\\n if (attr != null) {\\n formats[attr.attrName] = attr.value(node);\\n if (formats[attr.attrName]) return;\\n }\\n attr = ATTRIBUTE_ATTRIBUTORS[name];\\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\\n formats[attr.attrName] = attr.value(node) || undefined;\\n }\\n attr = STYLE_ATTRIBUTORS[name];\\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\\n attr = STYLE_ATTRIBUTORS[name];\\n formats[attr.attrName] = attr.value(node) || undefined;\\n }\\n });\\n if (Object.keys(formats).length > 0) {\\n return applyFormat(delta, formats);\\n }\\n return delta;\\n}\\n\\nfunction matchBlot(node, delta, scroll) {\\n const match = scroll.query(node);\\n if (match == null) return delta;\\n if (match.prototype instanceof _parchment.EmbedBlot) {\\n const embed = {};\\n const value = match.value(node);\\n if (value != null) {\\n embed[match.blotName] = value;\\n return new _quillDelta2.default().insert(embed, match.formats(node, scroll));\\n }\\n } else if (typeof match.formats === 'function') {\\n return applyFormat(delta, match.blotName, match.formats(node, scroll));\\n }\\n return delta;\\n}\\n\\nfunction matchBreak(node, delta) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n delta.insert('\\\\n');\\n }\\n return delta;\\n}\\n\\nfunction matchCodeBlock(node, delta, scroll) {\\n const match = scroll.query('code-block');\\n const language = match ? match.formats(node, scroll) : true;\\n return applyFormat(delta, 'code-block', language);\\n}\\n\\nfunction matchIgnore() {\\n return new _quillDelta2.default();\\n}\\n\\nfunction matchIndent(node, delta, scroll) {\\n const match = scroll.query(node);\\n if (match == null || match.blotName !== 'list' || !deltaEndsWith(delta, '\\\\n')) {\\n return delta;\\n }\\n let indent = -1;\\n let parent = node.parentNode;\\n while (parent != null) {\\n if (['OL', 'UL'].includes(parent.tagName)) {\\n indent += 1;\\n }\\n parent = parent.parentNode;\\n }\\n if (indent <= 0) return delta;\\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent }));\\n}\\n\\nfunction matchList(node, delta) {\\n const list = node.tagName === 'OL' ? 'ordered' : 'bullet';\\n return applyFormat(delta, 'list', list);\\n}\\n\\nfunction matchNewline(node, delta) {\\n if (!deltaEndsWith(delta, '\\\\n')) {\\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\\n delta.insert('\\\\n');\\n }\\n }\\n return delta;\\n}\\n\\nfunction matchStyles(node, delta) {\\n const formats = {};\\n const style = node.style || {};\\n if (style.fontStyle === 'italic') {\\n formats.italic = true;\\n }\\n if (style.fontWeight.startsWith('bold') || parseInt(style.fontWeight, 10) >= 700) {\\n formats.bold = true;\\n }\\n if (Object.keys(formats).length > 0) {\\n delta = applyFormat(delta, formats);\\n }\\n if (parseFloat(style.textIndent || 0) > 0) {\\n // Could be 0.5in\\n return new _quillDelta2.default().insert('\\\\t').concat(delta);\\n }\\n return delta;\\n}\\n\\nfunction matchTable(node, delta) {\\n const table = node.parentNode.tagName === 'TABLE' ? node.parentNode : node.parentNode.parentNode;\\n const rows = Array.from(table.querySelectorAll('tr'));\\n const row = rows.indexOf(node) + 1;\\n return applyFormat(delta, 'table', row);\\n}\\n\\nfunction matchText(node, delta) {\\n let text = node.data;\\n // Word represents empty line with  \\n if (node.parentNode.tagName === 'O:P') {\\n return delta.insert(text.trim());\\n }\\n if (text.trim().length === 0 && node.parentNode == null) {\\n return delta;\\n }\\n if (!isPre(node)) {\\n const replacer = (collapse, match) => {\\n const replaced = match.replace(/[^\\\\u00a0]/g, ''); // \\\\u00a0 is nbsp;\\n return replaced.length < 1 && collapse ? ' ' : replaced;\\n };\\n text = text.replace(/\\\\r\\\\n/g, ' ').replace(/\\\\n/g, ' ');\\n text = text.replace(/\\\\s\\\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\\n text = text.replace(/^\\\\s+/, replacer.bind(replacer, false));\\n }\\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\\n text = text.replace(/\\\\s+$/, replacer.bind(replacer, false));\\n }\\n }\\n return delta.insert(text);\\n}\\n\\nexports.default = Clipboard;\\nexports.matchAttributor = matchAttributor;\\nexports.matchBlot = matchBlot;\\nexports.matchNewline = matchNewline;\\nexports.matchText = matchText;\\nexports.traverse = traverse;\\n\\n//# sourceURL=webpack://Quill/./modules/clipboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/history.js\":\n/*!****************************!*\\\n !*** ./modules/history.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.getLastChangeIndex = exports.default = undefined;\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nvar _module = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass History extends _module2.default {\\n constructor(quill, options) {\\n super(quill, options);\\n this.lastRecorded = 0;\\n this.ignoreChange = false;\\n this.clear();\\n this.quill.on(_quill2.default.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\\n if (eventName !== _quill2.default.events.TEXT_CHANGE || this.ignoreChange) return;\\n if (!this.options.userOnly || source === _quill2.default.sources.USER) {\\n this.record(delta, oldDelta);\\n } else {\\n this.transform(delta);\\n }\\n });\\n this.quill.keyboard.addBinding({ key: 'z', shortKey: true }, this.undo.bind(this));\\n this.quill.keyboard.addBinding({ key: 'z', shortKey: true, shiftKey: true }, this.redo.bind(this));\\n if (/Win/i.test(navigator.platform)) {\\n this.quill.keyboard.addBinding({ key: 'y', shortKey: true }, this.redo.bind(this));\\n }\\n }\\n\\n change(source, dest) {\\n if (this.stack[source].length === 0) return;\\n const delta = this.stack[source].pop();\\n this.stack[dest].push(delta);\\n this.lastRecorded = 0;\\n this.ignoreChange = true;\\n this.quill.updateContents(delta[source], _quill2.default.sources.USER);\\n this.ignoreChange = false;\\n const index = getLastChangeIndex(this.quill.scroll, delta[source]);\\n this.quill.setSelection(index);\\n }\\n\\n clear() {\\n this.stack = { undo: [], redo: [] };\\n }\\n\\n cutoff() {\\n this.lastRecorded = 0;\\n }\\n\\n record(changeDelta, oldDelta) {\\n if (changeDelta.ops.length === 0) return;\\n this.stack.redo = [];\\n let undoDelta = this.quill.getContents().diff(oldDelta);\\n const timestamp = Date.now();\\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\\n const delta = this.stack.undo.pop();\\n undoDelta = undoDelta.compose(delta.undo);\\n changeDelta = delta.redo.compose(changeDelta);\\n } else {\\n this.lastRecorded = timestamp;\\n }\\n this.stack.undo.push({\\n redo: changeDelta,\\n undo: undoDelta\\n });\\n if (this.stack.undo.length > this.options.maxStack) {\\n this.stack.undo.shift();\\n }\\n }\\n\\n redo() {\\n this.change('redo', 'undo');\\n }\\n\\n transform(delta) {\\n this.stack.undo.forEach(change => {\\n change.undo = delta.transform(change.undo, true);\\n change.redo = delta.transform(change.redo, true);\\n });\\n this.stack.redo.forEach(change => {\\n change.undo = delta.transform(change.undo, true);\\n change.redo = delta.transform(change.redo, true);\\n });\\n }\\n\\n undo() {\\n this.change('undo', 'redo');\\n }\\n}\\nHistory.DEFAULTS = {\\n delay: 1000,\\n maxStack: 100,\\n userOnly: false\\n};\\n\\nfunction endsWithNewlineChange(scroll, delta) {\\n const lastOp = delta.ops[delta.ops.length - 1];\\n if (lastOp == null) return false;\\n if (lastOp.insert != null) {\\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\\\n');\\n }\\n if (lastOp.attributes != null) {\\n return Object.keys(lastOp.attributes).some(attr => {\\n return scroll.query(attr, _parchment.Scope.BLOCK) != null;\\n });\\n }\\n return false;\\n}\\n\\nfunction getLastChangeIndex(scroll, delta) {\\n const deleteLength = delta.reduce((length, op) => {\\n return length + (op.delete || 0);\\n }, 0);\\n let changeIndex = delta.length() - deleteLength;\\n if (endsWithNewlineChange(scroll, delta)) {\\n changeIndex -= 1;\\n }\\n return changeIndex;\\n}\\n\\nexports.default = History;\\nexports.getLastChangeIndex = getLastChangeIndex;\\n\\n//# sourceURL=webpack://Quill/./modules/history.js?\");\n\n/***/ }),\n\n/***/ \"./modules/keyboard.js\":\n/*!*****************************!*\\\n !*** ./modules/keyboard.js ***!\n \\*****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.normalize = exports.SHORTKEY = exports.default = undefined;\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _clone = __webpack_require__(/*! clone */ \\\"./node_modules/clone/clone.js\\\");\\n\\nvar _clone2 = _interopRequireDefault(_clone);\\n\\nvar _deepEqual = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\n\\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _op = __webpack_require__(/*! quill-delta/lib/op */ \\\"./node_modules/quill-delta/lib/op.js\\\");\\n\\nvar _op2 = _interopRequireDefault(_op);\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nvar _logger = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n\\nvar _logger2 = _interopRequireDefault(_logger);\\n\\nvar _module = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst debug = (0, _logger2.default)('quill:keyboard');\\n\\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\\n\\nclass Keyboard extends _module2.default {\\n static match(evt, binding) {\\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(key => {\\n return !!binding[key] !== evt[key] && binding[key] !== null;\\n })) {\\n return false;\\n }\\n return binding.key === evt.key || binding.key === evt.which;\\n }\\n\\n constructor(quill, options) {\\n super(quill, options);\\n this.bindings = {};\\n Object.keys(this.options.bindings).forEach(name => {\\n if (this.options.bindings[name]) {\\n this.addBinding(this.options.bindings[name]);\\n }\\n });\\n this.addBinding({ key: 'Enter', shiftKey: null }, handleEnter);\\n this.addBinding({ key: 'Enter', metaKey: null, ctrlKey: null, altKey: null }, () => {});\\n if (/Firefox/i.test(navigator.userAgent)) {\\n // Need to handle delete and backspace for Firefox in the general case #1171\\n this.addBinding({ key: 'Backspace' }, { collapsed: true }, handleBackspace);\\n this.addBinding({ key: 'Delete' }, { collapsed: true }, handleDelete);\\n } else {\\n this.addBinding({ key: 'Backspace' }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\\n this.addBinding({ key: 'Delete' }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\\n }\\n this.addBinding({ key: 'Backspace' }, { collapsed: false }, handleDeleteRange);\\n this.addBinding({ key: 'Delete' }, { collapsed: false }, handleDeleteRange);\\n this.addBinding({\\n key: 'Backspace',\\n altKey: null,\\n ctrlKey: null,\\n metaKey: null,\\n shiftKey: null\\n }, { collapsed: true, offset: 0 }, handleBackspace);\\n this.listen();\\n }\\n\\n addBinding(keyBinding, context = {}, handler = {}) {\\n const binding = normalize(keyBinding);\\n if (binding == null) {\\n debug.warn('Attempted to add invalid keyboard binding', binding);\\n return;\\n }\\n if (typeof context === 'function') {\\n context = { handler: context };\\n }\\n if (typeof handler === 'function') {\\n handler = { handler };\\n }\\n const keys = Array.isArray(binding.key) ? binding.key : [binding.key];\\n keys.forEach(key => {\\n const singleBinding = (0, _extend2.default)({}, binding, { key }, context, handler);\\n this.bindings[singleBinding.key] = this.bindings[singleBinding.key] || [];\\n this.bindings[singleBinding.key].push(singleBinding);\\n });\\n }\\n\\n listen() {\\n this.quill.root.addEventListener('keydown', evt => {\\n if (evt.defaultPrevented) return;\\n const bindings = (this.bindings[evt.key] || []).concat(this.bindings[evt.which] || []);\\n const matches = bindings.filter(binding => Keyboard.match(evt, binding));\\n if (matches.length === 0) return;\\n const range = this.quill.getSelection();\\n if (range == null || !this.quill.hasFocus()) return;\\n\\n var _quill$getLine = this.quill.getLine(range.index),\\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2);\\n\\n const line = _quill$getLine2[0],\\n offset = _quill$getLine2[1];\\n\\n var _quill$getLeaf = this.quill.getLeaf(range.index),\\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2);\\n\\n const leafStart = _quill$getLeaf2[0],\\n offsetStart = _quill$getLeaf2[1];\\n\\n var _ref = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length),\\n _ref2 = _slicedToArray(_ref, 2);\\n\\n const leafEnd = _ref2[0],\\n offsetEnd = _ref2[1];\\n\\n const prefixText = leafStart instanceof _parchment.TextBlot ? leafStart.value().slice(0, offsetStart) : '';\\n const suffixText = leafEnd instanceof _parchment.TextBlot ? leafEnd.value().slice(offsetEnd) : '';\\n const curContext = {\\n collapsed: range.length === 0,\\n empty: range.length === 0 && line.length() <= 1,\\n format: this.quill.getFormat(range),\\n line,\\n offset,\\n prefix: prefixText,\\n suffix: suffixText,\\n event: evt\\n };\\n const prevented = matches.some(binding => {\\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) {\\n return false;\\n }\\n if (binding.empty != null && binding.empty !== curContext.empty) {\\n return false;\\n }\\n if (binding.offset != null && binding.offset !== curContext.offset) {\\n return false;\\n }\\n if (Array.isArray(binding.format)) {\\n // any format is present\\n if (binding.format.every(name => curContext.format[name] == null)) {\\n return false;\\n }\\n } else if (typeof binding.format === 'object') {\\n // all formats must match\\n if (!Object.keys(binding.format).every(name => {\\n if (binding.format[name] === true) return curContext.format[name] != null;\\n if (binding.format[name] === false) return curContext.format[name] == null;\\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\\n })) {\\n return false;\\n }\\n }\\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) {\\n return false;\\n }\\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) {\\n return false;\\n }\\n return binding.handler.call(this, range, curContext, binding) !== true;\\n });\\n if (prevented) {\\n evt.preventDefault();\\n }\\n });\\n }\\n}\\n\\nKeyboard.DEFAULTS = {\\n bindings: {\\n bold: makeFormatHandler('bold'),\\n italic: makeFormatHandler('italic'),\\n underline: makeFormatHandler('underline'),\\n indent: {\\n // highlight tab or tab at beginning of list, indent or blockquote\\n key: 'Tab',\\n format: ['blockquote', 'indent', 'list'],\\n handler(range, context) {\\n if (context.collapsed && context.offset !== 0) return true;\\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\\n return false;\\n }\\n },\\n outdent: {\\n key: 'Tab',\\n shiftKey: true,\\n format: ['blockquote', 'indent', 'list'],\\n // highlight tab or tab at beginning of list, indent or blockquote\\n handler(range, context) {\\n if (context.collapsed && context.offset !== 0) return true;\\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\\n return false;\\n }\\n },\\n 'outdent backspace': {\\n key: 'Backspace',\\n collapsed: true,\\n shiftKey: null,\\n metaKey: null,\\n ctrlKey: null,\\n altKey: null,\\n format: ['indent', 'list'],\\n offset: 0,\\n handler(range, context) {\\n if (context.format.indent != null) {\\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\\n } else if (context.format.list != null) {\\n this.quill.format('list', false, _quill2.default.sources.USER);\\n }\\n }\\n },\\n 'indent code-block': makeCodeBlockHandler(true),\\n 'outdent code-block': makeCodeBlockHandler(false),\\n 'remove tab': {\\n key: 'Tab',\\n shiftKey: true,\\n collapsed: true,\\n prefix: /\\\\t$/,\\n handler(range) {\\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\\n }\\n },\\n tab: {\\n key: 'Tab',\\n handler(range, context) {\\n if (context.format.table) return true;\\n this.quill.history.cutoff();\\n const delta = new _quillDelta2.default().retain(range.index).delete(range.length).insert('\\\\t');\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\\n return false;\\n }\\n },\\n 'blockquote empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['blockquote'],\\n empty: true,\\n handler() {\\n this.quill.format('blockquote', false, _quill2.default.sources.USER);\\n }\\n },\\n 'list empty enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['list'],\\n empty: true,\\n handler(range, context) {\\n this.quill.format('list', false, _quill2.default.sources.USER);\\n if (context.format.indent) {\\n this.quill.format('indent', false, _quill2.default.sources.USER);\\n }\\n }\\n },\\n 'checklist enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: { list: 'checked' },\\n handler(range) {\\n var _quill$getLine3 = this.quill.getLine(range.index),\\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2);\\n\\n const line = _quill$getLine4[0],\\n offset = _quill$getLine4[1];\\n\\n const formats = (0, _extend2.default)({}, line.formats(), { list: 'checked' });\\n const delta = new _quillDelta2.default().retain(range.index).insert('\\\\n', formats).retain(line.length() - offset - 1).retain(1, { list: 'unchecked' });\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n },\\n 'header enter': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['header'],\\n suffix: /^$/,\\n handler(range, context) {\\n var _quill$getLine5 = this.quill.getLine(range.index),\\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2);\\n\\n const line = _quill$getLine6[0],\\n offset = _quill$getLine6[1];\\n\\n const delta = new _quillDelta2.default().retain(range.index).insert('\\\\n', context.format).retain(line.length() - offset - 1).retain(1, { header: null });\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\\n this.quill.scrollIntoView();\\n }\\n },\\n 'table backspace': {\\n key: 'Backspace',\\n format: ['table'],\\n collapsed: true,\\n offset: 0,\\n handler() {}\\n },\\n 'table delete': {\\n key: 'Delete',\\n format: ['table'],\\n collapsed: true,\\n suffix: /^$/,\\n handler() {}\\n },\\n 'table enter': {\\n key: 'Enter',\\n shiftKey: null,\\n format: ['table'],\\n handler(range) {\\n const module = this.quill.getModule('table');\\n if (module) {\\n var _module$getTable = module.getTable(range),\\n _module$getTable2 = _slicedToArray(_module$getTable, 4);\\n\\n const table = _module$getTable2[0],\\n row = _module$getTable2[1],\\n cell = _module$getTable2[2],\\n offset = _module$getTable2[3];\\n\\n const shift = tableSide(table, row, cell, offset);\\n if (shift == null) return;\\n let index = table.offset();\\n if (shift < 0) {\\n const delta = new _quillDelta2.default().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.setSelection(range.index + 1, range.length, _quill2.default.sources.SILENT);\\n } else if (shift > 0) {\\n index += table.length();\\n const delta = new _quillDelta2.default().retain(index).insert('\\\\n');\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.setSelection(index, _quill2.default.sources.USER);\\n }\\n }\\n }\\n },\\n 'table tab': {\\n key: 'Tab',\\n shiftKey: null,\\n format: ['table'],\\n handler(range, context) {\\n const event = context.event,\\n cell = context.line;\\n\\n const offset = cell.offset(this.quill.scroll);\\n if (event.shiftKey) {\\n this.quill.setSelection(offset - 1, _quill2.default.sources.USER);\\n } else {\\n this.quill.setSelection(offset + cell.length(), _quill2.default.sources.USER);\\n }\\n }\\n },\\n 'list autofill': {\\n key: ' ',\\n collapsed: true,\\n format: {\\n list: false,\\n 'code-block': false,\\n blockquote: false,\\n header: false,\\n table: false\\n },\\n prefix: /^\\\\s*?(\\\\d+\\\\.|-|\\\\*|\\\\[ ?\\\\]|\\\\[x\\\\])$/,\\n handler(range, context) {\\n if (this.quill.scroll.query('list') == null) return true;\\n const length = context.prefix.length;\\n\\n var _quill$getLine7 = this.quill.getLine(range.index),\\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2);\\n\\n const line = _quill$getLine8[0],\\n offset = _quill$getLine8[1];\\n\\n if (offset > length) return true;\\n let value;\\n switch (context.prefix.trim()) {\\n case '[]':\\n case '[ ]':\\n value = 'unchecked';\\n break;\\n case '[x]':\\n value = 'checked';\\n break;\\n case '-':\\n case '*':\\n value = 'bullet';\\n break;\\n default:\\n value = 'ordered';\\n }\\n this.quill.insertText(range.index, ' ', _quill2.default.sources.USER);\\n this.quill.history.cutoff();\\n const delta = new _quillDelta2.default().retain(range.index - offset).delete(length + 1).retain(line.length() - 2 - offset).retain(1, { list: value });\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.history.cutoff();\\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\\n return false;\\n }\\n },\\n 'code exit': {\\n key: 'Enter',\\n collapsed: true,\\n format: ['code-block'],\\n prefix: /^$/,\\n suffix: /^\\\\s*$/,\\n handler(range) {\\n var _quill$getLine9 = this.quill.getLine(range.index),\\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2);\\n\\n const line = _quill$getLine10[0],\\n offset = _quill$getLine10[1];\\n\\n let numLines = 2;\\n let cur = line;\\n while (cur != null && cur.length() <= 1 && cur.formats()['code-block']) {\\n cur = cur.prev;\\n numLines -= 1;\\n // Requisite prev lines are empty\\n if (numLines <= 0) {\\n const delta = new _quillDelta2.default().retain(range.index + line.length() - offset - 2).retain(1, { 'code-block': null }).delete(1);\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.setSelection(range.index - 1, _quill2.default.sources.SILENT);\\n return false;\\n }\\n }\\n return true;\\n }\\n },\\n 'embed left': makeEmbedArrowHandler('ArrowLeft', false),\\n 'embed left shift': makeEmbedArrowHandler('ArrowLeft', true),\\n 'embed right': makeEmbedArrowHandler('ArrowRight', false),\\n 'embed right shift': makeEmbedArrowHandler('ArrowRight', true),\\n 'table down': makeTableArrowHandler(false),\\n 'table up': makeTableArrowHandler(true)\\n }\\n};\\n\\nfunction handleBackspace(range, context) {\\n if (range.index === 0 || this.quill.getLength() <= 1) return;\\n\\n var _quill$getLine11 = this.quill.getLine(range.index),\\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1);\\n\\n const line = _quill$getLine12[0];\\n\\n let formats = {};\\n if (context.offset === 0) {\\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1);\\n\\n const prev = _quill$getLine14[0];\\n\\n if (prev != null) {\\n if (prev.length() > 1 || prev.statics.blotName === 'table') {\\n const curFormats = line.formats();\\n const prevFormats = this.quill.getFormat(range.index - 1, 1);\\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\\n }\\n }\\n }\\n // Check for astral symbols\\n const length = /[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]$/.test(context.prefix) ? 2 : 1;\\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\\n if (Object.keys(formats).length > 0) {\\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\\n }\\n this.quill.focus();\\n}\\n\\nfunction handleDelete(range, context) {\\n // Check for astral symbols\\n const length = /^[\\\\uD800-\\\\uDBFF][\\\\uDC00-\\\\uDFFF]/.test(context.suffix) ? 2 : 1;\\n if (range.index >= this.quill.getLength() - length) return;\\n let formats = {};\\n let nextLength = 0;\\n\\n var _quill$getLine15 = this.quill.getLine(range.index),\\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1);\\n\\n const line = _quill$getLine16[0];\\n\\n if (context.offset >= line.length() - 1) {\\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1);\\n\\n const next = _quill$getLine18[0];\\n\\n if (next) {\\n const curFormats = line.formats();\\n const nextFormats = this.quill.getFormat(range.index, 1);\\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\\n nextLength = next.length();\\n }\\n }\\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\\n if (Object.keys(formats).length > 0) {\\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\\n }\\n}\\n\\nfunction handleDeleteRange(range) {\\n const lines = this.quill.getLines(range);\\n let formats = {};\\n if (lines.length > 1) {\\n const firstFormats = lines[0].formats();\\n const lastFormats = lines[lines.length - 1].formats();\\n formats = _op2.default.attributes.diff(lastFormats, firstFormats) || {};\\n }\\n this.quill.deleteText(range, _quill2.default.sources.USER);\\n if (Object.keys(formats).length > 0) {\\n this.quill.formatLine(range.index, 1, formats, _quill2.default.sources.USER);\\n }\\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\\n this.quill.focus();\\n}\\n\\n// TODO use just updateContents()\\nfunction handleEnter(range, context) {\\n if (range.length > 0) {\\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\\n }\\n const lineFormats = Object.keys(context.format).reduce((formats, format) => {\\n if (this.quill.scroll.query(format, _parchment.Scope.BLOCK) && !Array.isArray(context.format[format])) {\\n formats[format] = context.format[format];\\n }\\n return formats;\\n }, {});\\n this.quill.insertText(range.index, '\\\\n', lineFormats, _quill2.default.sources.USER);\\n // Earlier scroll.deleteAt might have messed up our selection,\\n // so insertText's built in selection preservation is not reliable\\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\\n this.quill.focus();\\n Object.keys(context.format).forEach(name => {\\n if (lineFormats[name] != null) return;\\n if (Array.isArray(context.format[name])) return;\\n if (name === 'link') return;\\n this.quill.format(name, context.format[name], _quill2.default.sources.USER);\\n });\\n}\\n\\nfunction makeCodeBlockHandler(indent) {\\n return {\\n key: 'Tab',\\n shiftKey: !indent,\\n format: { 'code-block': true },\\n handler(range) {\\n const CodeBlock = this.quill.scroll.query('code-block');\\n const lines = range.length === 0 ? this.quill.getLines(range.index, 1) : this.quill.getLines(range);\\n let index = range.index,\\n length = range.length;\\n\\n lines.forEach((line, i) => {\\n if (indent) {\\n line.insertAt(0, CodeBlock.TAB);\\n if (i === 0) {\\n index += CodeBlock.TAB.length;\\n } else {\\n length += CodeBlock.TAB.length;\\n }\\n } else if (line.domNode.textContent.startsWith(CodeBlock.TAB)) {\\n line.deleteAt(0, CodeBlock.TAB.length);\\n if (i === 0) {\\n index -= CodeBlock.TAB.length;\\n } else {\\n length -= CodeBlock.TAB.length;\\n }\\n }\\n });\\n this.quill.update(_quill2.default.sources.USER);\\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\\n }\\n };\\n}\\n\\nfunction makeEmbedArrowHandler(key, shiftKey) {\\n const where = key === 'ArrowLeft' ? 'prefix' : 'suffix';\\n return {\\n key,\\n shiftKey,\\n altKey: null,\\n [where]: /^$/,\\n handler(range) {\\n let index = range.index;\\n\\n if (key === 'ArrowRight') {\\n index += range.length + 1;\\n }\\n\\n var _quill$getLeaf3 = this.quill.getLeaf(index),\\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1);\\n\\n const leaf = _quill$getLeaf4[0];\\n\\n if (!(leaf instanceof _parchment.EmbedBlot)) return true;\\n if (key === 'ArrowLeft') {\\n if (shiftKey) {\\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2.default.sources.USER);\\n } else {\\n this.quill.setSelection(range.index - 1, _quill2.default.sources.USER);\\n }\\n } else if (shiftKey) {\\n this.quill.setSelection(range.index, range.length + 1, _quill2.default.sources.USER);\\n } else {\\n this.quill.setSelection(range.index + range.length + 1, _quill2.default.sources.USER);\\n }\\n return false;\\n }\\n };\\n}\\n\\nfunction makeFormatHandler(format) {\\n return {\\n key: format[0],\\n shortKey: true,\\n handler(range, context) {\\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\\n }\\n };\\n}\\n\\nfunction makeTableArrowHandler(up) {\\n return {\\n key: up ? 'ArrowUp' : 'ArrowDown',\\n collapsed: true,\\n format: ['table'],\\n handler(range, context) {\\n // TODO move to table module\\n const key = up ? 'prev' : 'next';\\n const cell = context.line;\\n const targetRow = cell.parent[key];\\n if (targetRow != null) {\\n if (targetRow.statics.blotName === 'table-row') {\\n let targetCell = targetRow.children.head;\\n let cur = cell;\\n while (cur.prev != null) {\\n cur = cur.prev;\\n targetCell = targetCell.next;\\n }\\n const index = targetCell.offset(this.quill.scroll) + Math.min(context.offset, targetCell.length() - 1);\\n this.quill.setSelection(index, 0, _quill2.default.sources.USER);\\n }\\n } else {\\n const targetLine = cell.table()[key];\\n if (targetLine != null) {\\n if (up) {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll) + targetLine.length() - 1, 0, _quill2.default.sources.USER);\\n } else {\\n this.quill.setSelection(targetLine.offset(this.quill.scroll), 0, _quill2.default.sources.USER);\\n }\\n }\\n }\\n return false;\\n }\\n };\\n}\\n\\nfunction normalize(binding) {\\n if (typeof binding === 'string' || typeof binding === 'number') {\\n binding = { key: binding };\\n } else if (typeof binding === 'object') {\\n binding = (0, _clone2.default)(binding, false);\\n } else {\\n return null;\\n }\\n if (binding.shortKey) {\\n binding[SHORTKEY] = binding.shortKey;\\n delete binding.shortKey;\\n }\\n return binding;\\n}\\n\\nfunction tableSide(table, row, cell, offset) {\\n if (row.prev == null && row.next == null) {\\n if (cell.prev == null && cell.next == null) {\\n return offset === 0 ? -1 : 1;\\n }\\n return cell.prev == null ? -1 : 1;\\n } else if (row.prev == null) {\\n return -1;\\n } else if (row.next == null) {\\n return 1;\\n }\\n return null;\\n}\\n\\nexports.default = Keyboard;\\nexports.SHORTKEY = SHORTKEY;\\nexports.normalize = normalize;\\n\\n//# sourceURL=webpack://Quill/./modules/keyboard.js?\");\n\n/***/ }),\n\n/***/ \"./modules/syntax.js\":\n/*!***************************!*\\\n !*** ./modules/syntax.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _inline = __webpack_require__(/*! ../blots/inline */ \\\"./blots/inline.js\\\");\\n\\nvar _inline2 = _interopRequireDefault(_inline);\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nvar _module = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nvar _block = __webpack_require__(/*! ../blots/block */ \\\"./blots/block.js\\\");\\n\\nvar _break = __webpack_require__(/*! ../blots/break */ \\\"./blots/break.js\\\");\\n\\nvar _break2 = _interopRequireDefault(_break);\\n\\nvar _cursor = __webpack_require__(/*! ../blots/cursor */ \\\"./blots/cursor.js\\\");\\n\\nvar _cursor2 = _interopRequireDefault(_cursor);\\n\\nvar _text = __webpack_require__(/*! ../blots/text */ \\\"./blots/text.js\\\");\\n\\nvar _text2 = _interopRequireDefault(_text);\\n\\nvar _code = __webpack_require__(/*! ../formats/code */ \\\"./formats/code.js\\\");\\n\\nvar _code2 = _interopRequireDefault(_code);\\n\\nvar _clipboard = __webpack_require__(/*! ../modules/clipboard */ \\\"./modules/clipboard.js\\\");\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst TokenAttributor = new _parchment.ClassAttributor('code-token', 'hljs', {\\n scope: _parchment.Scope.INLINE\\n});\\nclass CodeToken extends _inline2.default {\\n static formats(node, scroll) {\\n while (node != null && node !== scroll.domNode) {\\n if (node.classList.contains(_code2.default.className)) {\\n return super.formats(node, scroll);\\n }\\n node = node.parentNode;\\n }\\n return undefined;\\n }\\n\\n constructor(scroll, domNode, value) {\\n super(scroll, domNode, value);\\n TokenAttributor.add(this.domNode, value);\\n }\\n\\n format(format, value) {\\n if (format !== CodeToken.blotName) {\\n super.format(format, value);\\n } else if (value) {\\n TokenAttributor.add(this.domNode, value);\\n } else {\\n TokenAttributor.remove(this.domNode);\\n this.domNode.classList.remove(this.statics.className);\\n }\\n }\\n\\n optimize(...args) {\\n super.optimize(...args);\\n if (!TokenAttributor.value(this.domNode)) {\\n this.unwrap();\\n }\\n }\\n}\\nCodeToken.blotName = 'code-token';\\nCodeToken.className = 'ql-token';\\n\\nclass SyntaxCodeBlock extends _code2.default {\\n static create(value) {\\n const domNode = super.create(value);\\n if (typeof value === 'string') {\\n domNode.setAttribute('data-language', value);\\n }\\n return domNode;\\n }\\n\\n static formats(domNode) {\\n return domNode.getAttribute('data-language') || 'plain';\\n }\\n\\n static register() {} // Syntax module will register\\n\\n delta() {\\n if (this.cache.delta == null) {\\n const delta = super.delta();\\n this.cache.delta = delta.compose(new _quillDelta2.default().retain(delta.length(), {\\n [CodeToken.blotName]: null\\n }));\\n }\\n return this.cache.delta;\\n }\\n\\n format(name, value) {\\n if (name === this.statics.blotName && value) {\\n this.domNode.setAttribute('data-language', value);\\n } else {\\n super.format(name, value);\\n }\\n }\\n\\n replaceWith(name, value) {\\n this.formatAt(0, this.length(), CodeToken.blotName, false);\\n return super.replaceWith(name, value);\\n }\\n}\\n\\nclass SyntaxCodeBlockContainer extends _code.CodeBlockContainer {\\n attach() {\\n super.attach();\\n this.forceNext = false;\\n this.scroll.emitMount(this);\\n }\\n\\n format(name, value) {\\n if (name === SyntaxCodeBlock.blotName) {\\n this.forceNext = true;\\n this.children.forEach(child => {\\n child.format(name, value);\\n });\\n }\\n }\\n\\n formatAt(index, length, name, value) {\\n if (name === SyntaxCodeBlock.blotName) {\\n this.forceNext = true;\\n }\\n super.formatAt(index, length, name, value);\\n }\\n\\n highlight(highlight, forced = false) {\\n if (this.children.head == null) return;\\n const nodes = Array.from(this.domNode.childNodes).filter(node => node !== this.uiNode);\\n const text = `${nodes.map(node => node.textContent).join('\\\\n')}\\\\n`;\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n if (forced || this.forceNext || this.cachedText !== text) {\\n if (text.trim().length > 0 || this.cachedText == null) {\\n const oldDelta = this.children.reduce((delta, child) => {\\n return delta.concat((0, _block.blockDelta)(child));\\n }, new _quillDelta2.default());\\n const delta = highlight(text, language);\\n oldDelta.diff(delta).reduce((index, { retain, attributes }) => {\\n // Should be all retains\\n if (!retain) return index;\\n if (attributes) {\\n Object.keys(attributes).forEach(format => {\\n if ([SyntaxCodeBlock.blotName, CodeToken.blotName].includes(format)) {\\n this.formatAt(index, retain, format, attributes[format]);\\n }\\n });\\n }\\n return index + retain;\\n }, 0);\\n }\\n this.cachedText = text;\\n this.forceNext = false;\\n }\\n }\\n\\n optimize(context) {\\n super.optimize(context);\\n if (this.parent != null && this.children.head != null && this.uiNode != null) {\\n const language = SyntaxCodeBlock.formats(this.children.head.domNode);\\n if (language !== this.uiNode.value) {\\n this.uiNode.value = language;\\n }\\n }\\n }\\n}\\nSyntaxCodeBlockContainer.allowedChildren = [SyntaxCodeBlock];\\nSyntaxCodeBlock.requiredContainer = SyntaxCodeBlockContainer;\\nSyntaxCodeBlock.allowedChildren = [CodeToken, _cursor2.default, _text2.default, _break2.default];\\n\\nclass Syntax extends _module2.default {\\n static register() {\\n _quill2.default.register(CodeToken, true);\\n _quill2.default.register(SyntaxCodeBlock, true);\\n _quill2.default.register(SyntaxCodeBlockContainer, true);\\n }\\n\\n constructor(quill, options) {\\n super(quill, options);\\n if (this.options.hljs == null) {\\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\\n }\\n this.highlightBlot = this.highlightBlot.bind(this);\\n this.initListener();\\n this.initTimer();\\n }\\n\\n initListener() {\\n this.quill.on(_quill2.default.events.SCROLL_BLOT_MOUNT, blot => {\\n if (!(blot instanceof SyntaxCodeBlockContainer)) return;\\n const select = this.quill.root.ownerDocument.createElement('select');\\n this.options.languages.forEach(({ key, label }) => {\\n const option = select.ownerDocument.createElement('option');\\n option.textContent = label;\\n option.setAttribute('value', key);\\n select.appendChild(option);\\n });\\n select.addEventListener('change', () => {\\n blot.format(SyntaxCodeBlock.blotName, select.value);\\n this.quill.root.focus(); // Prevent scrolling\\n this.highlight(blot, true);\\n });\\n if (blot.uiNode == null) {\\n blot.attachUI(select);\\n if (blot.children.head) {\\n select.value = SyntaxCodeBlock.formats(blot.children.head.domNode);\\n }\\n }\\n });\\n }\\n\\n initTimer() {\\n let timer = null;\\n this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, () => {\\n clearTimeout(timer);\\n timer = setTimeout(() => {\\n this.highlight();\\n timer = null;\\n }, this.options.interval);\\n });\\n }\\n\\n highlight(blot = null, force = false) {\\n if (this.quill.selection.composing) return;\\n this.quill.update(_quill2.default.sources.USER);\\n const range = this.quill.getSelection();\\n const blots = blot == null ? this.quill.scroll.descendants(SyntaxCodeBlockContainer) : [blot];\\n blots.forEach(container => {\\n container.highlight(this.highlightBlot, force);\\n });\\n this.quill.update(_quill2.default.sources.SILENT);\\n if (range != null) {\\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\\n }\\n }\\n\\n highlightBlot(text, language = 'plain') {\\n if (language === 'plain') {\\n return text.replace(/[&<>\\\"']/g, s => {\\n // https://lodash.com/docs#escape\\n const entityMap = {\\n '&': '&',\\n '<': '<',\\n '>': '>',\\n '\\\"': '"',\\n \\\"'\\\": '''\\n };\\n return entityMap[s];\\n }).split('\\\\n').reduce((delta, line, i) => {\\n if (i !== 0) {\\n delta.insert('\\\\n', { [_code2.default.blotName]: language });\\n }\\n return delta.insert(line);\\n }, new _quillDelta2.default());\\n }\\n const container = this.quill.root.ownerDocument.createElement('div');\\n container.classList.add(_code2.default.className);\\n container.innerHTML = this.options.hljs.highlight(language, text).value;\\n return (0, _clipboard.traverse)(this.quill.scroll, container, [(node, delta) => {\\n const value = TokenAttributor.value(node);\\n if (value) {\\n return delta.compose(new _quillDelta2.default().retain(delta.length(), {\\n [CodeToken.blotName]: value\\n }));\\n }\\n return delta;\\n }], [(node, delta) => {\\n return node.data.split('\\\\n').reduce((memo, nodeText, i) => {\\n if (i !== 0) memo.insert('\\\\n', { [_code2.default.blotName]: language });\\n return memo.insert(nodeText);\\n }, delta);\\n }], new WeakMap());\\n }\\n}\\nSyntax.DEFAULTS = {\\n hljs: (() => {\\n return window.hljs;\\n })(),\\n interval: 1000,\\n languages: [{ key: 'plain', label: 'Plain' }, { key: 'bash', label: 'Bash' }, { key: 'cpp', label: 'C++' }, { key: 'cs', label: 'C#' }, { key: 'css', label: 'CSS' }, { key: 'diff', label: 'Diff' }, { key: 'xml', label: 'HTML/XML' }, { key: 'java', label: 'Java' }, { key: 'javascript', label: 'Javascript' }, { key: 'markdown', label: 'Markdown' }, { key: 'php', label: 'PHP' }, { key: 'python', label: 'Python' }, { key: 'ruby', label: 'Ruby' }, { key: 'sql', label: 'SQL' }]\\n};\\n\\nexports.CodeBlock = SyntaxCodeBlock;\\nexports.CodeToken = CodeToken;\\nexports.default = Syntax;\\n\\n//# sourceURL=webpack://Quill/./modules/syntax.js?\");\n\n/***/ }),\n\n/***/ \"./modules/table.js\":\n/*!**************************!*\\\n !*** ./modules/table.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nvar _module = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nvar _table = __webpack_require__(/*! ../formats/table */ \\\"./formats/table.js\\\");\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Table extends _module2.default {\\n static register() {\\n _quill2.default.register(_table.TableCell);\\n _quill2.default.register(_table.TableRow);\\n _quill2.default.register(_table.TableBody);\\n _quill2.default.register(_table.TableContainer);\\n }\\n\\n constructor(...args) {\\n super(...args);\\n this.listenBalanceCells();\\n }\\n\\n balanceTables() {\\n this.quill.scroll.descendants(_table.TableContainer).forEach(table => {\\n table.balanceCells();\\n });\\n }\\n\\n deleteColumn() {\\n var _getTable = this.getTable(),\\n _getTable2 = _slicedToArray(_getTable, 3);\\n\\n const table = _getTable2[0],\\n row = _getTable2[1],\\n cell = _getTable2[2];\\n\\n if (cell == null) return;\\n const column = row.children.indexOf(cell);\\n table.deleteColumn(column);\\n this.quill.update(_quill2.default.sources.USER);\\n }\\n\\n deleteRow() {\\n var _getTable3 = this.getTable(),\\n _getTable4 = _slicedToArray(_getTable3, 2);\\n\\n const row = _getTable4[1];\\n\\n if (row == null) return;\\n row.remove();\\n this.quill.update(_quill2.default.sources.USER);\\n }\\n\\n deleteTable() {\\n var _getTable5 = this.getTable(),\\n _getTable6 = _slicedToArray(_getTable5, 1);\\n\\n const table = _getTable6[0];\\n\\n if (table == null) return;\\n const offset = table.offset();\\n table.remove();\\n this.quill.update(_quill2.default.sources.USER);\\n this.quill.setSelection(offset, _quill2.default.sources.SILENT);\\n }\\n\\n getTable(range = this.quill.getSelection()) {\\n if (range == null) return [null, null, null, -1];\\n\\n var _quill$getLine = this.quill.getLine(range.index),\\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2);\\n\\n const cell = _quill$getLine2[0],\\n offset = _quill$getLine2[1];\\n\\n if (cell == null || cell.statics.blotName !== _table.TableCell.blotName) {\\n return [null, null, null, -1];\\n }\\n const row = cell.parent;\\n const table = row.parent.parent;\\n return [table, row, cell, offset];\\n }\\n\\n insertColumn(offset) {\\n const range = this.quill.getSelection();\\n\\n var _getTable7 = this.getTable(range),\\n _getTable8 = _slicedToArray(_getTable7, 3);\\n\\n const table = _getTable8[0],\\n row = _getTable8[1],\\n cell = _getTable8[2];\\n\\n if (cell == null) return;\\n const column = row.children.offset(cell);\\n table.insertColumn(column + offset);\\n this.quill.update(_quill2.default.sources.USER);\\n let shift = row.parent.children.indexOf(row);\\n if (offset === 0) {\\n shift += 1;\\n }\\n this.quill.setSelection(range.index + shift, range.length, _quill2.default.sources.SILENT);\\n }\\n\\n insertColumnLeft() {\\n this.insertColumn(0);\\n }\\n\\n insertColumnRight() {\\n this.insertColumn(1);\\n }\\n\\n insertRow(offset) {\\n const range = this.quill.getSelection();\\n\\n var _getTable9 = this.getTable(range),\\n _getTable10 = _slicedToArray(_getTable9, 3);\\n\\n const table = _getTable10[0],\\n row = _getTable10[1],\\n cell = _getTable10[2];\\n\\n if (cell == null) return;\\n const index = row.parent.children.indexOf(row);\\n table.insertRow(index + offset);\\n this.quill.update(_quill2.default.sources.USER);\\n if (offset > 0) {\\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\\n } else {\\n this.quill.setSelection(range.index + row.children.length, range.length, _quill2.default.sources.SILENT);\\n }\\n }\\n\\n insertRowAbove() {\\n this.insertRow(0);\\n }\\n\\n insertRowBelow() {\\n this.insertRow(1);\\n }\\n\\n insertTable(rows, columns) {\\n const range = this.quill.getSelection();\\n if (range == null) return;\\n const delta = new Array(rows).fill(0).reduce(memo => {\\n const text = new Array(columns).fill('\\\\n').join('');\\n return memo.insert(text, { table: (0, _table.tableId)() });\\n }, new _quillDelta2.default().retain(range.index));\\n this.quill.updateContents(delta, _quill2.default.sources.USER);\\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\\n this.balanceTables();\\n }\\n\\n listenBalanceCells() {\\n this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, mutations => {\\n mutations.some(mutation => {\\n if (mutation.target.tagName === 'TABLE') {\\n this.quill.once(_quill2.default.events.TEXT_CHANGE, (delta, old, source) => {\\n if (source !== _quill2.default.sources.USER) return;\\n this.balanceTables();\\n });\\n return true;\\n }\\n return false;\\n });\\n });\\n }\\n}\\n\\nexports.default = Table;\\n\\n//# sourceURL=webpack://Quill/./modules/table.js?\");\n\n/***/ }),\n\n/***/ \"./modules/toolbar.js\":\n/*!****************************!*\\\n !*** ./modules/toolbar.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.addControls = exports.default = undefined;\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _parchment = __webpack_require__(/*! parchment */ \\\"./node_modules/parchment/src/parchment.ts\\\");\\n\\nvar _quill = __webpack_require__(/*! ../core/quill */ \\\"./core/quill.js\\\");\\n\\nvar _quill2 = _interopRequireDefault(_quill);\\n\\nvar _logger = __webpack_require__(/*! ../core/logger */ \\\"./core/logger.js\\\");\\n\\nvar _logger2 = _interopRequireDefault(_logger);\\n\\nvar _module = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst debug = (0, _logger2.default)('quill:toolbar');\\n\\nclass Toolbar extends _module2.default {\\n constructor(quill, options) {\\n super(quill, options);\\n if (Array.isArray(this.options.container)) {\\n const container = document.createElement('div');\\n addControls(container, this.options.container);\\n quill.container.parentNode.insertBefore(container, quill.container);\\n this.container = container;\\n } else if (typeof this.options.container === 'string') {\\n this.container = document.querySelector(this.options.container);\\n } else {\\n this.container = this.options.container;\\n }\\n if (!(this.container instanceof HTMLElement)) {\\n return debug.error('Container required for toolbar', this.options);\\n }\\n this.container.classList.add('ql-toolbar');\\n this.controls = [];\\n this.handlers = {};\\n Object.keys(this.options.handlers).forEach(format => {\\n this.addHandler(format, this.options.handlers[format]);\\n });\\n Array.from(this.container.querySelectorAll('button, select')).forEach(input => {\\n this.attach(input);\\n });\\n this.quill.on(_quill2.default.events.EDITOR_CHANGE, (type, range) => {\\n if (type === _quill2.default.events.SELECTION_CHANGE) {\\n this.update(range);\\n }\\n });\\n this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, () => {\\n var _quill$selection$getR = this.quill.selection.getRange(),\\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1);\\n\\n const range = _quill$selection$getR2[0]; // quill.getSelection triggers update\\n\\n this.update(range);\\n });\\n }\\n\\n addHandler(format, handler) {\\n this.handlers[format] = handler;\\n }\\n\\n attach(input) {\\n let format = Array.from(input.classList).find(className => {\\n return className.indexOf('ql-') === 0;\\n });\\n if (!format) return;\\n format = format.slice('ql-'.length);\\n if (input.tagName === 'BUTTON') {\\n input.setAttribute('type', 'button');\\n }\\n if (this.handlers[format] == null && this.quill.scroll.query(format) == null) {\\n debug.warn('ignoring attaching to nonexistent format', format, input);\\n return;\\n }\\n const eventName = input.tagName === 'SELECT' ? 'change' : 'click';\\n input.addEventListener(eventName, e => {\\n let value;\\n if (input.tagName === 'SELECT') {\\n if (input.selectedIndex < 0) return;\\n const selected = input.options[input.selectedIndex];\\n if (selected.hasAttribute('selected')) {\\n value = false;\\n } else {\\n value = selected.value || false;\\n }\\n } else {\\n if (input.classList.contains('ql-active')) {\\n value = false;\\n } else {\\n value = input.value || !input.hasAttribute('value');\\n }\\n e.preventDefault();\\n }\\n this.quill.focus();\\n\\n var _quill$selection$getR3 = this.quill.selection.getRange(),\\n _quill$selection$getR4 = _slicedToArray(_quill$selection$getR3, 1);\\n\\n const range = _quill$selection$getR4[0];\\n\\n if (this.handlers[format] != null) {\\n this.handlers[format].call(this, value);\\n } else if (this.quill.scroll.query(format).prototype instanceof _parchment.EmbedBlot) {\\n value = prompt(`Enter ${format}`); // eslint-disable-line no-alert\\n if (!value) return;\\n this.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ [format]: value }), _quill2.default.sources.USER);\\n } else {\\n this.quill.format(format, value, _quill2.default.sources.USER);\\n }\\n this.update(range);\\n });\\n this.controls.push([format, input]);\\n }\\n\\n update(range) {\\n const formats = range == null ? {} : this.quill.getFormat(range);\\n this.controls.forEach(pair => {\\n var _pair = _slicedToArray(pair, 2);\\n\\n const format = _pair[0],\\n input = _pair[1];\\n\\n if (input.tagName === 'SELECT') {\\n let option;\\n if (range == null) {\\n option = null;\\n } else if (formats[format] == null) {\\n option = input.querySelector('option[selected]');\\n } else if (!Array.isArray(formats[format])) {\\n let value = formats[format];\\n if (typeof value === 'string') {\\n value = value.replace(/\\\"/g, '\\\\\\\\\\\"');\\n }\\n option = input.querySelector(`option[value=\\\"${value}\\\"]`);\\n }\\n if (option == null) {\\n input.value = ''; // TODO make configurable?\\n input.selectedIndex = -1;\\n } else {\\n option.selected = true;\\n }\\n } else if (range == null) {\\n input.classList.remove('ql-active');\\n } else if (input.hasAttribute('value')) {\\n // both being null should match (default values)\\n // '1' should match with 1 (headers)\\n const isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\\n input.classList.toggle('ql-active', isActive);\\n } else {\\n input.classList.toggle('ql-active', formats[format] != null);\\n }\\n });\\n }\\n}\\nToolbar.DEFAULTS = {};\\n\\nfunction addButton(container, format, value) {\\n const input = document.createElement('button');\\n input.setAttribute('type', 'button');\\n input.classList.add(`ql-${format}`);\\n if (value != null) {\\n input.value = value;\\n }\\n container.appendChild(input);\\n}\\n\\nfunction addControls(container, groups) {\\n if (!Array.isArray(groups[0])) {\\n groups = [groups];\\n }\\n groups.forEach(controls => {\\n const group = document.createElement('span');\\n group.classList.add('ql-formats');\\n controls.forEach(control => {\\n if (typeof control === 'string') {\\n addButton(group, control);\\n } else {\\n const format = Object.keys(control)[0];\\n const value = control[format];\\n if (Array.isArray(value)) {\\n addSelect(group, format, value);\\n } else {\\n addButton(group, format, value);\\n }\\n }\\n });\\n container.appendChild(group);\\n });\\n}\\n\\nfunction addSelect(container, format, values) {\\n const input = document.createElement('select');\\n input.classList.add(`ql-${format}`);\\n values.forEach(value => {\\n const option = document.createElement('option');\\n if (value !== false) {\\n option.setAttribute('value', value);\\n } else {\\n option.setAttribute('selected', 'selected');\\n }\\n input.appendChild(option);\\n });\\n container.appendChild(input);\\n}\\n\\nToolbar.DEFAULTS = {\\n container: null,\\n handlers: {\\n clean() {\\n const range = this.quill.getSelection();\\n if (range == null) return;\\n if (range.length === 0) {\\n const formats = this.quill.getFormat();\\n Object.keys(formats).forEach(name => {\\n // Clean functionality in existing apps only clean inline formats\\n if (this.quill.scroll.query(name, _parchment.Scope.INLINE) != null) {\\n this.quill.format(name, false, _quill2.default.sources.USER);\\n }\\n });\\n } else {\\n this.quill.removeFormat(range, _quill2.default.sources.USER);\\n }\\n },\\n direction(value) {\\n var _quill$getFormat = this.quill.getFormat();\\n\\n const align = _quill$getFormat.align;\\n\\n if (value === 'rtl' && align == null) {\\n this.quill.format('align', 'right', _quill2.default.sources.USER);\\n } else if (!value && align === 'right') {\\n this.quill.format('align', false, _quill2.default.sources.USER);\\n }\\n this.quill.format('direction', value, _quill2.default.sources.USER);\\n },\\n indent(value) {\\n const range = this.quill.getSelection();\\n const formats = this.quill.getFormat(range);\\n const indent = parseInt(formats.indent || 0, 10);\\n if (value === '+1' || value === '-1') {\\n let modifier = value === '+1' ? 1 : -1;\\n if (formats.direction === 'rtl') modifier *= -1;\\n this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\\n }\\n },\\n link(value) {\\n if (value === true) {\\n value = prompt('Enter link URL:'); // eslint-disable-line no-alert\\n }\\n this.quill.format('link', value, _quill2.default.sources.USER);\\n },\\n list(value) {\\n const range = this.quill.getSelection();\\n const formats = this.quill.getFormat(range);\\n if (value === 'check') {\\n if (formats.list === 'checked' || formats.list === 'unchecked') {\\n this.quill.format('list', false, _quill2.default.sources.USER);\\n } else {\\n this.quill.format('list', 'unchecked', _quill2.default.sources.USER);\\n }\\n } else {\\n this.quill.format('list', value, _quill2.default.sources.USER);\\n }\\n }\\n }\\n};\\n\\nexports.default = Toolbar;\\nexports.addControls = addControls;\\n\\n//# sourceURL=webpack://Quill/./modules/toolbar.js?\");\n\n/***/ }),\n\n/***/ \"./modules/uploader.js\":\n/*!*****************************!*\\\n !*** ./modules/uploader.js ***!\n \\*****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _quillDelta = __webpack_require__(/*! quill-delta */ \\\"./node_modules/quill-delta/lib/delta.js\\\");\\n\\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\\n\\nvar _emitter = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n\\nvar _emitter2 = _interopRequireDefault(_emitter);\\n\\nvar _module = __webpack_require__(/*! ../core/module */ \\\"./core/module.js\\\");\\n\\nvar _module2 = _interopRequireDefault(_module);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass Uploader extends _module2.default {\\n constructor(quill, options) {\\n super(quill, options);\\n quill.root.addEventListener('drop', e => {\\n e.preventDefault();\\n let native;\\n if (document.caretRangeFromPoint) {\\n native = document.caretRangeFromPoint(e.clientX, e.clientY);\\n } else if (document.caretPositionFromPoint) {\\n const position = document.caretPositionFromPoint(e.clientX, e.clientY);\\n native = document.createRange();\\n native.setStart(position.offsetNode, position.offset);\\n native.setEnd(position.offsetNode, position.offset);\\n } else {\\n return;\\n }\\n const normalized = quill.selection.normalizeNative(native);\\n const range = quill.selection.normalizedToRange(normalized);\\n this.upload(range, e.dataTransfer.files);\\n });\\n }\\n\\n upload(range, files) {\\n const uploads = [];\\n Array.from(files).forEach(file => {\\n if (file && this.options.mimetypes.includes(file.type)) {\\n uploads.push(file);\\n }\\n });\\n if (uploads.length > 0) {\\n this.options.handler.call(this, range, uploads);\\n }\\n }\\n}\\n\\nUploader.DEFAULTS = {\\n mimetypes: ['image/png', 'image/jpeg'],\\n handler(range, files) {\\n const promises = files.map(file => {\\n return new Promise(resolve => {\\n const reader = new FileReader();\\n reader.onload = e => {\\n resolve(e.target.result);\\n };\\n reader.readAsDataURL(file);\\n });\\n });\\n Promise.all(promises).then(images => {\\n const update = images.reduce((delta, image) => {\\n return delta.insert({ image });\\n }, new _quillDelta2.default().retain(range.index).delete(range.length));\\n this.quill.updateContents(update, _emitter2.default.sources.USER);\\n this.quill.setSelection(range.index + images.length, _emitter2.default.sources.SILENT);\\n });\\n }\\n};\\n\\nexports.default = Uploader;\\n\\n//# sourceURL=webpack://Quill/./modules/uploader.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/clone/clone.js\":\n/*!*************************************!*\\\n !*** ./node_modules/clone/clone.js ***!\n \\*************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var clone = (function() {\\n'use strict';\\n\\nfunction _instanceof(obj, type) {\\n return type != null && obj instanceof type;\\n}\\n\\nvar nativeMap;\\ntry {\\n nativeMap = Map;\\n} catch(_) {\\n // maybe a reference error because no `Map`. Give it a dummy value that no\\n // value will ever be an instanceof.\\n nativeMap = function() {};\\n}\\n\\nvar nativeSet;\\ntry {\\n nativeSet = Set;\\n} catch(_) {\\n nativeSet = function() {};\\n}\\n\\nvar nativePromise;\\ntry {\\n nativePromise = Promise;\\n} catch(_) {\\n nativePromise = function() {};\\n}\\n\\n/**\\n * Clones (copies) an Object using deep copying.\\n *\\n * This function supports circular references by default, but if you are certain\\n * there are no circular references in your object, you can save some CPU time\\n * by calling clone(obj, false).\\n *\\n * Caution: if `circular` is false and `parent` contains circular references,\\n * your program may enter an infinite loop and crash.\\n *\\n * @param `parent` - the object to be cloned\\n * @param `circular` - set to true if the object to be cloned may contain\\n * circular references. (optional - true by default)\\n * @param `depth` - set to a number if the object is only to be cloned to\\n * a particular depth. (optional - defaults to Infinity)\\n * @param `prototype` - sets the prototype to be used when cloning an object.\\n * (optional - defaults to parent prototype).\\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\\n * should be cloned as well. Non-enumerable properties on the prototype\\n * chain will be ignored. (optional - false by default)\\n*/\\nfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\\n if (typeof circular === 'object') {\\n depth = circular.depth;\\n prototype = circular.prototype;\\n includeNonEnumerable = circular.includeNonEnumerable;\\n circular = circular.circular;\\n }\\n // maintain two arrays for circular references, where corresponding parents\\n // and children have the same index\\n var allParents = [];\\n var allChildren = [];\\n\\n var useBuffer = typeof Buffer != 'undefined';\\n\\n if (typeof circular == 'undefined')\\n circular = true;\\n\\n if (typeof depth == 'undefined')\\n depth = Infinity;\\n\\n // recurse this function so we don't reset allParents and allChildren\\n function _clone(parent, depth) {\\n // cloning null always returns null\\n if (parent === null)\\n return null;\\n\\n if (depth === 0)\\n return parent;\\n\\n var child;\\n var proto;\\n if (typeof parent != 'object') {\\n return parent;\\n }\\n\\n if (_instanceof(parent, nativeMap)) {\\n child = new nativeMap();\\n } else if (_instanceof(parent, nativeSet)) {\\n child = new nativeSet();\\n } else if (_instanceof(parent, nativePromise)) {\\n child = new nativePromise(function (resolve, reject) {\\n parent.then(function(value) {\\n resolve(_clone(value, depth - 1));\\n }, function(err) {\\n reject(_clone(err, depth - 1));\\n });\\n });\\n } else if (clone.__isArray(parent)) {\\n child = [];\\n } else if (clone.__isRegExp(parent)) {\\n child = new RegExp(parent.source, __getRegExpFlags(parent));\\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\\n } else if (clone.__isDate(parent)) {\\n child = new Date(parent.getTime());\\n } else if (useBuffer && Buffer.isBuffer(parent)) {\\n if (Buffer.allocUnsafe) {\\n // Node.js >= 4.5.0\\n child = Buffer.allocUnsafe(parent.length);\\n } else {\\n // Older Node.js versions\\n child = new Buffer(parent.length);\\n }\\n parent.copy(child);\\n return child;\\n } else if (_instanceof(parent, Error)) {\\n child = Object.create(parent);\\n } else {\\n if (typeof prototype == 'undefined') {\\n proto = Object.getPrototypeOf(parent);\\n child = Object.create(proto);\\n }\\n else {\\n child = Object.create(prototype);\\n proto = prototype;\\n }\\n }\\n\\n if (circular) {\\n var index = allParents.indexOf(parent);\\n\\n if (index != -1) {\\n return allChildren[index];\\n }\\n allParents.push(parent);\\n allChildren.push(child);\\n }\\n\\n if (_instanceof(parent, nativeMap)) {\\n parent.forEach(function(value, key) {\\n var keyChild = _clone(key, depth - 1);\\n var valueChild = _clone(value, depth - 1);\\n child.set(keyChild, valueChild);\\n });\\n }\\n if (_instanceof(parent, nativeSet)) {\\n parent.forEach(function(value) {\\n var entryChild = _clone(value, depth - 1);\\n child.add(entryChild);\\n });\\n }\\n\\n for (var i in parent) {\\n var attrs;\\n if (proto) {\\n attrs = Object.getOwnPropertyDescriptor(proto, i);\\n }\\n\\n if (attrs && attrs.set == null) {\\n continue;\\n }\\n child[i] = _clone(parent[i], depth - 1);\\n }\\n\\n if (Object.getOwnPropertySymbols) {\\n var symbols = Object.getOwnPropertySymbols(parent);\\n for (var i = 0; i < symbols.length; i++) {\\n // Don't need to worry about cloning a symbol because it is a primitive,\\n // like a number or string.\\n var symbol = symbols[i];\\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\\n continue;\\n }\\n child[symbol] = _clone(parent[symbol], depth - 1);\\n if (!descriptor.enumerable) {\\n Object.defineProperty(child, symbol, {\\n enumerable: false\\n });\\n }\\n }\\n }\\n\\n if (includeNonEnumerable) {\\n var allPropertyNames = Object.getOwnPropertyNames(parent);\\n for (var i = 0; i < allPropertyNames.length; i++) {\\n var propertyName = allPropertyNames[i];\\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\\n if (descriptor && descriptor.enumerable) {\\n continue;\\n }\\n child[propertyName] = _clone(parent[propertyName], depth - 1);\\n Object.defineProperty(child, propertyName, {\\n enumerable: false\\n });\\n }\\n }\\n\\n return child;\\n }\\n\\n return _clone(parent, depth);\\n}\\n\\n/**\\n * Simple flat clone using prototype, accepts only objects, usefull for property\\n * override on FLAT configuration object (no nested props).\\n *\\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\\n * works.\\n */\\nclone.clonePrototype = function clonePrototype(parent) {\\n if (parent === null)\\n return null;\\n\\n var c = function () {};\\n c.prototype = parent;\\n return new c();\\n};\\n\\n// private utility functions\\n\\nfunction __objToStr(o) {\\n return Object.prototype.toString.call(o);\\n}\\nclone.__objToStr = __objToStr;\\n\\nfunction __isDate(o) {\\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\\n}\\nclone.__isDate = __isDate;\\n\\nfunction __isArray(o) {\\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\\n}\\nclone.__isArray = __isArray;\\n\\nfunction __isRegExp(o) {\\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\\n}\\nclone.__isRegExp = __isRegExp;\\n\\nfunction __getRegExpFlags(re) {\\n var flags = '';\\n if (re.global) flags += 'g';\\n if (re.ignoreCase) flags += 'i';\\n if (re.multiline) flags += 'm';\\n return flags;\\n}\\nclone.__getRegExpFlags = __getRegExpFlags;\\n\\nreturn clone;\\n})();\\n\\nif (typeof module === 'object' && module.exports) {\\n module.exports = clone;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/clone/clone.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/deep-equal/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var pSlice = Array.prototype.slice;\\nvar objectKeys = __webpack_require__(/*! ./lib/keys.js */ \\\"./node_modules/deep-equal/lib/keys.js\\\");\\nvar isArguments = __webpack_require__(/*! ./lib/is_arguments.js */ \\\"./node_modules/deep-equal/lib/is_arguments.js\\\");\\n\\nvar deepEqual = module.exports = function (actual, expected, opts) {\\n if (!opts) opts = {};\\n // 7.1. All identical values are equivalent, as determined by ===.\\n if (actual === expected) {\\n return true;\\n\\n } else if (actual instanceof Date && expected instanceof Date) {\\n return actual.getTime() === expected.getTime();\\n\\n // 7.3. Other pairs that do not both pass typeof value == 'object',\\n // equivalence is determined by ==.\\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\\n return opts.strict ? actual === expected : actual == expected;\\n\\n // 7.4. For all other Object pairs, including Array objects, equivalence is\\n // determined by having the same number of owned properties (as verified\\n // with Object.prototype.hasOwnProperty.call), the same set of keys\\n // (although not necessarily the same order), equivalent values for every\\n // corresponding key, and an identical 'prototype' property. Note: this\\n // accounts for both named and indexed properties on Arrays.\\n } else {\\n return objEquiv(actual, expected, opts);\\n }\\n}\\n\\nfunction isUndefinedOrNull(value) {\\n return value === null || value === undefined;\\n}\\n\\nfunction isBuffer (x) {\\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\\n return false;\\n }\\n if (x.length > 0 && typeof x[0] !== 'number') return false;\\n return true;\\n}\\n\\nfunction objEquiv(a, b, opts) {\\n var i, key;\\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\\n return false;\\n // an identical 'prototype' property.\\n if (a.prototype !== b.prototype) return false;\\n //~~~I've managed to break Object.keys through screwy arguments passing.\\n // Converting to array solves the problem.\\n if (isArguments(a)) {\\n if (!isArguments(b)) {\\n return false;\\n }\\n a = pSlice.call(a);\\n b = pSlice.call(b);\\n return deepEqual(a, b, opts);\\n }\\n if (isBuffer(a)) {\\n if (!isBuffer(b)) {\\n return false;\\n }\\n if (a.length !== b.length) return false;\\n for (i = 0; i < a.length; i++) {\\n if (a[i] !== b[i]) return false;\\n }\\n return true;\\n }\\n try {\\n var ka = objectKeys(a),\\n kb = objectKeys(b);\\n } catch (e) {//happens when one is a string literal and the other isn't\\n return false;\\n }\\n // having the same number of owned properties (keys incorporates\\n // hasOwnProperty)\\n if (ka.length != kb.length)\\n return false;\\n //the same set of keys (although not necessarily the same order),\\n ka.sort();\\n kb.sort();\\n //~~~cheap key test\\n for (i = ka.length - 1; i >= 0; i--) {\\n if (ka[i] != kb[i])\\n return false;\\n }\\n //equivalent values for every corresponding key, and\\n //~~~possibly expensive deep test\\n for (i = ka.length - 1; i >= 0; i--) {\\n key = ka[i];\\n if (!deepEqual(a[key], b[key], opts)) return false;\\n }\\n return typeof a === typeof b;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/lib/is_arguments.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/deep-equal/lib/is_arguments.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"var supportsArgumentsClass = (function(){\\n return Object.prototype.toString.call(arguments)\\n})() == '[object Arguments]';\\n\\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\\n\\nexports.supported = supported;\\nfunction supported(object) {\\n return Object.prototype.toString.call(object) == '[object Arguments]';\\n};\\n\\nexports.unsupported = unsupported;\\nfunction unsupported(object){\\n return object &&\\n typeof object == 'object' &&\\n typeof object.length == 'number' &&\\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\\n false;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/lib/is_arguments.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/deep-equal/lib/keys.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/deep-equal/lib/keys.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"exports = module.exports = typeof Object.keys === 'function'\\n ? Object.keys : shim;\\n\\nexports.shim = shim;\\nfunction shim (obj) {\\n var keys = [];\\n for (var key in obj) keys.push(key);\\n return keys;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/deep-equal/lib/keys.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/eventemitter3/index.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/eventemitter3/index.js ***!\n \\*********************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"'use strict';\\n\\nvar has = Object.prototype.hasOwnProperty\\n , prefix = '~';\\n\\n/**\\n * Constructor to create a storage for our `EE` objects.\\n * An `Events` instance is a plain object whose properties are event names.\\n *\\n * @constructor\\n * @private\\n */\\nfunction Events() {}\\n\\n//\\n// We try to not inherit from `Object.prototype`. In some engines creating an\\n// instance in this way is faster than calling `Object.create(null)` directly.\\n// If `Object.create(null)` is not supported we prefix the event names with a\\n// character to make sure that the built-in object properties are not\\n// overridden or used as an attack vector.\\n//\\nif (Object.create) {\\n Events.prototype = Object.create(null);\\n\\n //\\n // This hack is needed because the `__proto__` property is still inherited in\\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\\n //\\n if (!new Events().__proto__) prefix = false;\\n}\\n\\n/**\\n * Representation of a single event listener.\\n *\\n * @param {Function} fn The listener function.\\n * @param {*} context The context to invoke the listener with.\\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\\n * @constructor\\n * @private\\n */\\nfunction EE(fn, context, once) {\\n this.fn = fn;\\n this.context = context;\\n this.once = once || false;\\n}\\n\\n/**\\n * Add a listener for a given event.\\n *\\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\\n * @param {(String|Symbol)} event The event name.\\n * @param {Function} fn The listener function.\\n * @param {*} context The context to invoke the listener with.\\n * @param {Boolean} once Specify if the listener is a one-time listener.\\n * @returns {EventEmitter}\\n * @private\\n */\\nfunction addListener(emitter, event, fn, context, once) {\\n if (typeof fn !== 'function') {\\n throw new TypeError('The listener must be a function');\\n }\\n\\n var listener = new EE(fn, context || emitter, once)\\n , evt = prefix ? prefix + event : event;\\n\\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\\n else emitter._events[evt] = [emitter._events[evt], listener];\\n\\n return emitter;\\n}\\n\\n/**\\n * Clear event by name.\\n *\\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\\n * @param {(String|Symbol)} evt The Event name.\\n * @private\\n */\\nfunction clearEvent(emitter, evt) {\\n if (--emitter._eventsCount === 0) emitter._events = new Events();\\n else delete emitter._events[evt];\\n}\\n\\n/**\\n * Minimal `EventEmitter` interface that is molded against the Node.js\\n * `EventEmitter` interface.\\n *\\n * @constructor\\n * @public\\n */\\nfunction EventEmitter() {\\n this._events = new Events();\\n this._eventsCount = 0;\\n}\\n\\n/**\\n * Return an array listing the events for which the emitter has registered\\n * listeners.\\n *\\n * @returns {Array}\\n * @public\\n */\\nEventEmitter.prototype.eventNames = function eventNames() {\\n var names = []\\n , events\\n , name;\\n\\n if (this._eventsCount === 0) return names;\\n\\n for (name in (events = this._events)) {\\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\\n }\\n\\n if (Object.getOwnPropertySymbols) {\\n return names.concat(Object.getOwnPropertySymbols(events));\\n }\\n\\n return names;\\n};\\n\\n/**\\n * Return the listeners registered for a given event.\\n *\\n * @param {(String|Symbol)} event The event name.\\n * @returns {Array} The registered listeners.\\n * @public\\n */\\nEventEmitter.prototype.listeners = function listeners(event) {\\n var evt = prefix ? prefix + event : event\\n , handlers = this._events[evt];\\n\\n if (!handlers) return [];\\n if (handlers.fn) return [handlers.fn];\\n\\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\\n ee[i] = handlers[i].fn;\\n }\\n\\n return ee;\\n};\\n\\n/**\\n * Return the number of listeners listening to a given event.\\n *\\n * @param {(String|Symbol)} event The event name.\\n * @returns {Number} The number of listeners.\\n * @public\\n */\\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\\n var evt = prefix ? prefix + event : event\\n , listeners = this._events[evt];\\n\\n if (!listeners) return 0;\\n if (listeners.fn) return 1;\\n return listeners.length;\\n};\\n\\n/**\\n * Calls each of the listeners registered for a given event.\\n *\\n * @param {(String|Symbol)} event The event name.\\n * @returns {Boolean} `true` if the event had listeners, else `false`.\\n * @public\\n */\\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\\n var evt = prefix ? prefix + event : event;\\n\\n if (!this._events[evt]) return false;\\n\\n var listeners = this._events[evt]\\n , len = arguments.length\\n , args\\n , i;\\n\\n if (listeners.fn) {\\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\\n\\n switch (len) {\\n case 1: return listeners.fn.call(listeners.context), true;\\n case 2: return listeners.fn.call(listeners.context, a1), true;\\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\\n }\\n\\n for (i = 1, args = new Array(len -1); i < len; i++) {\\n args[i - 1] = arguments[i];\\n }\\n\\n listeners.fn.apply(listeners.context, args);\\n } else {\\n var length = listeners.length\\n , j;\\n\\n for (i = 0; i < length; i++) {\\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\\n\\n switch (len) {\\n case 1: listeners[i].fn.call(listeners[i].context); break;\\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\\n default:\\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\\n args[j - 1] = arguments[j];\\n }\\n\\n listeners[i].fn.apply(listeners[i].context, args);\\n }\\n }\\n }\\n\\n return true;\\n};\\n\\n/**\\n * Add a listener for a given event.\\n *\\n * @param {(String|Symbol)} event The event name.\\n * @param {Function} fn The listener function.\\n * @param {*} [context=this] The context to invoke the listener with.\\n * @returns {EventEmitter} `this`.\\n * @public\\n */\\nEventEmitter.prototype.on = function on(event, fn, context) {\\n return addListener(this, event, fn, context, false);\\n};\\n\\n/**\\n * Add a one-time listener for a given event.\\n *\\n * @param {(String|Symbol)} event The event name.\\n * @param {Function} fn The listener function.\\n * @param {*} [context=this] The context to invoke the listener with.\\n * @returns {EventEmitter} `this`.\\n * @public\\n */\\nEventEmitter.prototype.once = function once(event, fn, context) {\\n return addListener(this, event, fn, context, true);\\n};\\n\\n/**\\n * Remove the listeners of a given event.\\n *\\n * @param {(String|Symbol)} event The event name.\\n * @param {Function} fn Only remove the listeners that match this function.\\n * @param {*} context Only remove the listeners that have this context.\\n * @param {Boolean} once Only remove one-time listeners.\\n * @returns {EventEmitter} `this`.\\n * @public\\n */\\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\\n var evt = prefix ? prefix + event : event;\\n\\n if (!this._events[evt]) return this;\\n if (!fn) {\\n clearEvent(this, evt);\\n return this;\\n }\\n\\n var listeners = this._events[evt];\\n\\n if (listeners.fn) {\\n if (\\n listeners.fn === fn &&\\n (!once || listeners.once) &&\\n (!context || listeners.context === context)\\n ) {\\n clearEvent(this, evt);\\n }\\n } else {\\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\\n if (\\n listeners[i].fn !== fn ||\\n (once && !listeners[i].once) ||\\n (context && listeners[i].context !== context)\\n ) {\\n events.push(listeners[i]);\\n }\\n }\\n\\n //\\n // Reset the array, or remove it completely if we have no more listeners.\\n //\\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\\n else clearEvent(this, evt);\\n }\\n\\n return this;\\n};\\n\\n/**\\n * Remove all listeners, or those of the specified event.\\n *\\n * @param {(String|Symbol)} [event] The event name.\\n * @returns {EventEmitter} `this`.\\n * @public\\n */\\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\\n var evt;\\n\\n if (event) {\\n evt = prefix ? prefix + event : event;\\n if (this._events[evt]) clearEvent(this, evt);\\n } else {\\n this._events = new Events();\\n this._eventsCount = 0;\\n }\\n\\n return this;\\n};\\n\\n//\\n// Alias methods names because people roll like that.\\n//\\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\\n\\n//\\n// Expose the prefix.\\n//\\nEventEmitter.prefixed = prefix;\\n\\n//\\n// Allow `EventEmitter` to be imported as module namespace.\\n//\\nEventEmitter.EventEmitter = EventEmitter;\\n\\n//\\n// Expose the module.\\n//\\nif ('undefined' !== typeof module) {\\n module.exports = EventEmitter;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/eventemitter3/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/extend/index.js\":\n/*!**************************************!*\\\n !*** ./node_modules/extend/index.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"'use strict';\\n\\nvar hasOwn = Object.prototype.hasOwnProperty;\\nvar toStr = Object.prototype.toString;\\n\\nvar isArray = function isArray(arr) {\\n\\tif (typeof Array.isArray === 'function') {\\n\\t\\treturn Array.isArray(arr);\\n\\t}\\n\\n\\treturn toStr.call(arr) === '[object Array]';\\n};\\n\\nvar isPlainObject = function isPlainObject(obj) {\\n\\tif (!obj || toStr.call(obj) !== '[object Object]') {\\n\\t\\treturn false;\\n\\t}\\n\\n\\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\\n\\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\\n\\t// Not own constructor property must be Object\\n\\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\\n\\t\\treturn false;\\n\\t}\\n\\n\\t// Own properties are enumerated firstly, so to speed up,\\n\\t// if last one is own, then all properties are own.\\n\\tvar key;\\n\\tfor (key in obj) { /**/ }\\n\\n\\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\\n};\\n\\nmodule.exports = function extend() {\\n\\tvar options, name, src, copy, copyIsArray, clone;\\n\\tvar target = arguments[0];\\n\\tvar i = 1;\\n\\tvar length = arguments.length;\\n\\tvar deep = false;\\n\\n\\t// Handle a deep copy situation\\n\\tif (typeof target === 'boolean') {\\n\\t\\tdeep = target;\\n\\t\\ttarget = arguments[1] || {};\\n\\t\\t// skip the boolean and the target\\n\\t\\ti = 2;\\n\\t}\\n\\tif (target == null || (typeof target !== 'object' && typeof target !== 'function')) {\\n\\t\\ttarget = {};\\n\\t}\\n\\n\\tfor (; i < length; ++i) {\\n\\t\\toptions = arguments[i];\\n\\t\\t// Only deal with non-null/undefined values\\n\\t\\tif (options != null) {\\n\\t\\t\\t// Extend the base object\\n\\t\\t\\tfor (name in options) {\\n\\t\\t\\t\\tsrc = target[name];\\n\\t\\t\\t\\tcopy = options[name];\\n\\n\\t\\t\\t\\t// Prevent never-ending loop\\n\\t\\t\\t\\tif (target !== copy) {\\n\\t\\t\\t\\t\\t// Recurse if we're merging plain objects or arrays\\n\\t\\t\\t\\t\\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\\n\\t\\t\\t\\t\\t\\tif (copyIsArray) {\\n\\t\\t\\t\\t\\t\\t\\tcopyIsArray = false;\\n\\t\\t\\t\\t\\t\\t\\tclone = src && isArray(src) ? src : [];\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\tclone = src && isPlainObject(src) ? src : {};\\n\\t\\t\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t\\t\\t// Never move original objects, clone them\\n\\t\\t\\t\\t\\t\\ttarget[name] = extend(deep, clone, copy);\\n\\n\\t\\t\\t\\t\\t// Don't bring in undefined values\\n\\t\\t\\t\\t\\t} else if (typeof copy !== 'undefined') {\\n\\t\\t\\t\\t\\t\\ttarget[name] = copy;\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t// Return the modified object\\n\\treturn target;\\n};\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/extend/index.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/fast-diff/diff.js\":\n/*!****************************************!*\\\n !*** ./node_modules/fast-diff/diff.js ***!\n \\****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\neval(\"/**\\n * This library modifies the diff-patch-match library by Neil Fraser\\n * by removing the patch and match functionality and certain advanced\\n * options in the diff function. The original license is as follows:\\n *\\n * ===\\n *\\n * Diff Match and Patch\\n *\\n * Copyright 2006 Google Inc.\\n * http://code.google.com/p/google-diff-match-patch/\\n *\\n * Licensed under the Apache License, Version 2.0 (the \\\"License\\\");\\n * you may not use this file except in compliance with the License.\\n * You may obtain a copy of the License at\\n *\\n * http://www.apache.org/licenses/LICENSE-2.0\\n *\\n * Unless required by applicable law or agreed to in writing, software\\n * distributed under the License is distributed on an \\\"AS IS\\\" BASIS,\\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\\n * See the License for the specific language governing permissions and\\n * limitations under the License.\\n */\\n\\n\\n/**\\n * The data structure representing a diff is an array of tuples:\\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\\n */\\nvar DIFF_DELETE = -1;\\nvar DIFF_INSERT = 1;\\nvar DIFF_EQUAL = 0;\\n\\n\\n/**\\n * Find the differences between two texts. Simplifies the problem by stripping\\n * any common prefix or suffix off the texts before diffing.\\n * @param {string} text1 Old string to be diffed.\\n * @param {string} text2 New string to be diffed.\\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\\n * @return {Array} Array of diff tuples.\\n */\\nfunction diff_main(text1, text2, cursor_pos) {\\n // Check for equality (speedup).\\n if (text1 == text2) {\\n if (text1) {\\n return [[DIFF_EQUAL, text1]];\\n }\\n return [];\\n }\\n\\n // Check cursor_pos within bounds\\n if (cursor_pos < 0 || text1.length < cursor_pos) {\\n cursor_pos = null;\\n }\\n\\n // Trim off common prefix (speedup).\\n var commonlength = diff_commonPrefix(text1, text2);\\n var commonprefix = text1.substring(0, commonlength);\\n text1 = text1.substring(commonlength);\\n text2 = text2.substring(commonlength);\\n\\n // Trim off common suffix (speedup).\\n commonlength = diff_commonSuffix(text1, text2);\\n var commonsuffix = text1.substring(text1.length - commonlength);\\n text1 = text1.substring(0, text1.length - commonlength);\\n text2 = text2.substring(0, text2.length - commonlength);\\n\\n // Compute the diff on the middle block.\\n var diffs = diff_compute_(text1, text2);\\n\\n // Restore the prefix and suffix.\\n if (commonprefix) {\\n diffs.unshift([DIFF_EQUAL, commonprefix]);\\n }\\n if (commonsuffix) {\\n diffs.push([DIFF_EQUAL, commonsuffix]);\\n }\\n diff_cleanupMerge(diffs);\\n if (cursor_pos != null) {\\n diffs = fix_cursor(diffs, cursor_pos);\\n }\\n diffs = fix_emoji(diffs);\\n return diffs;\\n};\\n\\n\\n/**\\n * Find the differences between two texts. Assumes that the texts do not\\n * have any common prefix or suffix.\\n * @param {string} text1 Old string to be diffed.\\n * @param {string} text2 New string to be diffed.\\n * @return {Array} Array of diff tuples.\\n */\\nfunction diff_compute_(text1, text2) {\\n var diffs;\\n\\n if (!text1) {\\n // Just add some text (speedup).\\n return [[DIFF_INSERT, text2]];\\n }\\n\\n if (!text2) {\\n // Just delete some text (speedup).\\n return [[DIFF_DELETE, text1]];\\n }\\n\\n var longtext = text1.length > text2.length ? text1 : text2;\\n var shorttext = text1.length > text2.length ? text2 : text1;\\n var i = longtext.indexOf(shorttext);\\n if (i != -1) {\\n // Shorter text is inside the longer text (speedup).\\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\\n [DIFF_EQUAL, shorttext],\\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\\n // Swap insertions for deletions if diff is reversed.\\n if (text1.length > text2.length) {\\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\\n }\\n return diffs;\\n }\\n\\n if (shorttext.length == 1) {\\n // Single character string.\\n // After the previous speedup, the character can't be an equality.\\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\\n }\\n\\n // Check to see if the problem can be split in two.\\n var hm = diff_halfMatch_(text1, text2);\\n if (hm) {\\n // A half-match was found, sort out the return data.\\n var text1_a = hm[0];\\n var text1_b = hm[1];\\n var text2_a = hm[2];\\n var text2_b = hm[3];\\n var mid_common = hm[4];\\n // Send both pairs off for separate processing.\\n var diffs_a = diff_main(text1_a, text2_a);\\n var diffs_b = diff_main(text1_b, text2_b);\\n // Merge the results.\\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\\n }\\n\\n return diff_bisect_(text1, text2);\\n};\\n\\n\\n/**\\n * Find the 'middle snake' of a diff, split the problem in two\\n * and return the recursively constructed diff.\\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\\n * @param {string} text1 Old string to be diffed.\\n * @param {string} text2 New string to be diffed.\\n * @return {Array} Array of diff tuples.\\n * @private\\n */\\nfunction diff_bisect_(text1, text2) {\\n // Cache the text lengths to prevent multiple calls.\\n var text1_length = text1.length;\\n var text2_length = text2.length;\\n var max_d = Math.ceil((text1_length + text2_length) / 2);\\n var v_offset = max_d;\\n var v_length = 2 * max_d;\\n var v1 = new Array(v_length);\\n var v2 = new Array(v_length);\\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\\n // integers and undefined.\\n for (var x = 0; x < v_length; x++) {\\n v1[x] = -1;\\n v2[x] = -1;\\n }\\n v1[v_offset + 1] = 0;\\n v2[v_offset + 1] = 0;\\n var delta = text1_length - text2_length;\\n // If the total number of characters is odd, then the front path will collide\\n // with the reverse path.\\n var front = (delta % 2 != 0);\\n // Offsets for start and end of k loop.\\n // Prevents mapping of space beyond the grid.\\n var k1start = 0;\\n var k1end = 0;\\n var k2start = 0;\\n var k2end = 0;\\n for (var d = 0; d < max_d; d++) {\\n // Walk the front path one step.\\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\\n var k1_offset = v_offset + k1;\\n var x1;\\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\\n x1 = v1[k1_offset + 1];\\n } else {\\n x1 = v1[k1_offset - 1] + 1;\\n }\\n var y1 = x1 - k1;\\n while (x1 < text1_length && y1 < text2_length &&\\n text1.charAt(x1) == text2.charAt(y1)) {\\n x1++;\\n y1++;\\n }\\n v1[k1_offset] = x1;\\n if (x1 > text1_length) {\\n // Ran off the right of the graph.\\n k1end += 2;\\n } else if (y1 > text2_length) {\\n // Ran off the bottom of the graph.\\n k1start += 2;\\n } else if (front) {\\n var k2_offset = v_offset + delta - k1;\\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\\n // Mirror x2 onto top-left coordinate system.\\n var x2 = text1_length - v2[k2_offset];\\n if (x1 >= x2) {\\n // Overlap detected.\\n return diff_bisectSplit_(text1, text2, x1, y1);\\n }\\n }\\n }\\n }\\n\\n // Walk the reverse path one step.\\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\\n var k2_offset = v_offset + k2;\\n var x2;\\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\\n x2 = v2[k2_offset + 1];\\n } else {\\n x2 = v2[k2_offset - 1] + 1;\\n }\\n var y2 = x2 - k2;\\n while (x2 < text1_length && y2 < text2_length &&\\n text1.charAt(text1_length - x2 - 1) ==\\n text2.charAt(text2_length - y2 - 1)) {\\n x2++;\\n y2++;\\n }\\n v2[k2_offset] = x2;\\n if (x2 > text1_length) {\\n // Ran off the left of the graph.\\n k2end += 2;\\n } else if (y2 > text2_length) {\\n // Ran off the top of the graph.\\n k2start += 2;\\n } else if (!front) {\\n var k1_offset = v_offset + delta - k2;\\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\\n var x1 = v1[k1_offset];\\n var y1 = v_offset + x1 - k1_offset;\\n // Mirror x2 onto top-left coordinate system.\\n x2 = text1_length - x2;\\n if (x1 >= x2) {\\n // Overlap detected.\\n return diff_bisectSplit_(text1, text2, x1, y1);\\n }\\n }\\n }\\n }\\n }\\n // Diff took too long and hit the deadline or\\n // number of diffs equals number of characters, no commonality at all.\\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\\n};\\n\\n\\n/**\\n * Given the location of the 'middle snake', split the diff in two parts\\n * and recurse.\\n * @param {string} text1 Old string to be diffed.\\n * @param {string} text2 New string to be diffed.\\n * @param {number} x Index of split point in text1.\\n * @param {number} y Index of split point in text2.\\n * @return {Array} Array of diff tuples.\\n */\\nfunction diff_bisectSplit_(text1, text2, x, y) {\\n var text1a = text1.substring(0, x);\\n var text2a = text2.substring(0, y);\\n var text1b = text1.substring(x);\\n var text2b = text2.substring(y);\\n\\n // Compute both diffs serially.\\n var diffs = diff_main(text1a, text2a);\\n var diffsb = diff_main(text1b, text2b);\\n\\n return diffs.concat(diffsb);\\n};\\n\\n\\n/**\\n * Determine the common prefix of two strings.\\n * @param {string} text1 First string.\\n * @param {string} text2 Second string.\\n * @return {number} The number of characters common to the start of each\\n * string.\\n */\\nfunction diff_commonPrefix(text1, text2) {\\n // Quick check for common null cases.\\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\\n return 0;\\n }\\n // Binary search.\\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\\n var pointermin = 0;\\n var pointermax = Math.min(text1.length, text2.length);\\n var pointermid = pointermax;\\n var pointerstart = 0;\\n while (pointermin < pointermid) {\\n if (text1.substring(pointerstart, pointermid) ==\\n text2.substring(pointerstart, pointermid)) {\\n pointermin = pointermid;\\n pointerstart = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n return pointermid;\\n};\\n\\n\\n/**\\n * Determine the common suffix of two strings.\\n * @param {string} text1 First string.\\n * @param {string} text2 Second string.\\n * @return {number} The number of characters common to the end of each string.\\n */\\nfunction diff_commonSuffix(text1, text2) {\\n // Quick check for common null cases.\\n if (!text1 || !text2 ||\\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\\n return 0;\\n }\\n // Binary search.\\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\\n var pointermin = 0;\\n var pointermax = Math.min(text1.length, text2.length);\\n var pointermid = pointermax;\\n var pointerend = 0;\\n while (pointermin < pointermid) {\\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\\n pointermin = pointermid;\\n pointerend = pointermin;\\n } else {\\n pointermax = pointermid;\\n }\\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\\n }\\n return pointermid;\\n};\\n\\n\\n/**\\n * Do the two texts share a substring which is at least half the length of the\\n * longer text?\\n * This speedup can produce non-minimal diffs.\\n * @param {string} text1 First string.\\n * @param {string} text2 Second string.\\n * @return {Array.} Five element Array, containing the prefix of\\n * text1, the suffix of text1, the prefix of text2, the suffix of\\n * text2 and the common middle. Or null if there was no match.\\n */\\nfunction diff_halfMatch_(text1, text2) {\\n var longtext = text1.length > text2.length ? text1 : text2;\\n var shorttext = text1.length > text2.length ? text2 : text1;\\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\\n return null; // Pointless.\\n }\\n\\n /**\\n * Does a substring of shorttext exist within longtext such that the substring\\n * is at least half the length of longtext?\\n * Closure, but does not reference any external variables.\\n * @param {string} longtext Longer string.\\n * @param {string} shorttext Shorter string.\\n * @param {number} i Start index of quarter length substring within longtext.\\n * @return {Array.} Five element Array, containing the prefix of\\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\\n * of shorttext and the common middle. Or null if there was no match.\\n * @private\\n */\\n function diff_halfMatchI_(longtext, shorttext, i) {\\n // Start with a 1/4 length substring at position i as a seed.\\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\\n var j = -1;\\n var best_common = '';\\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\\n var prefixLength = diff_commonPrefix(longtext.substring(i),\\n shorttext.substring(j));\\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\\n shorttext.substring(0, j));\\n if (best_common.length < suffixLength + prefixLength) {\\n best_common = shorttext.substring(j - suffixLength, j) +\\n shorttext.substring(j, j + prefixLength);\\n best_longtext_a = longtext.substring(0, i - suffixLength);\\n best_longtext_b = longtext.substring(i + prefixLength);\\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\\n best_shorttext_b = shorttext.substring(j + prefixLength);\\n }\\n }\\n if (best_common.length * 2 >= longtext.length) {\\n return [best_longtext_a, best_longtext_b,\\n best_shorttext_a, best_shorttext_b, best_common];\\n } else {\\n return null;\\n }\\n }\\n\\n // First check if the second quarter is the seed for a half-match.\\n var hm1 = diff_halfMatchI_(longtext, shorttext,\\n Math.ceil(longtext.length / 4));\\n // Check again based on the third quarter.\\n var hm2 = diff_halfMatchI_(longtext, shorttext,\\n Math.ceil(longtext.length / 2));\\n var hm;\\n if (!hm1 && !hm2) {\\n return null;\\n } else if (!hm2) {\\n hm = hm1;\\n } else if (!hm1) {\\n hm = hm2;\\n } else {\\n // Both matched. Select the longest.\\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\\n }\\n\\n // A half-match was found, sort out the return data.\\n var text1_a, text1_b, text2_a, text2_b;\\n if (text1.length > text2.length) {\\n text1_a = hm[0];\\n text1_b = hm[1];\\n text2_a = hm[2];\\n text2_b = hm[3];\\n } else {\\n text2_a = hm[0];\\n text2_b = hm[1];\\n text1_a = hm[2];\\n text1_b = hm[3];\\n }\\n var mid_common = hm[4];\\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\\n};\\n\\n\\n/**\\n * Reorder and merge like edit sections. Merge equalities.\\n * Any edit section can move as long as it doesn't cross an equality.\\n * @param {Array} diffs Array of diff tuples.\\n */\\nfunction diff_cleanupMerge(diffs) {\\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\\n var pointer = 0;\\n var count_delete = 0;\\n var count_insert = 0;\\n var text_delete = '';\\n var text_insert = '';\\n var commonlength;\\n while (pointer < diffs.length) {\\n switch (diffs[pointer][0]) {\\n case DIFF_INSERT:\\n count_insert++;\\n text_insert += diffs[pointer][1];\\n pointer++;\\n break;\\n case DIFF_DELETE:\\n count_delete++;\\n text_delete += diffs[pointer][1];\\n pointer++;\\n break;\\n case DIFF_EQUAL:\\n // Upon reaching an equality, check for prior redundancies.\\n if (count_delete + count_insert > 1) {\\n if (count_delete !== 0 && count_insert !== 0) {\\n // Factor out any common prefixies.\\n commonlength = diff_commonPrefix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n if ((pointer - count_delete - count_insert) > 0 &&\\n diffs[pointer - count_delete - count_insert - 1][0] ==\\n DIFF_EQUAL) {\\n diffs[pointer - count_delete - count_insert - 1][1] +=\\n text_insert.substring(0, commonlength);\\n } else {\\n diffs.splice(0, 0, [DIFF_EQUAL,\\n text_insert.substring(0, commonlength)]);\\n pointer++;\\n }\\n text_insert = text_insert.substring(commonlength);\\n text_delete = text_delete.substring(commonlength);\\n }\\n // Factor out any common suffixies.\\n commonlength = diff_commonSuffix(text_insert, text_delete);\\n if (commonlength !== 0) {\\n diffs[pointer][1] = text_insert.substring(text_insert.length -\\n commonlength) + diffs[pointer][1];\\n text_insert = text_insert.substring(0, text_insert.length -\\n commonlength);\\n text_delete = text_delete.substring(0, text_delete.length -\\n commonlength);\\n }\\n }\\n // Delete the offending records and add the merged ones.\\n if (count_delete === 0) {\\n diffs.splice(pointer - count_insert,\\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\\n } else if (count_insert === 0) {\\n diffs.splice(pointer - count_delete,\\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\\n } else {\\n diffs.splice(pointer - count_delete - count_insert,\\n count_delete + count_insert, [DIFF_DELETE, text_delete],\\n [DIFF_INSERT, text_insert]);\\n }\\n pointer = pointer - count_delete - count_insert +\\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\\n // Merge this equality with the previous one.\\n diffs[pointer - 1][1] += diffs[pointer][1];\\n diffs.splice(pointer, 1);\\n } else {\\n pointer++;\\n }\\n count_insert = 0;\\n count_delete = 0;\\n text_delete = '';\\n text_insert = '';\\n break;\\n }\\n }\\n if (diffs[diffs.length - 1][1] === '') {\\n diffs.pop(); // Remove the dummy entry at the end.\\n }\\n\\n // Second pass: look for single edits surrounded on both sides by equalities\\n // which can be shifted sideways to eliminate an equality.\\n // e.g: ABAC -> ABAC\\n var changes = false;\\n pointer = 1;\\n // Intentionally ignore the first and last element (don't need checking).\\n while (pointer < diffs.length - 1) {\\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\\n diffs[pointer + 1][0] == DIFF_EQUAL) {\\n // This is a single edit surrounded by equalities.\\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\\n // Shift the edit over the previous equality.\\n diffs[pointer][1] = diffs[pointer - 1][1] +\\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\\n diffs[pointer - 1][1].length);\\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\\n diffs.splice(pointer - 1, 1);\\n changes = true;\\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\\n diffs[pointer + 1][1]) {\\n // Shift the edit over the next equality.\\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\\n diffs[pointer][1] =\\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\\n diffs[pointer + 1][1];\\n diffs.splice(pointer + 1, 1);\\n changes = true;\\n }\\n }\\n pointer++;\\n }\\n // If shifts were made, the diff needs reordering and another shift sweep.\\n if (changes) {\\n diff_cleanupMerge(diffs);\\n }\\n};\\n\\n\\nvar diff = diff_main;\\ndiff.INSERT = DIFF_INSERT;\\ndiff.DELETE = DIFF_DELETE;\\ndiff.EQUAL = DIFF_EQUAL;\\n\\nmodule.exports = diff;\\n\\n/*\\n * Modify a diff such that the cursor position points to the start of a change:\\n * E.g.\\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\\n *\\n * @param {Array} diffs Array of diff tuples\\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\\n */\\nfunction cursor_normalize_diff (diffs, cursor_pos) {\\n if (cursor_pos === 0) {\\n return [DIFF_EQUAL, diffs];\\n }\\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\\n var d = diffs[i];\\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\\n var next_pos = current_pos + d[1].length;\\n if (cursor_pos === next_pos) {\\n return [i + 1, diffs];\\n } else if (cursor_pos < next_pos) {\\n // copy to prevent side effects\\n diffs = diffs.slice();\\n // split d into two diff changes\\n var split_pos = cursor_pos - current_pos;\\n var d_left = [d[0], d[1].slice(0, split_pos)];\\n var d_right = [d[0], d[1].slice(split_pos)];\\n diffs.splice(i, 1, d_left, d_right);\\n return [i + 1, diffs];\\n } else {\\n current_pos = next_pos;\\n }\\n }\\n }\\n throw new Error('cursor_pos is out of bounds!')\\n}\\n\\n/*\\n * Modify a diff such that the edit position is \\\"shifted\\\" to the proposed edit location (cursor_position).\\n *\\n * Case 1)\\n * Check if a naive shift is possible:\\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\\n * Case 2)\\n * Check if the following shifts are possible:\\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\\n * ^ ^\\n * d d_next\\n *\\n * @param {Array} diffs Array of diff tuples\\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\\n * @return {Array} Array of diff tuples\\n */\\nfunction fix_cursor (diffs, cursor_pos) {\\n var norm = cursor_normalize_diff(diffs, cursor_pos);\\n var ndiffs = norm[1];\\n var cursor_pointer = norm[0];\\n var d = ndiffs[cursor_pointer];\\n var d_next = ndiffs[cursor_pointer + 1];\\n\\n if (d == null) {\\n // Text was deleted from end of original string,\\n // cursor is now out of bounds in new string\\n return diffs;\\n } else if (d[0] !== DIFF_EQUAL) {\\n // A modification happened at the cursor location.\\n // This is the expected outcome, so we can return the original diff.\\n return diffs;\\n } else {\\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\\n // Case 1)\\n // It is possible to perform a naive shift\\n ndiffs.splice(cursor_pointer, 2, d_next, d)\\n return merge_tuples(ndiffs, cursor_pointer, 2)\\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\\n // Case 2)\\n // d[1] is a prefix of d_next[1]\\n // We can assume that d_next[0] !== 0, since d[0] === 0\\n // Shift edit locations..\\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\\n var suffix = d_next[1].slice(d[1].length);\\n if (suffix.length > 0) {\\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\\n }\\n return merge_tuples(ndiffs, cursor_pointer, 3)\\n } else {\\n // Not possible to perform any modification\\n return diffs;\\n }\\n }\\n}\\n\\n/*\\n * Check diff did not split surrogate pairs.\\n * Ex. [0, '\\\\uD83D'], [-1, '\\\\uDC36'], [1, '\\\\uDC2F'] -> [-1, '\\\\uD83D\\\\uDC36'], [1, '\\\\uD83D\\\\uDC2F']\\n * '\\\\uD83D\\\\uDC36' === '🐶', '\\\\uD83D\\\\uDC2F' === '🐯'\\n *\\n * @param {Array} diffs Array of diff tuples\\n * @return {Array} Array of diff tuples\\n */\\nfunction fix_emoji (diffs) {\\n var compact = false;\\n var starts_with_pair_end = function(str) {\\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\\n }\\n var ends_with_pair_start = function(str) {\\n return str.charCodeAt(str.length-1) >= 0xD800 && str.charCodeAt(str.length-1) <= 0xDBFF;\\n }\\n for (var i = 2; i < diffs.length; i += 1) {\\n if (diffs[i-2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i-2][1]) &&\\n diffs[i-1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i-1][1]) &&\\n diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\\n compact = true;\\n\\n diffs[i-1][1] = diffs[i-2][1].slice(-1) + diffs[i-1][1];\\n diffs[i][1] = diffs[i-2][1].slice(-1) + diffs[i][1];\\n\\n diffs[i-2][1] = diffs[i-2][1].slice(0, -1);\\n }\\n }\\n if (!compact) {\\n return diffs;\\n }\\n var fixed_diffs = [];\\n for (var i = 0; i < diffs.length; i += 1) {\\n if (diffs[i][1].length > 0) {\\n fixed_diffs.push(diffs[i]);\\n }\\n }\\n return fixed_diffs;\\n}\\n\\n/*\\n * Try to merge tuples with their neigbors in a given range.\\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\\n *\\n * @param {Array} diffs Array of diff tuples.\\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\\n * @param {Int} length Number of consecutive elements to check.\\n * @return {Array} Array of merged diff tuples.\\n */\\nfunction merge_tuples (diffs, start, length) {\\n // Check from (start-1) to (start+length).\\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\\n if (i + 1 < diffs.length) {\\n var left_d = diffs[i];\\n var right_d = diffs[i+1];\\n if (left_d[0] === right_d[1]) {\\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\\n }\\n }\\n }\\n return diffs;\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/fast-diff/diff.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/attributor/attributor.ts\":\n/*!*************************************************************!*\\\n !*** ./node_modules/parchment/src/attributor/attributor.ts ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Attributor; });\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\nclass Attributor {\\n static keys(node) {\\n return Array.from(node.attributes).map(function (item) {\\n return item.name;\\n });\\n }\\n constructor(attrName, keyName, options = {}) {\\n this.attrName = attrName;\\n this.keyName = keyName;\\n let attributeBit = _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].TYPE & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n if (options.scope != null) {\\n // Ignore type bits, force attribute bit\\n this.scope = (options.scope & _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].LEVEL) | attributeBit;\\n }\\n else {\\n this.scope = _scope__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].ATTRIBUTE;\\n }\\n if (options.whitelist != null)\\n this.whitelist = options.whitelist;\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value))\\n return false;\\n node.setAttribute(this.keyName, value);\\n return true;\\n }\\n canAdd(node, value) {\\n if (this.whitelist == null)\\n return true;\\n if (typeof value === 'string') {\\n return this.whitelist.indexOf(value.replace(/[\\\"']/g, '')) > -1;\\n }\\n else {\\n return this.whitelist.indexOf(value) > -1;\\n }\\n }\\n remove(node) {\\n node.removeAttribute(this.keyName);\\n }\\n value(node) {\\n let value = node.getAttribute(this.keyName);\\n if (this.canAdd(node, value) && value) {\\n return value;\\n }\\n return '';\\n }\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/attributor/attributor.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/attributor/class.ts\":\n/*!********************************************************!*\\\n !*** ./node_modules/parchment/src/attributor/class.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _attributor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n\\nfunction match(node, prefix) {\\n let className = node.getAttribute('class') || '';\\n return className.split(/\\\\s+/).filter(function (name) {\\n return name.indexOf(`${prefix}-`) === 0;\\n });\\n}\\nclass ClassAttributor extends _attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static keys(node) {\\n return (node.getAttribute('class') || '').split(/\\\\s+/).map(function (name) {\\n return name\\n .split('-')\\n .slice(0, -1)\\n .join('-');\\n });\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value))\\n return false;\\n this.remove(node);\\n node.classList.add(`${this.keyName}-${value}`);\\n return true;\\n }\\n remove(node) {\\n let matches = match(node, this.keyName);\\n matches.forEach(function (name) {\\n node.classList.remove(name);\\n });\\n if (node.classList.length === 0) {\\n node.removeAttribute('class');\\n }\\n }\\n value(node) {\\n let result = match(node, this.keyName)[0] || '';\\n let value = result.slice(this.keyName.length + 1); // +1 for hyphen\\n return this.canAdd(node, value) ? value : '';\\n }\\n}\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (ClassAttributor);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/attributor/class.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/attributor/store.ts\":\n/*!********************************************************!*\\\n !*** ./node_modules/parchment/src/attributor/store.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _attributor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n/* harmony import */ var _class__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./class */ \\\"./node_modules/parchment/src/attributor/class.ts\\\");\\n/* harmony import */ var _style__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./style */ \\\"./node_modules/parchment/src/attributor/style.ts\\\");\\n/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\n\\n\\nclass AttributorStore {\\n constructor(domNode) {\\n this.attributes = {};\\n this.domNode = domNode;\\n this.build();\\n }\\n attribute(attribute, value) {\\n // verb\\n if (value) {\\n if (attribute.add(this.domNode, value)) {\\n if (attribute.value(this.domNode) != null) {\\n this.attributes[attribute.attrName] = attribute;\\n }\\n else {\\n delete this.attributes[attribute.attrName];\\n }\\n }\\n }\\n else {\\n attribute.remove(this.domNode);\\n delete this.attributes[attribute.attrName];\\n }\\n }\\n build() {\\n this.attributes = {};\\n const blot = _registry__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].find(this.domNode);\\n if (blot == null)\\n return;\\n let attributes = _attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"].keys(this.domNode);\\n let classes = _class__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].keys(this.domNode);\\n let styles = _style__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].keys(this.domNode);\\n attributes\\n .concat(classes)\\n .concat(styles)\\n .forEach(name => {\\n let attr = blot.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].ATTRIBUTE);\\n if (attr instanceof _attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]) {\\n this.attributes[attr.attrName] = attr;\\n }\\n });\\n }\\n copy(target) {\\n Object.keys(this.attributes).forEach(key => {\\n let value = this.attributes[key].value(this.domNode);\\n target.format(key, value);\\n });\\n }\\n move(target) {\\n this.copy(target);\\n Object.keys(this.attributes).forEach(key => {\\n this.attributes[key].remove(this.domNode);\\n });\\n this.attributes = {};\\n }\\n values() {\\n return Object.keys(this.attributes).reduce((attributes, name) => {\\n attributes[name] = this.attributes[name].value(this.domNode);\\n return attributes;\\n }, {});\\n }\\n}\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (AttributorStore);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/attributor/store.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/attributor/style.ts\":\n/*!********************************************************!*\\\n !*** ./node_modules/parchment/src/attributor/style.ts ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _attributor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n\\nfunction camelize(name) {\\n let parts = name.split('-');\\n let rest = parts\\n .slice(1)\\n .map(function (part) {\\n return part[0].toUpperCase() + part.slice(1);\\n })\\n .join('');\\n return parts[0] + rest;\\n}\\nclass StyleAttributor extends _attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static keys(node) {\\n return (node.getAttribute('style') || '').split(';').map(function (value) {\\n let arr = value.split(':');\\n return arr[0].trim();\\n });\\n }\\n add(node, value) {\\n if (!this.canAdd(node, value))\\n return false;\\n // @ts-ignore\\n node.style[camelize(this.keyName)] = value;\\n return true;\\n }\\n remove(node) {\\n // @ts-ignore\\n node.style[camelize(this.keyName)] = '';\\n if (!node.getAttribute('style')) {\\n node.removeAttribute('style');\\n }\\n }\\n value(node) {\\n // @ts-ignore\\n let value = node.style[camelize(this.keyName)];\\n return this.canAdd(node, value) ? value : '';\\n }\\n}\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (StyleAttributor);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/attributor/style.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/abstract/container.ts\":\n/*!***************************************************************!*\\\n !*** ./node_modules/parchment/src/blot/abstract/container.ts ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _parent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\nclass ContainerBlot extends _parent__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n checkMerge() {\\n return (this.next !== null && this.next.statics.blotName === this.statics.blotName);\\n }\\n deleteAt(index, length) {\\n super.deleteAt(index, length);\\n this.enforceAllowedChildren();\\n }\\n formatAt(index, length, name, value) {\\n super.formatAt(index, length, name, value);\\n this.enforceAllowedChildren();\\n }\\n insertAt(index, value, def) {\\n super.insertAt(index, value, def);\\n this.enforceAllowedChildren();\\n }\\n optimize(context) {\\n super.optimize(context);\\n if (this.children.length > 0 && this.next != null && this.checkMerge()) {\\n this.next.moveChildren(this);\\n this.next.remove();\\n }\\n }\\n}\\nContainerBlot.blotName = 'container';\\nContainerBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].BLOCK_BLOT;\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (ContainerBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/abstract/container.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/abstract/leaf.ts\":\n/*!**********************************************************!*\\\n !*** ./node_modules/parchment/src/blot/abstract/leaf.ts ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\nclass LeafBlot extends _shadow__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static value(domNode) {\\n return true;\\n }\\n index(node, offset) {\\n if (this.domNode === node ||\\n this.domNode.compareDocumentPosition(node) &\\n Node.DOCUMENT_POSITION_CONTAINED_BY) {\\n return Math.min(offset, 1);\\n }\\n return -1;\\n }\\n position(index, inclusive) {\\n const childNodes = Array.from(this.parent.domNode.childNodes);\\n let offset = childNodes.indexOf(this.domNode);\\n if (index > 0)\\n offset += 1;\\n return [this.parent.domNode, offset];\\n }\\n value() {\\n return {\\n [this.statics.blotName]: this.statics.value(this.domNode) || true,\\n };\\n }\\n}\\nLeafBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].INLINE_BLOT;\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (LeafBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/abstract/leaf.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/abstract/parent.ts\":\n/*!************************************************************!*\\\n !*** ./node_modules/parchment/src/blot/abstract/parent.ts ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _collection_linked_list__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../collection/linked-list */ \\\"./node_modules/parchment/src/collection/linked-list.ts\\\");\\n/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shadow */ \\\"./node_modules/parchment/src/blot/abstract/shadow.ts\\\");\\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../error */ \\\"./node_modules/parchment/src/error.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\n\\nclass ParentBlot extends _shadow__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"] {\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n this.uiNode = null;\\n this.build();\\n }\\n appendChild(other) {\\n this.insertBefore(other);\\n }\\n attach() {\\n super.attach();\\n this.children.forEach(child => {\\n child.attach();\\n });\\n }\\n attachUI(node) {\\n if (this.uiNode != null) {\\n this.uiNode.remove();\\n }\\n this.uiNode = node;\\n this.uiNode.setAttribute('contenteditable', 'false');\\n this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\\n }\\n build() {\\n this.children = new _collection_linked_list__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]();\\n // Need to be reversed for if DOM nodes already in order\\n Array.from(this.domNode.childNodes)\\n .filter((node) => node !== this.uiNode)\\n .reverse()\\n .forEach((node) => {\\n try {\\n let child = makeAttachedBlot(node, this.scroll);\\n this.insertBefore(child, this.children.head || undefined);\\n }\\n catch (err) {\\n if (err instanceof _error__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"])\\n return;\\n else\\n throw err;\\n }\\n });\\n }\\n deleteAt(index, length) {\\n if (index === 0 && length === this.length()) {\\n return this.remove();\\n }\\n this.children.forEachAt(index, length, function (child, offset, length) {\\n child.deleteAt(offset, length);\\n });\\n }\\n descendant(criteria, index = 0) {\\n let [child, offset] = this.children.find(index);\\n if ((criteria.blotName == null && criteria(child)) ||\\n (criteria.blotName != null && child instanceof criteria)) {\\n return [child, offset];\\n }\\n else if (child instanceof ParentBlot) {\\n return child.descendant(criteria, offset);\\n }\\n else {\\n return [null, -1];\\n }\\n }\\n descendants(criteria, index = 0, length = Number.MAX_VALUE) {\\n let descendants = [];\\n let lengthLeft = length;\\n this.children.forEachAt(index, length, function (child, index, length) {\\n if ((criteria.blotName == null && criteria(child)) ||\\n (criteria.blotName != null && child instanceof criteria)) {\\n descendants.push(child);\\n }\\n if (child instanceof ParentBlot) {\\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\\n }\\n lengthLeft -= length;\\n });\\n return descendants;\\n }\\n detach() {\\n this.children.forEach(function (child) {\\n child.detach();\\n });\\n super.detach();\\n }\\n enforceAllowedChildren() {\\n let done = false;\\n const children = this.children.forEach((child) => {\\n if (done)\\n return;\\n const allowed = this.statics.allowedChildren.some((def) => child instanceof def);\\n if (allowed)\\n return;\\n if (child.statics.scope === _scope__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].BLOCK_BLOT) {\\n if (child.next != null) {\\n this.splitAfter(child);\\n }\\n if (child.prev != null) {\\n this.splitAfter(child.prev);\\n }\\n child.parent.unwrap();\\n done = true;\\n }\\n else if (child instanceof ParentBlot) {\\n child.unwrap();\\n }\\n else {\\n child.remove();\\n }\\n });\\n }\\n formatAt(index, length, name, value) {\\n this.children.forEachAt(index, length, function (child, offset, length) {\\n child.formatAt(offset, length, name, value);\\n });\\n }\\n insertAt(index, value, def) {\\n let [child, offset] = this.children.find(index);\\n if (child) {\\n child.insertAt(offset, value, def);\\n }\\n else {\\n let blot = def == null\\n ? this.scroll.create('text', value)\\n : this.scroll.create(value, def);\\n this.appendChild(blot);\\n }\\n }\\n insertBefore(childBlot, refBlot) {\\n if (childBlot.parent != null) {\\n childBlot.parent.children.remove(childBlot);\\n }\\n let refDomNode = null;\\n this.children.insertBefore(childBlot, refBlot || null);\\n if (refBlot != null) {\\n refDomNode = refBlot.domNode;\\n }\\n if (this.domNode.parentNode != childBlot.domNode ||\\n this.domNode.nextSibling != refDomNode) {\\n this.domNode.insertBefore(childBlot.domNode, refDomNode);\\n }\\n childBlot.parent = this;\\n childBlot.attach();\\n }\\n length() {\\n return this.children.reduce(function (memo, child) {\\n return memo + child.length();\\n }, 0);\\n }\\n moveChildren(targetParent, refNode) {\\n this.children.forEach(function (child) {\\n targetParent.insertBefore(child, refNode);\\n });\\n }\\n optimize(context) {\\n super.optimize(context);\\n this.enforceAllowedChildren();\\n if (this.uiNode != null && this.uiNode !== this.domNode.firstChild) {\\n this.domNode.insertBefore(this.uiNode, this.domNode.firstChild);\\n }\\n if (this.children.length === 0) {\\n if (this.statics.defaultChild != null) {\\n let child = this.scroll.create(this.statics.defaultChild.blotName);\\n this.appendChild(child);\\n // TODO double check if necessary\\n // child.optimize(context);\\n }\\n else {\\n this.remove();\\n }\\n }\\n }\\n path(index, inclusive = false) {\\n let [child, offset] = this.children.find(index, inclusive);\\n let position = [[this, index]];\\n if (child instanceof ParentBlot) {\\n return position.concat(child.path(offset, inclusive));\\n }\\n else if (child != null) {\\n position.push([child, offset]);\\n }\\n return position;\\n }\\n removeChild(child) {\\n this.children.remove(child);\\n }\\n replaceWith(name, value) {\\n const replacement = typeof name === 'string' ? this.scroll.create(name, value) : name;\\n if (replacement instanceof ParentBlot) {\\n this.moveChildren(replacement);\\n }\\n return super.replaceWith(replacement);\\n }\\n split(index, force = false) {\\n if (!force) {\\n if (index === 0)\\n return this;\\n if (index === this.length())\\n return this.next;\\n }\\n let after = this.clone();\\n if (this.parent) {\\n this.parent.insertBefore(after, this.next || undefined);\\n }\\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\\n const split = child.split(offset, force);\\n if (split != null) {\\n after.appendChild(split);\\n }\\n });\\n return after;\\n }\\n splitAfter(child) {\\n let after = this.clone();\\n while (child.next != null) {\\n after.appendChild(child.next);\\n }\\n if (this.parent) {\\n this.parent.insertBefore(after, this.next || undefined);\\n }\\n return after;\\n }\\n unwrap() {\\n if (this.parent) {\\n this.moveChildren(this.parent, this.next || undefined);\\n }\\n this.remove();\\n }\\n update(mutations, context) {\\n let addedNodes = [];\\n let removedNodes = [];\\n mutations.forEach(mutation => {\\n if (mutation.target === this.domNode && mutation.type === 'childList') {\\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\\n }\\n });\\n removedNodes.forEach((node) => {\\n // Check node has actually been removed\\n // One exception is Chrome does not immediately remove IFRAMEs\\n // from DOM but MutationRecord is correct in its reported removal\\n if (node.parentNode != null &&\\n // @ts-ignore\\n node.tagName !== 'IFRAME' &&\\n document.body.compareDocumentPosition(node) &\\n Node.DOCUMENT_POSITION_CONTAINED_BY) {\\n return;\\n }\\n let blot = this.scroll.find(node);\\n if (blot == null)\\n return;\\n if (blot.domNode.parentNode == null ||\\n blot.domNode.parentNode === this.domNode) {\\n blot.detach();\\n }\\n });\\n addedNodes\\n .filter(node => {\\n return node.parentNode === this.domNode || node === this.uiNode;\\n })\\n .sort(function (a, b) {\\n if (a === b)\\n return 0;\\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\\n return 1;\\n }\\n return -1;\\n })\\n .forEach(node => {\\n let refBlot = null;\\n if (node.nextSibling != null) {\\n refBlot = this.scroll.find(node.nextSibling);\\n }\\n let blot = makeAttachedBlot(node, this.scroll);\\n if (blot.next != refBlot || blot.next == null) {\\n if (blot.parent != null) {\\n blot.parent.removeChild(this);\\n }\\n this.insertBefore(blot, refBlot || undefined);\\n }\\n });\\n this.enforceAllowedChildren();\\n }\\n}\\nfunction makeAttachedBlot(node, scroll) {\\n let blot = scroll.find(node);\\n if (blot == null) {\\n try {\\n blot = scroll.create(node);\\n }\\n catch (e) {\\n blot = scroll.create(_scope__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].INLINE);\\n Array.from(node.childNodes).forEach(function (child) {\\n // @ts-ignore\\n blot.domNode.appendChild(child);\\n });\\n if (node.parentNode) {\\n node.parentNode.replaceChild(blot.domNode, node);\\n }\\n blot.attach();\\n }\\n }\\n return blot;\\n}\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (ParentBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/abstract/parent.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/abstract/shadow.ts\":\n/*!************************************************************!*\\\n !*** ./node_modules/parchment/src/blot/abstract/shadow.ts ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../error */ \\\"./node_modules/parchment/src/error.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n\\n\\n\\nclass ShadowBlot {\\n constructor(scroll, domNode) {\\n this.scroll = scroll;\\n this.domNode = domNode;\\n _registry__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].blots.set(domNode, this);\\n this.prev = null;\\n this.next = null;\\n }\\n // Hack for accessing inherited static methods\\n get statics() {\\n return this.constructor;\\n }\\n static create(value) {\\n if (this.tagName == null) {\\n throw new _error__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]('Blot definition missing tagName');\\n }\\n let node;\\n if (Array.isArray(this.tagName)) {\\n if (typeof value === 'string') {\\n value = value.toUpperCase();\\n if (parseInt(value).toString() === value) {\\n value = parseInt(value);\\n }\\n }\\n if (typeof value === 'number') {\\n node = document.createElement(this.tagName[value - 1]);\\n }\\n else if (this.tagName.indexOf(value) > -1) {\\n node = document.createElement(value);\\n }\\n else {\\n node = document.createElement(this.tagName[0]);\\n }\\n }\\n else {\\n node = document.createElement(this.tagName);\\n }\\n if (this.className) {\\n node.classList.add(this.className);\\n }\\n return node;\\n }\\n attach() {\\n // Nothing to do\\n }\\n clone() {\\n let domNode = this.domNode.cloneNode(false);\\n return this.scroll.create(domNode);\\n }\\n detach() {\\n if (this.parent != null)\\n this.parent.removeChild(this);\\n _registry__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"].blots.delete(this.domNode);\\n }\\n deleteAt(index, length) {\\n let blot = this.isolate(index, length);\\n blot.remove();\\n }\\n formatAt(index, length, name, value) {\\n let blot = this.isolate(index, length);\\n if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].BLOT) != null && value) {\\n blot.wrap(name, value);\\n }\\n else if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].ATTRIBUTE) != null) {\\n let parent = this.scroll.create(this.statics.scope);\\n blot.wrap(parent);\\n parent.format(name, value);\\n }\\n }\\n insertAt(index, value, def) {\\n let blot = def == null\\n ? this.scroll.create('text', value)\\n : this.scroll.create(value, def);\\n let ref = this.split(index);\\n this.parent.insertBefore(blot, ref || undefined);\\n }\\n isolate(index, length) {\\n let target = this.split(index);\\n if (target == null) {\\n throw new Error('Attempt to isolate at end');\\n }\\n target.split(length);\\n return target;\\n }\\n length() {\\n return 1;\\n }\\n offset(root = this.parent) {\\n if (this.parent == null || this == root)\\n return 0;\\n return this.parent.children.offset(this) + this.parent.offset(root);\\n }\\n optimize(context) {\\n if (this.statics.requiredContainer &&\\n !(this.parent instanceof this.statics.requiredContainer)) {\\n this.wrap(this.statics.requiredContainer.blotName);\\n }\\n }\\n remove() {\\n if (this.domNode.parentNode != null) {\\n this.domNode.parentNode.removeChild(this.domNode);\\n }\\n this.detach();\\n }\\n replaceWith(name, value) {\\n const replacement = typeof name === 'string' ? this.scroll.create(name, value) : name;\\n if (this.parent != null) {\\n this.parent.insertBefore(replacement, this.next || undefined);\\n this.remove();\\n }\\n return replacement;\\n }\\n split(index, force) {\\n return index === 0 ? this : this.next;\\n }\\n update(mutations, context) {\\n // Nothing to do by default\\n }\\n wrap(name, value) {\\n let wrapper = typeof name === 'string' ? this.scroll.create(name, value) : name;\\n if (this.parent != null) {\\n this.parent.insertBefore(wrapper, this.next || undefined);\\n }\\n wrapper.appendChild(this);\\n return wrapper;\\n }\\n}\\nShadowBlot.blotName = 'abstract';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (ShadowBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/abstract/shadow.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/block.ts\":\n/*!**************************************************!*\\\n !*** ./node_modules/parchment/src/blot/block.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _attributor_attributor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../attributor/attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n/* harmony import */ var _attributor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributor/store */ \\\"./node_modules/parchment/src/attributor/store.ts\\\");\\n/* harmony import */ var _abstract_parent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n/* harmony import */ var _inline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./inline */ \\\"./node_modules/parchment/src/blot/inline.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\n\\n\\n\\nclass BlockBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n this.attributes = new _attributor_store__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"](this.domNode);\\n }\\n static formats(domNode, scroll) {\\n const match = scroll.query(BlockBlot.blotName);\\n if (match != null && domNode.tagName === match.tagName) {\\n return undefined;\\n }\\n else if (typeof this.tagName === 'string') {\\n return true;\\n }\\n else if (Array.isArray(this.tagName)) {\\n return domNode.tagName.toLowerCase();\\n }\\n }\\n format(name, value) {\\n const format = this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].BLOCK);\\n if (format == null) {\\n return;\\n }\\n else if (format instanceof _attributor_attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]) {\\n this.attributes.attribute(format, value);\\n }\\n else if (name === this.statics.blotName && !value) {\\n this.replaceWith(BlockBlot.blotName);\\n }\\n else if (value &&\\n (name !== this.statics.blotName || this.formats()[name] !== value)) {\\n this.replaceWith(name, value);\\n }\\n }\\n formats() {\\n const formats = this.attributes.values();\\n const format = this.statics.formats(this.domNode, this.scroll);\\n if (format != null) {\\n formats[this.statics.blotName] = format;\\n }\\n return formats;\\n }\\n formatAt(index, length, name, value) {\\n if (this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].BLOCK) != null) {\\n this.format(name, value);\\n }\\n else {\\n super.formatAt(index, length, name, value);\\n }\\n }\\n insertAt(index, value, def) {\\n if (def == null || this.scroll.query(value, _scope__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].INLINE) != null) {\\n // Insert text or inline\\n super.insertAt(index, value, def);\\n }\\n else {\\n const after = this.split(index);\\n if (after != null) {\\n const blot = this.scroll.create(value, def);\\n after.parent.insertBefore(blot, after);\\n }\\n else {\\n throw new Error('Attempt to insertAt after block boundaries');\\n }\\n }\\n }\\n replaceWith(name, value) {\\n const replacement = super.replaceWith(name, value);\\n this.attributes.copy(replacement);\\n return replacement;\\n }\\n update(mutations, context) {\\n super.update(mutations, context);\\n const attributeChanged = mutations.some(mutation => mutation.target === this.domNode && mutation.type === 'attributes');\\n if (attributeChanged) {\\n this.attributes.build();\\n }\\n }\\n}\\nBlockBlot.allowedChildren = [_inline__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"], BlockBlot, _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"]];\\nBlockBlot.blotName = 'block';\\nBlockBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"].BLOCK_BLOT;\\nBlockBlot.tagName = 'P';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (BlockBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/block.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/embed.ts\":\n/*!**************************************************!*\\\n !*** ./node_modules/parchment/src/blot/embed.ts ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n\\nclass EmbedBlot extends _abstract_leaf__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n static formats(domNode, scroll) {\\n return undefined;\\n }\\n format(name, value) {\\n // super.formatAt wraps, which is what we want in general,\\n // but this allows subclasses to overwrite for formats\\n // that just apply to particular embeds\\n super.formatAt(0, this.length(), name, value);\\n }\\n formatAt(index, length, name, value) {\\n if (index === 0 && length === this.length()) {\\n this.format(name, value);\\n }\\n else {\\n super.formatAt(index, length, name, value);\\n }\\n }\\n formats() {\\n return this.statics.formats(this.domNode, this.scroll);\\n }\\n}\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (EmbedBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/embed.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/inline.ts\":\n/*!***************************************************!*\\\n !*** ./node_modules/parchment/src/blot/inline.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _attributor_attributor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../attributor/attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n/* harmony import */ var _attributor_store__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../attributor/store */ \\\"./node_modules/parchment/src/attributor/store.ts\\\");\\n/* harmony import */ var _abstract_parent__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\n\\n\\n// Shallow object comparison\\nfunction isEqual(obj1, obj2) {\\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\\n return false;\\n // @ts-ignore\\n for (let prop in obj1) {\\n // @ts-ignore\\n if (obj1[prop] !== obj2[prop])\\n return false;\\n }\\n return true;\\n}\\nclass InlineBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"] {\\n constructor(scroll, domNode) {\\n super(scroll, domNode);\\n this.attributes = new _attributor_store__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"](this.domNode);\\n }\\n static formats(domNode, scroll) {\\n const match = scroll.query(InlineBlot.blotName);\\n if (match != null && domNode.tagName === match.tagName) {\\n return undefined;\\n }\\n else if (typeof this.tagName === 'string') {\\n return true;\\n }\\n else if (Array.isArray(this.tagName)) {\\n return domNode.tagName.toLowerCase();\\n }\\n return undefined;\\n }\\n format(name, value) {\\n if (name === this.statics.blotName && !value) {\\n this.children.forEach(child => {\\n if (!(child instanceof InlineBlot)) {\\n child = child.wrap(InlineBlot.blotName, true);\\n }\\n this.attributes.copy(child);\\n });\\n this.unwrap();\\n }\\n else {\\n const format = this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].INLINE);\\n if (format == null)\\n return;\\n if (format instanceof _attributor_attributor__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]) {\\n this.attributes.attribute(format, value);\\n }\\n else if (value &&\\n (name !== this.statics.blotName || this.formats()[name] !== value)) {\\n this.replaceWith(name, value);\\n }\\n }\\n }\\n formats() {\\n let formats = this.attributes.values();\\n let format = this.statics.formats(this.domNode, this.scroll);\\n if (format != null) {\\n formats[this.statics.blotName] = format;\\n }\\n return formats;\\n }\\n formatAt(index, length, name, value) {\\n if (this.formats()[name] != null ||\\n this.scroll.query(name, _scope__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].ATTRIBUTE)) {\\n let blot = this.isolate(index, length);\\n blot.format(name, value);\\n }\\n else {\\n super.formatAt(index, length, name, value);\\n }\\n }\\n optimize(context) {\\n super.optimize(context);\\n let formats = this.formats();\\n if (Object.keys(formats).length === 0) {\\n return this.unwrap(); // unformatted span\\n }\\n let next = this.next;\\n if (next instanceof InlineBlot &&\\n next.prev === this &&\\n isEqual(formats, next.formats())) {\\n next.moveChildren(this);\\n next.remove();\\n }\\n }\\n replaceWith(name, value) {\\n const replacement = super.replaceWith(name, value);\\n this.attributes.copy(replacement);\\n return replacement;\\n }\\n update(mutations, context) {\\n super.update(mutations, context);\\n const attributeChanged = mutations.some(mutation => mutation.target === this.domNode && mutation.type === 'attributes');\\n if (attributeChanged) {\\n this.attributes.build();\\n }\\n }\\n wrap(name, value) {\\n const wrapper = super.wrap(name, value);\\n if (wrapper instanceof InlineBlot) {\\n this.attributes.move(wrapper);\\n }\\n return wrapper;\\n }\\n}\\nInlineBlot.allowedChildren = [InlineBlot, _abstract_leaf__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"]];\\nInlineBlot.blotName = 'inline';\\nInlineBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].INLINE_BLOT;\\nInlineBlot.tagName = 'SPAN';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (InlineBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/inline.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/scroll.ts\":\n/*!***************************************************!*\\\n !*** ./node_modules/parchment/src/blot/scroll.ts ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _abstract_parent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony import */ var _abstract_container__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./abstract/container */ \\\"./node_modules/parchment/src/blot/abstract/container.ts\\\");\\n/* harmony import */ var _block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./block */ \\\"./node_modules/parchment/src/blot/block.ts\\\");\\n/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\n\\n\\n\\nconst OBSERVER_CONFIG = {\\n attributes: true,\\n characterData: true,\\n characterDataOldValue: true,\\n childList: true,\\n subtree: true,\\n};\\nconst MAX_OPTIMIZE_ITERATIONS = 100;\\nclass ScrollBlot extends _abstract_parent__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n constructor(registry, node) {\\n // @ts-ignore\\n super(null, node);\\n this.registry = registry;\\n this.scroll = this;\\n this.build();\\n this.observer = new MutationObserver((mutations) => {\\n this.update(mutations);\\n });\\n this.observer.observe(this.domNode, OBSERVER_CONFIG);\\n this.attach();\\n }\\n create(input, value) {\\n return this.registry.create(this, input, value);\\n }\\n find(node, bubble = false) {\\n return this.registry.find(node, bubble);\\n }\\n query(query, scope = _scope__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].ANY) {\\n return this.registry.query(query, scope);\\n }\\n register(...Definitions) {\\n return this.registry.register(...Definitions);\\n }\\n build() {\\n if (this.scroll == null)\\n return;\\n super.build();\\n }\\n detach() {\\n super.detach();\\n this.observer.disconnect();\\n }\\n deleteAt(index, length) {\\n this.update();\\n if (index === 0 && length === this.length()) {\\n this.children.forEach(function (child) {\\n child.remove();\\n });\\n }\\n else {\\n super.deleteAt(index, length);\\n }\\n }\\n formatAt(index, length, name, value) {\\n this.update();\\n super.formatAt(index, length, name, value);\\n }\\n insertAt(index, value, def) {\\n this.update();\\n super.insertAt(index, value, def);\\n }\\n optimize(mutations = [], context = {}) {\\n super.optimize(context);\\n const mutationsMap = context.mutationsMap || new WeakMap();\\n // We must modify mutations directly, cannot make copy and then modify\\n let records = Array.from(this.observer.takeRecords());\\n // Array.push currently seems to be implemented by a non-tail recursive function\\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\\n while (records.length > 0)\\n mutations.push(records.pop());\\n let mark = (blot, markParent = true) => {\\n if (blot == null || blot === this)\\n return;\\n if (blot.domNode.parentNode == null)\\n return;\\n if (!mutationsMap.has(blot.domNode)) {\\n mutationsMap.set(blot.domNode, []);\\n }\\n if (markParent)\\n mark(blot.parent);\\n };\\n let optimize = function (blot) {\\n // Post-order traversal\\n if (!mutationsMap.has(blot.domNode))\\n return;\\n if (blot instanceof _abstract_parent__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]) {\\n blot.children.forEach(optimize);\\n }\\n mutationsMap.delete(blot.domNode);\\n blot.optimize(context);\\n };\\n let remaining = mutations;\\n for (let i = 0; remaining.length > 0; i += 1) {\\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\\n throw new Error('[Parchment] Maximum optimize iterations reached');\\n }\\n remaining.forEach((mutation) => {\\n let blot = this.find(mutation.target, true);\\n if (blot == null)\\n return;\\n if (blot.domNode === mutation.target) {\\n if (mutation.type === 'childList') {\\n mark(this.find(mutation.previousSibling, false));\\n Array.from(mutation.addedNodes).forEach((node) => {\\n const child = this.find(node, false);\\n mark(child, false);\\n if (child instanceof _abstract_parent__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]) {\\n child.children.forEach(function (grandChild) {\\n mark(grandChild, false);\\n });\\n }\\n });\\n }\\n else if (mutation.type === 'attributes') {\\n mark(blot.prev);\\n }\\n }\\n mark(blot);\\n });\\n this.children.forEach(optimize);\\n remaining = Array.from(this.observer.takeRecords());\\n records = remaining.slice();\\n while (records.length > 0)\\n mutations.push(records.pop());\\n }\\n }\\n update(mutations, context = {}) {\\n mutations = mutations || this.observer.takeRecords();\\n const mutationsMap = new WeakMap();\\n mutations\\n .map((mutation) => {\\n let blot = _registry__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"].find(mutation.target, true);\\n if (blot == null)\\n return null;\\n if (mutationsMap.has(blot.domNode)) {\\n mutationsMap.get(blot.domNode).push(mutation);\\n return null;\\n }\\n else {\\n mutationsMap.set(blot.domNode, [mutation]);\\n return blot;\\n }\\n })\\n .forEach((blot) => {\\n if (blot != null && blot !== this && mutationsMap.has(blot.domNode)) {\\n blot.update(mutationsMap.get(blot.domNode) || [], context);\\n }\\n });\\n context.mutationsMap = mutationsMap;\\n if (mutationsMap.has(this.domNode)) {\\n super.update(mutationsMap.get(this.domNode), context);\\n }\\n this.optimize(mutations, context);\\n }\\n}\\nScrollBlot.blotName = 'scroll';\\nScrollBlot.defaultChild = _block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"];\\nScrollBlot.allowedChildren = [_block__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"], _abstract_container__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"]];\\nScrollBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"].BLOCK_BLOT;\\nScrollBlot.tagName = 'DIV';\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (ScrollBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/scroll.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/blot/text.ts\":\n/*!*************************************************!*\\\n !*** ./node_modules/parchment/src/blot/text.ts ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _abstract_leaf__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\nclass TextBlot extends _abstract_leaf__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"] {\\n constructor(scroll, node) {\\n super(scroll, node);\\n this.text = this.statics.value(this.domNode);\\n }\\n static create(value) {\\n return document.createTextNode(value);\\n }\\n static value(domNode) {\\n let text = domNode.data;\\n // @ts-ignore\\n if (text['normalize'])\\n text = text['normalize']();\\n return text;\\n }\\n deleteAt(index, length) {\\n this.domNode.data = this.text =\\n this.text.slice(0, index) + this.text.slice(index + length);\\n }\\n index(node, offset) {\\n if (this.domNode === node) {\\n return offset;\\n }\\n return -1;\\n }\\n insertAt(index, value, def) {\\n if (def == null) {\\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\\n this.domNode.data = this.text;\\n }\\n else {\\n super.insertAt(index, value, def);\\n }\\n }\\n length() {\\n return this.text.length;\\n }\\n optimize(context) {\\n super.optimize(context);\\n this.text = this.statics.value(this.domNode);\\n if (this.text.length === 0) {\\n this.remove();\\n }\\n else if (this.next instanceof TextBlot && this.next.prev === this) {\\n this.insertAt(this.length(), this.next.value());\\n this.next.remove();\\n }\\n }\\n position(index, inclusive = false) {\\n return [this.domNode, index];\\n }\\n split(index, force = false) {\\n if (!force) {\\n if (index === 0)\\n return this;\\n if (index === this.length())\\n return this.next;\\n }\\n let after = this.scroll.create(this.domNode.splitText(index));\\n this.parent.insertBefore(after, this.next || undefined);\\n this.text = this.statics.value(this.domNode);\\n return after;\\n }\\n update(mutations, context) {\\n if (mutations.some(mutation => {\\n return (mutation.type === 'characterData' && mutation.target === this.domNode);\\n })) {\\n this.text = this.statics.value(this.domNode);\\n }\\n }\\n value() {\\n return this.text;\\n }\\n}\\nTextBlot.blotName = 'text';\\nTextBlot.scope = _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].INLINE_BLOT;\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (TextBlot);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/blot/text.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/collection/linked-list.ts\":\n/*!**************************************************************!*\\\n !*** ./node_modules/parchment/src/collection/linked-list.ts ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\nclass LinkedList {\\n constructor() {\\n this.head = this.tail = null;\\n this.length = 0;\\n }\\n append(...nodes) {\\n this.insertBefore(nodes[0], null);\\n if (nodes.length > 1) {\\n this.append.apply(this, nodes.slice(1));\\n }\\n }\\n at(index) {\\n let cur, next = this.iterator();\\n while ((cur = next()) && index > 0) {\\n index -= 1;\\n }\\n return cur;\\n }\\n contains(node) {\\n let cur, next = this.iterator();\\n while ((cur = next())) {\\n if (cur === node)\\n return true;\\n }\\n return false;\\n }\\n indexOf(node) {\\n let cur, next = this.iterator(), index = 0;\\n while ((cur = next())) {\\n if (cur === node)\\n return index;\\n index += 1;\\n }\\n return -1;\\n }\\n insertBefore(node, refNode) {\\n if (!node)\\n return;\\n node.next = refNode;\\n if (refNode != null) {\\n node.prev = refNode.prev;\\n if (refNode.prev != null) {\\n refNode.prev.next = node;\\n }\\n refNode.prev = node;\\n if (refNode === this.head) {\\n this.head = node;\\n }\\n }\\n else if (this.tail != null) {\\n this.tail.next = node;\\n node.prev = this.tail;\\n this.tail = node;\\n }\\n else {\\n node.prev = null;\\n this.head = this.tail = node;\\n }\\n this.length += 1;\\n }\\n offset(target) {\\n let index = 0, cur = this.head;\\n while (cur != null) {\\n if (cur === target)\\n return index;\\n index += cur.length();\\n cur = cur.next;\\n }\\n return -1;\\n }\\n remove(node) {\\n if (!this.contains(node))\\n return;\\n if (node.prev != null)\\n node.prev.next = node.next;\\n if (node.next != null)\\n node.next.prev = node.prev;\\n if (node === this.head)\\n this.head = node.next;\\n if (node === this.tail)\\n this.tail = node.prev;\\n this.length -= 1;\\n }\\n iterator(curNode = this.head) {\\n // TODO use yield when we can\\n return function () {\\n let ret = curNode;\\n if (curNode != null)\\n curNode = curNode.next;\\n return ret;\\n };\\n }\\n find(index, inclusive = false) {\\n let cur, next = this.iterator();\\n while ((cur = next())) {\\n let length = cur.length();\\n if (index < length ||\\n (inclusive &&\\n index === length &&\\n (cur.next == null || cur.next.length() !== 0))) {\\n return [cur, index];\\n }\\n index -= length;\\n }\\n return [null, 0];\\n }\\n forEach(callback) {\\n let cur, next = this.iterator();\\n while ((cur = next())) {\\n callback(cur);\\n }\\n }\\n forEachAt(index, length, callback) {\\n if (length <= 0)\\n return;\\n let [startNode, offset] = this.find(index);\\n let cur, curIndex = index - offset, next = this.iterator(startNode);\\n while ((cur = next()) && curIndex < index + length) {\\n let curLength = cur.length();\\n if (index > curIndex) {\\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\\n }\\n else {\\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\\n }\\n curIndex += curLength;\\n }\\n }\\n map(callback) {\\n return this.reduce(function (memo, cur) {\\n memo.push(callback(cur));\\n return memo;\\n }, []);\\n }\\n reduce(callback, memo) {\\n let cur, next = this.iterator();\\n while ((cur = next())) {\\n memo = callback(memo, cur);\\n }\\n return memo;\\n }\\n}\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (LinkedList);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/collection/linked-list.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/error.ts\":\n/*!*********************************************!*\\\n !*** ./node_modules/parchment/src/error.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return ParchmentError; });\\nclass ParchmentError extends Error {\\n constructor(message) {\\n message = '[Parchment] ' + message;\\n super(message);\\n this.message = message;\\n this.name = this.constructor.name;\\n }\\n}\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/error.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/parchment.ts\":\n/*!*************************************************!*\\\n !*** ./node_modules/parchment/src/parchment.ts ***!\n \\*************************************************/\n/*! exports provided: ParentBlot, ContainerBlot, LeafBlot, EmbedBlot, ScrollBlot, BlockBlot, InlineBlot, TextBlot, Attributor, ClassAttributor, StyleAttributor, AttributorStore, Registry, Scope */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony import */ var _blot_abstract_container__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blot/abstract/container */ \\\"./node_modules/parchment/src/blot/abstract/container.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"ContainerBlot\\\", function() { return _blot_abstract_container__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_abstract_parent__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./blot/abstract/parent */ \\\"./node_modules/parchment/src/blot/abstract/parent.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"ParentBlot\\\", function() { return _blot_abstract_parent__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_abstract_leaf__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./blot/abstract/leaf */ \\\"./node_modules/parchment/src/blot/abstract/leaf.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"LeafBlot\\\", function() { return _blot_abstract_leaf__WEBPACK_IMPORTED_MODULE_2__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_scroll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./blot/scroll */ \\\"./node_modules/parchment/src/blot/scroll.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"ScrollBlot\\\", function() { return _blot_scroll__WEBPACK_IMPORTED_MODULE_3__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_inline__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./blot/inline */ \\\"./node_modules/parchment/src/blot/inline.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"InlineBlot\\\", function() { return _blot_inline__WEBPACK_IMPORTED_MODULE_4__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_block__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./blot/block */ \\\"./node_modules/parchment/src/blot/block.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"BlockBlot\\\", function() { return _blot_block__WEBPACK_IMPORTED_MODULE_5__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_embed__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./blot/embed */ \\\"./node_modules/parchment/src/blot/embed.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"EmbedBlot\\\", function() { return _blot_embed__WEBPACK_IMPORTED_MODULE_6__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _blot_text__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./blot/text */ \\\"./node_modules/parchment/src/blot/text.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"TextBlot\\\", function() { return _blot_text__WEBPACK_IMPORTED_MODULE_7__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _attributor_attributor__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./attributor/attributor */ \\\"./node_modules/parchment/src/attributor/attributor.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"Attributor\\\", function() { return _attributor_attributor__WEBPACK_IMPORTED_MODULE_8__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _attributor_class__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./attributor/class */ \\\"./node_modules/parchment/src/attributor/class.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"ClassAttributor\\\", function() { return _attributor_class__WEBPACK_IMPORTED_MODULE_9__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _attributor_style__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./attributor/style */ \\\"./node_modules/parchment/src/attributor/style.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"StyleAttributor\\\", function() { return _attributor_style__WEBPACK_IMPORTED_MODULE_10__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _attributor_store__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./attributor/store */ \\\"./node_modules/parchment/src/attributor/store.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"AttributorStore\\\", function() { return _attributor_store__WEBPACK_IMPORTED_MODULE_11__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _registry__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./registry */ \\\"./node_modules/parchment/src/registry.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"Registry\\\", function() { return _registry__WEBPACK_IMPORTED_MODULE_12__[\\\"default\\\"]; });\\n\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \\\"Scope\\\", function() { return _scope__WEBPACK_IMPORTED_MODULE_13__[\\\"default\\\"]; });\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/parchment.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/registry.ts\":\n/*!************************************************!*\\\n !*** ./node_modules/parchment/src/registry.ts ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \\\"default\\\", function() { return Registry; });\\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./error */ \\\"./node_modules/parchment/src/error.ts\\\");\\n/* harmony import */ var _scope__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scope */ \\\"./node_modules/parchment/src/scope.ts\\\");\\n\\n\\nclass Registry {\\n constructor() {\\n this.attributes = {};\\n this.classes = {};\\n this.tags = {};\\n this.types = {};\\n }\\n static find(node, bubble = false) {\\n if (node == null)\\n return null;\\n if (this.blots.has(node))\\n return this.blots.get(node) || null;\\n if (bubble)\\n return this.find(node.parentNode, bubble);\\n return null;\\n }\\n create(scroll, input, value) {\\n const match = this.query(input);\\n if (match == null) {\\n throw new _error__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"](`Unable to create ${input} blot`);\\n }\\n const BlotClass = match;\\n const node = \\n // @ts-ignore\\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE\\n ? input\\n : BlotClass.create(value);\\n const blot = new BlotClass(scroll, node, value);\\n Registry.blots.set(blot.domNode, blot);\\n return blot;\\n }\\n find(node, bubble = false) {\\n return Registry.find(node, bubble);\\n }\\n query(query, scope = _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].ANY) {\\n let match;\\n if (typeof query === 'string') {\\n match = this.types[query] || this.attributes[query];\\n // @ts-ignore\\n }\\n else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\\n match = this.types['text'];\\n }\\n else if (typeof query === 'number') {\\n if (query & _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].LEVEL & _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].BLOCK) {\\n match = this.types['block'];\\n }\\n else if (query & _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].LEVEL & _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].INLINE) {\\n match = this.types['inline'];\\n }\\n }\\n else if (query instanceof HTMLElement) {\\n let names = (query.getAttribute('class') || '').split(/\\\\s+/);\\n for (let i in names) {\\n match = this.classes[names[i]];\\n if (match)\\n break;\\n }\\n match = match || this.tags[query.tagName];\\n }\\n if (match == null)\\n return null;\\n // @ts-ignore\\n if (scope & _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].LEVEL & match.scope && scope & _scope__WEBPACK_IMPORTED_MODULE_1__[\\\"default\\\"].TYPE & match.scope)\\n return match;\\n return null;\\n }\\n register(...Definitions) {\\n if (Definitions.length > 1) {\\n return Definitions.map(d => {\\n return this.register(d);\\n });\\n }\\n let Definition = Definitions[0];\\n if (typeof Definition.blotName !== 'string' &&\\n typeof Definition.attrName !== 'string') {\\n throw new _error__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]('Invalid definition');\\n }\\n else if (Definition.blotName === 'abstract') {\\n throw new _error__WEBPACK_IMPORTED_MODULE_0__[\\\"default\\\"]('Cannot register abstract class');\\n }\\n this.types[Definition.blotName || Definition.attrName] = Definition;\\n if (typeof Definition.keyName === 'string') {\\n this.attributes[Definition.keyName] = Definition;\\n }\\n else {\\n if (Definition.className != null) {\\n this.classes[Definition.className] = Definition;\\n }\\n if (Definition.tagName != null) {\\n if (Array.isArray(Definition.tagName)) {\\n Definition.tagName = Definition.tagName.map(function (tagName) {\\n return tagName.toUpperCase();\\n });\\n }\\n else {\\n Definition.tagName = Definition.tagName.toUpperCase();\\n }\\n let tagNames = Array.isArray(Definition.tagName)\\n ? Definition.tagName\\n : [Definition.tagName];\\n tagNames.forEach((tag) => {\\n if (this.tags[tag] == null || Definition.className == null) {\\n this.tags[tag] = Definition;\\n }\\n });\\n }\\n }\\n return Definition;\\n }\\n}\\nRegistry.blots = new WeakMap();\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/registry.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/parchment/src/scope.ts\":\n/*!*********************************************!*\\\n !*** ./node_modules/parchment/src/scope.ts ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\neval(\"__webpack_require__.r(__webpack_exports__);\\nvar Scope;\\n(function (Scope) {\\n Scope[Scope[\\\"TYPE\\\"] = 3] = \\\"TYPE\\\";\\n Scope[Scope[\\\"LEVEL\\\"] = 12] = \\\"LEVEL\\\";\\n Scope[Scope[\\\"ATTRIBUTE\\\"] = 13] = \\\"ATTRIBUTE\\\";\\n Scope[Scope[\\\"BLOT\\\"] = 14] = \\\"BLOT\\\";\\n Scope[Scope[\\\"INLINE\\\"] = 7] = \\\"INLINE\\\";\\n Scope[Scope[\\\"BLOCK\\\"] = 11] = \\\"BLOCK\\\";\\n Scope[Scope[\\\"BLOCK_BLOT\\\"] = 10] = \\\"BLOCK_BLOT\\\";\\n Scope[Scope[\\\"INLINE_BLOT\\\"] = 6] = \\\"INLINE_BLOT\\\";\\n Scope[Scope[\\\"BLOCK_ATTRIBUTE\\\"] = 9] = \\\"BLOCK_ATTRIBUTE\\\";\\n Scope[Scope[\\\"INLINE_ATTRIBUTE\\\"] = 5] = \\\"INLINE_ATTRIBUTE\\\";\\n Scope[Scope[\\\"ANY\\\"] = 15] = \\\"ANY\\\";\\n})(Scope || (Scope = {}));\\n/* harmony default export */ __webpack_exports__[\\\"default\\\"] = (Scope);\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/parchment/src/scope.ts?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/lib/delta.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/quill-delta/lib/delta.js ***!\n \\***********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var diff = __webpack_require__(/*! fast-diff */ \\\"./node_modules/fast-diff/diff.js\\\");\\nvar equal = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\nvar extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\nvar op = __webpack_require__(/*! ./op */ \\\"./node_modules/quill-delta/lib/op.js\\\");\\n\\n\\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\\n\\n\\nvar Delta = function (ops) {\\n // Assume we are given a well formed ops\\n if (Array.isArray(ops)) {\\n this.ops = ops;\\n } else if (ops != null && Array.isArray(ops.ops)) {\\n this.ops = ops.ops;\\n } else {\\n this.ops = [];\\n }\\n};\\n\\n\\nDelta.prototype.insert = function (text, attributes) {\\n var newOp = {};\\n if (text.length === 0) return this;\\n newOp.insert = text;\\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n};\\n\\nDelta.prototype['delete'] = function (length) {\\n if (length <= 0) return this;\\n return this.push({ 'delete': length });\\n};\\n\\nDelta.prototype.retain = function (length, attributes) {\\n if (length <= 0) return this;\\n var newOp = { retain: length };\\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\\n newOp.attributes = attributes;\\n }\\n return this.push(newOp);\\n};\\n\\nDelta.prototype.push = function (newOp) {\\n var index = this.ops.length;\\n var lastOp = this.ops[index - 1];\\n newOp = extend(true, {}, newOp);\\n if (typeof lastOp === 'object') {\\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\\n return this;\\n }\\n // Since it does not matter if we insert before or after deleting at the same index,\\n // always prefer to insert first\\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\\n index -= 1;\\n lastOp = this.ops[index - 1];\\n if (typeof lastOp !== 'object') {\\n this.ops.unshift(newOp);\\n return this;\\n }\\n }\\n if (equal(newOp.attributes, lastOp.attributes)) {\\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\\n return this;\\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\\n this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\\n return this;\\n }\\n }\\n }\\n if (index === this.ops.length) {\\n this.ops.push(newOp);\\n } else {\\n this.ops.splice(index, 0, newOp);\\n }\\n return this;\\n};\\n\\nDelta.prototype.chop = function () {\\n var lastOp = this.ops[this.ops.length - 1];\\n if (lastOp && lastOp.retain && !lastOp.attributes) {\\n this.ops.pop();\\n }\\n return this;\\n};\\n\\nDelta.prototype.filter = function (predicate) {\\n return this.ops.filter(predicate);\\n};\\n\\nDelta.prototype.forEach = function (predicate) {\\n this.ops.forEach(predicate);\\n};\\n\\nDelta.prototype.map = function (predicate) {\\n return this.ops.map(predicate);\\n};\\n\\nDelta.prototype.partition = function (predicate) {\\n var passed = [], failed = [];\\n this.forEach(function(op) {\\n var target = predicate(op) ? passed : failed;\\n target.push(op);\\n });\\n return [passed, failed];\\n};\\n\\nDelta.prototype.reduce = function (predicate, initial) {\\n return this.ops.reduce(predicate, initial);\\n};\\n\\nDelta.prototype.changeLength = function () {\\n return this.reduce(function (length, elem) {\\n if (elem.insert) {\\n return length + op.length(elem);\\n } else if (elem.delete) {\\n return length - elem.delete;\\n }\\n return length;\\n }, 0);\\n};\\n\\nDelta.prototype.length = function () {\\n return this.reduce(function (length, elem) {\\n return length + op.length(elem);\\n }, 0);\\n};\\n\\nDelta.prototype.slice = function (start, end) {\\n start = start || 0;\\n if (typeof end !== 'number') end = Infinity;\\n var ops = [];\\n var iter = op.iterator(this.ops);\\n var index = 0;\\n while (index < end && iter.hasNext()) {\\n var nextOp;\\n if (index < start) {\\n nextOp = iter.next(start - index);\\n } else {\\n nextOp = iter.next(end - index);\\n ops.push(nextOp);\\n }\\n index += op.length(nextOp);\\n }\\n return new Delta(ops);\\n};\\n\\n\\nDelta.prototype.compose = function (other) {\\n var thisIter = op.iterator(this.ops);\\n var otherIter = op.iterator(other.ops);\\n var delta = new Delta();\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n } else if (thisIter.peekType() === 'delete') {\\n delta.push(thisIter.next());\\n } else {\\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length);\\n var otherOp = otherIter.next(length);\\n if (typeof otherOp.retain === 'number') {\\n var newOp = {};\\n if (typeof thisOp.retain === 'number') {\\n newOp.retain = length;\\n } else {\\n newOp.insert = thisOp.insert;\\n }\\n // Preserve null when composing with a retain, otherwise remove it for inserts\\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\\n if (attributes) newOp.attributes = attributes;\\n delta.push(newOp);\\n // Other op should be delete, we could be an insert or retain\\n // Insert + delete cancels out\\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\\n delta.push(otherOp);\\n }\\n }\\n }\\n return delta.chop();\\n};\\n\\nDelta.prototype.concat = function (other) {\\n var delta = new Delta(this.ops.slice());\\n if (other.ops.length > 0) {\\n delta.push(other.ops[0]);\\n delta.ops = delta.ops.concat(other.ops.slice(1));\\n }\\n return delta;\\n};\\n\\nDelta.prototype.diff = function (other, index) {\\n if (this.ops === other.ops) {\\n return new Delta();\\n }\\n var strings = [this, other].map(function (delta) {\\n return delta.map(function (op) {\\n if (op.insert != null) {\\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\\n }\\n var prep = (delta === other) ? 'on' : 'with';\\n throw new Error('diff() called ' + prep + ' non-document');\\n }).join('');\\n });\\n var delta = new Delta();\\n var diffResult = diff(strings[0], strings[1], index);\\n var thisIter = op.iterator(this.ops);\\n var otherIter = op.iterator(other.ops);\\n diffResult.forEach(function (component) {\\n var length = component[1].length;\\n while (length > 0) {\\n var opLength = 0;\\n switch (component[0]) {\\n case diff.INSERT:\\n opLength = Math.min(otherIter.peekLength(), length);\\n delta.push(otherIter.next(opLength));\\n break;\\n case diff.DELETE:\\n opLength = Math.min(length, thisIter.peekLength());\\n thisIter.next(opLength);\\n delta['delete'](opLength);\\n break;\\n case diff.EQUAL:\\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\\n var thisOp = thisIter.next(opLength);\\n var otherOp = otherIter.next(opLength);\\n if (equal(thisOp.insert, otherOp.insert)) {\\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\\n } else {\\n delta.push(otherOp)['delete'](opLength);\\n }\\n break;\\n }\\n length -= opLength;\\n }\\n });\\n return delta.chop();\\n};\\n\\nDelta.prototype.eachLine = function (predicate, newline) {\\n newline = newline || '\\\\n';\\n var iter = op.iterator(this.ops);\\n var line = new Delta();\\n var i = 0;\\n while (iter.hasNext()) {\\n if (iter.peekType() !== 'insert') return;\\n var thisOp = iter.peek();\\n var start = op.length(thisOp) - iter.peekLength();\\n var index = typeof thisOp.insert === 'string' ?\\n thisOp.insert.indexOf(newline, start) - start : -1;\\n if (index < 0) {\\n line.push(iter.next());\\n } else if (index > 0) {\\n line.push(iter.next(index));\\n } else {\\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\\n return;\\n }\\n i += 1;\\n line = new Delta();\\n }\\n }\\n if (line.length() > 0) {\\n predicate(line, {}, i);\\n }\\n};\\n\\nDelta.prototype.transform = function (other, priority) {\\n priority = !!priority;\\n if (typeof other === 'number') {\\n return this.transformPosition(other, priority);\\n }\\n var thisIter = op.iterator(this.ops);\\n var otherIter = op.iterator(other.ops);\\n var delta = new Delta();\\n while (thisIter.hasNext() || otherIter.hasNext()) {\\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\\n delta.retain(op.length(thisIter.next()));\\n } else if (otherIter.peekType() === 'insert') {\\n delta.push(otherIter.next());\\n } else {\\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\\n var thisOp = thisIter.next(length);\\n var otherOp = otherIter.next(length);\\n if (thisOp['delete']) {\\n // Our delete either makes their delete redundant or removes their retain\\n continue;\\n } else if (otherOp['delete']) {\\n delta.push(otherOp);\\n } else {\\n // We retain either their retain or insert\\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\\n }\\n }\\n }\\n return delta.chop();\\n};\\n\\nDelta.prototype.transformPosition = function (index, priority) {\\n priority = !!priority;\\n var thisIter = op.iterator(this.ops);\\n var offset = 0;\\n while (thisIter.hasNext() && offset <= index) {\\n var length = thisIter.peekLength();\\n var nextType = thisIter.peekType();\\n thisIter.next();\\n if (nextType === 'delete') {\\n index -= Math.min(length, index - offset);\\n continue;\\n } else if (nextType === 'insert' && (offset < index || !priority)) {\\n index += length;\\n }\\n offset += length;\\n }\\n return index;\\n};\\n\\n\\nmodule.exports = Delta;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/lib/delta.js?\");\n\n/***/ }),\n\n/***/ \"./node_modules/quill-delta/lib/op.js\":\n/*!********************************************!*\\\n !*** ./node_modules/quill-delta/lib/op.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"var equal = __webpack_require__(/*! deep-equal */ \\\"./node_modules/deep-equal/index.js\\\");\\nvar extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\n\\nvar lib = {\\n attributes: {\\n compose: function (a, b, keepNull) {\\n if (typeof a !== 'object') a = {};\\n if (typeof b !== 'object') b = {};\\n var attributes = extend(true, {}, b);\\n if (!keepNull) {\\n attributes = Object.keys(attributes).reduce(function (copy, key) {\\n if (attributes[key] != null) {\\n copy[key] = attributes[key];\\n }\\n return copy;\\n }, {});\\n }\\n for (var key in a) {\\n if (a[key] !== undefined && b[key] === undefined) {\\n attributes[key] = a[key];\\n }\\n }\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n },\\n\\n diff: function(a, b) {\\n if (typeof a !== 'object') a = {};\\n if (typeof b !== 'object') b = {};\\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\\n if (!equal(a[key], b[key])) {\\n attributes[key] = b[key] === undefined ? null : b[key];\\n }\\n return attributes;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n },\\n\\n transform: function (a, b, priority) {\\n if (typeof a !== 'object') return b;\\n if (typeof b !== 'object') return undefined;\\n if (!priority) return b; // b simply overwrites us without priority\\n var attributes = Object.keys(b).reduce(function (attributes, key) {\\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\\n return attributes;\\n }, {});\\n return Object.keys(attributes).length > 0 ? attributes : undefined;\\n }\\n },\\n\\n iterator: function (ops) {\\n return new Iterator(ops);\\n },\\n\\n length: function (op) {\\n if (typeof op['delete'] === 'number') {\\n return op['delete'];\\n } else if (typeof op.retain === 'number') {\\n return op.retain;\\n } else {\\n return typeof op.insert === 'string' ? op.insert.length : 1;\\n }\\n }\\n};\\n\\n\\nfunction Iterator(ops) {\\n this.ops = ops;\\n this.index = 0;\\n this.offset = 0;\\n};\\n\\nIterator.prototype.hasNext = function () {\\n return this.peekLength() < Infinity;\\n};\\n\\nIterator.prototype.next = function (length) {\\n if (!length) length = Infinity;\\n var nextOp = this.ops[this.index];\\n if (nextOp) {\\n var offset = this.offset;\\n var opLength = lib.length(nextOp)\\n if (length >= opLength - offset) {\\n length = opLength - offset;\\n this.index += 1;\\n this.offset = 0;\\n } else {\\n this.offset += length;\\n }\\n if (typeof nextOp['delete'] === 'number') {\\n return { 'delete': length };\\n } else {\\n var retOp = {};\\n if (nextOp.attributes) {\\n retOp.attributes = nextOp.attributes;\\n }\\n if (typeof nextOp.retain === 'number') {\\n retOp.retain = length;\\n } else if (typeof nextOp.insert === 'string') {\\n retOp.insert = nextOp.insert.substr(offset, length);\\n } else {\\n // offset should === 0, length should === 1\\n retOp.insert = nextOp.insert;\\n }\\n return retOp;\\n }\\n } else {\\n return { retain: Infinity };\\n }\\n};\\n\\nIterator.prototype.peek = function () {\\n return this.ops[this.index];\\n};\\n\\nIterator.prototype.peekLength = function () {\\n if (this.ops[this.index]) {\\n // Should never return 0 if our index is being managed correctly\\n return lib.length(this.ops[this.index]) - this.offset;\\n } else {\\n return Infinity;\\n }\\n};\\n\\nIterator.prototype.peekType = function () {\\n if (this.ops[this.index]) {\\n if (typeof this.ops[this.index]['delete'] === 'number') {\\n return 'delete';\\n } else if (typeof this.ops[this.index].retain === 'number') {\\n return 'retain';\\n } else {\\n return 'insert';\\n }\\n }\\n return 'retain';\\n};\\n\\n\\nmodule.exports = lib;\\n\\n\\n//# sourceURL=webpack://Quill/./node_modules/quill-delta/lib/op.js?\");\n\n/***/ }),\n\n/***/ \"./quill.js\":\n/*!******************!*\\\n !*** ./quill.js ***!\n \\******************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _core = __webpack_require__(/*! ./core */ \\\"./core.js\\\");\\n\\nvar _core2 = _interopRequireDefault(_core);\\n\\nvar _align = __webpack_require__(/*! ./formats/align */ \\\"./formats/align.js\\\");\\n\\nvar _direction = __webpack_require__(/*! ./formats/direction */ \\\"./formats/direction.js\\\");\\n\\nvar _indent = __webpack_require__(/*! ./formats/indent */ \\\"./formats/indent.js\\\");\\n\\nvar _indent2 = _interopRequireDefault(_indent);\\n\\nvar _blockquote = __webpack_require__(/*! ./formats/blockquote */ \\\"./formats/blockquote.js\\\");\\n\\nvar _blockquote2 = _interopRequireDefault(_blockquote);\\n\\nvar _header = __webpack_require__(/*! ./formats/header */ \\\"./formats/header.js\\\");\\n\\nvar _header2 = _interopRequireDefault(_header);\\n\\nvar _list = __webpack_require__(/*! ./formats/list */ \\\"./formats/list.js\\\");\\n\\nvar _list2 = _interopRequireDefault(_list);\\n\\nvar _background = __webpack_require__(/*! ./formats/background */ \\\"./formats/background.js\\\");\\n\\nvar _color = __webpack_require__(/*! ./formats/color */ \\\"./formats/color.js\\\");\\n\\nvar _font = __webpack_require__(/*! ./formats/font */ \\\"./formats/font.js\\\");\\n\\nvar _size = __webpack_require__(/*! ./formats/size */ \\\"./formats/size.js\\\");\\n\\nvar _bold = __webpack_require__(/*! ./formats/bold */ \\\"./formats/bold.js\\\");\\n\\nvar _bold2 = _interopRequireDefault(_bold);\\n\\nvar _italic = __webpack_require__(/*! ./formats/italic */ \\\"./formats/italic.js\\\");\\n\\nvar _italic2 = _interopRequireDefault(_italic);\\n\\nvar _link = __webpack_require__(/*! ./formats/link */ \\\"./formats/link.js\\\");\\n\\nvar _link2 = _interopRequireDefault(_link);\\n\\nvar _script = __webpack_require__(/*! ./formats/script */ \\\"./formats/script.js\\\");\\n\\nvar _script2 = _interopRequireDefault(_script);\\n\\nvar _strike = __webpack_require__(/*! ./formats/strike */ \\\"./formats/strike.js\\\");\\n\\nvar _strike2 = _interopRequireDefault(_strike);\\n\\nvar _underline = __webpack_require__(/*! ./formats/underline */ \\\"./formats/underline.js\\\");\\n\\nvar _underline2 = _interopRequireDefault(_underline);\\n\\nvar _formula = __webpack_require__(/*! ./formats/formula */ \\\"./formats/formula.js\\\");\\n\\nvar _formula2 = _interopRequireDefault(_formula);\\n\\nvar _image = __webpack_require__(/*! ./formats/image */ \\\"./formats/image.js\\\");\\n\\nvar _image2 = _interopRequireDefault(_image);\\n\\nvar _video = __webpack_require__(/*! ./formats/video */ \\\"./formats/video.js\\\");\\n\\nvar _video2 = _interopRequireDefault(_video);\\n\\nvar _code = __webpack_require__(/*! ./formats/code */ \\\"./formats/code.js\\\");\\n\\nvar _code2 = _interopRequireDefault(_code);\\n\\nvar _syntax = __webpack_require__(/*! ./modules/syntax */ \\\"./modules/syntax.js\\\");\\n\\nvar _syntax2 = _interopRequireDefault(_syntax);\\n\\nvar _table = __webpack_require__(/*! ./modules/table */ \\\"./modules/table.js\\\");\\n\\nvar _table2 = _interopRequireDefault(_table);\\n\\nvar _toolbar = __webpack_require__(/*! ./modules/toolbar */ \\\"./modules/toolbar.js\\\");\\n\\nvar _toolbar2 = _interopRequireDefault(_toolbar);\\n\\nvar _icons = __webpack_require__(/*! ./ui/icons */ \\\"./ui/icons.js\\\");\\n\\nvar _icons2 = _interopRequireDefault(_icons);\\n\\nvar _picker = __webpack_require__(/*! ./ui/picker */ \\\"./ui/picker.js\\\");\\n\\nvar _picker2 = _interopRequireDefault(_picker);\\n\\nvar _colorPicker = __webpack_require__(/*! ./ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n\\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\\n\\nvar _iconPicker = __webpack_require__(/*! ./ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n\\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\\n\\nvar _tooltip = __webpack_require__(/*! ./ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n\\nvar _tooltip2 = _interopRequireDefault(_tooltip);\\n\\nvar _bubble = __webpack_require__(/*! ./themes/bubble */ \\\"./themes/bubble.js\\\");\\n\\nvar _bubble2 = _interopRequireDefault(_bubble);\\n\\nvar _snow = __webpack_require__(/*! ./themes/snow */ \\\"./themes/snow.js\\\");\\n\\nvar _snow2 = _interopRequireDefault(_snow);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\n_core2.default.register({\\n 'attributors/attribute/direction': _direction.DirectionAttribute,\\n\\n 'attributors/class/align': _align.AlignClass,\\n 'attributors/class/background': _background.BackgroundClass,\\n 'attributors/class/color': _color.ColorClass,\\n 'attributors/class/direction': _direction.DirectionClass,\\n 'attributors/class/font': _font.FontClass,\\n 'attributors/class/size': _size.SizeClass,\\n\\n 'attributors/style/align': _align.AlignStyle,\\n 'attributors/style/background': _background.BackgroundStyle,\\n 'attributors/style/color': _color.ColorStyle,\\n 'attributors/style/direction': _direction.DirectionStyle,\\n 'attributors/style/font': _font.FontStyle,\\n 'attributors/style/size': _size.SizeStyle\\n}, true);\\n\\n_core2.default.register({\\n 'formats/align': _align.AlignClass,\\n 'formats/direction': _direction.DirectionClass,\\n 'formats/indent': _indent2.default,\\n\\n 'formats/background': _background.BackgroundStyle,\\n 'formats/color': _color.ColorStyle,\\n 'formats/font': _font.FontClass,\\n 'formats/size': _size.SizeClass,\\n\\n 'formats/blockquote': _blockquote2.default,\\n 'formats/code-block': _code2.default,\\n 'formats/header': _header2.default,\\n 'formats/list': _list2.default,\\n\\n 'formats/bold': _bold2.default,\\n 'formats/code': _code.Code,\\n 'formats/italic': _italic2.default,\\n 'formats/link': _link2.default,\\n 'formats/script': _script2.default,\\n 'formats/strike': _strike2.default,\\n 'formats/underline': _underline2.default,\\n\\n 'formats/formula': _formula2.default,\\n 'formats/image': _image2.default,\\n 'formats/video': _video2.default,\\n\\n 'modules/syntax': _syntax2.default,\\n 'modules/table': _table2.default,\\n 'modules/toolbar': _toolbar2.default,\\n\\n 'themes/bubble': _bubble2.default,\\n 'themes/snow': _snow2.default,\\n\\n 'ui/icons': _icons2.default,\\n 'ui/picker': _picker2.default,\\n 'ui/icon-picker': _iconPicker2.default,\\n 'ui/color-picker': _colorPicker2.default,\\n 'ui/tooltip': _tooltip2.default\\n}, true);\\n\\nexports.default = _core2.default;\\n\\n//# sourceURL=webpack://Quill/./quill.js?\");\n\n/***/ }),\n\n/***/ \"./themes/base.js\":\n/*!************************!*\\\n !*** ./themes/base.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.BaseTooltip = undefined;\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _emitter = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n\\nvar _emitter2 = _interopRequireDefault(_emitter);\\n\\nvar _theme = __webpack_require__(/*! ../core/theme */ \\\"./core/theme.js\\\");\\n\\nvar _theme2 = _interopRequireDefault(_theme);\\n\\nvar _colorPicker = __webpack_require__(/*! ../ui/color-picker */ \\\"./ui/color-picker.js\\\");\\n\\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\\n\\nvar _iconPicker = __webpack_require__(/*! ../ui/icon-picker */ \\\"./ui/icon-picker.js\\\");\\n\\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\\n\\nvar _picker = __webpack_require__(/*! ../ui/picker */ \\\"./ui/picker.js\\\");\\n\\nvar _picker2 = _interopRequireDefault(_picker);\\n\\nvar _tooltip = __webpack_require__(/*! ../ui/tooltip */ \\\"./ui/tooltip.js\\\");\\n\\nvar _tooltip2 = _interopRequireDefault(_tooltip);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst ALIGNS = [false, 'center', 'right', 'justify'];\\n\\nconst COLORS = ['#000000', '#e60000', '#ff9900', '#ffff00', '#008a00', '#0066cc', '#9933ff', '#ffffff', '#facccc', '#ffebcc', '#ffffcc', '#cce8cc', '#cce0f5', '#ebd6ff', '#bbbbbb', '#f06666', '#ffc266', '#ffff66', '#66b966', '#66a3e0', '#c285ff', '#888888', '#a10000', '#b26b00', '#b2b200', '#006100', '#0047b2', '#6b24b2', '#444444', '#5c0000', '#663d00', '#666600', '#003700', '#002966', '#3d1466'];\\n\\nconst FONTS = [false, 'serif', 'monospace'];\\n\\nconst HEADERS = ['1', '2', '3', false];\\n\\nconst SIZES = ['small', false, 'large', 'huge'];\\n\\nclass BaseTheme extends _theme2.default {\\n constructor(quill, options) {\\n super(quill, options);\\n const listener = e => {\\n if (!document.body.contains(quill.root)) {\\n document.body.removeEventListener('click', listener);\\n return;\\n }\\n if (this.tooltip != null && !this.tooltip.root.contains(e.target) && document.activeElement !== this.tooltip.textbox && !this.quill.hasFocus()) {\\n this.tooltip.hide();\\n }\\n if (this.pickers != null) {\\n this.pickers.forEach(picker => {\\n if (!picker.container.contains(e.target)) {\\n picker.close();\\n }\\n });\\n }\\n };\\n quill.emitter.listenDOM('click', document.body, listener);\\n }\\n\\n addModule(name) {\\n const module = super.addModule(name);\\n if (name === 'toolbar') {\\n this.extendToolbar(module);\\n }\\n return module;\\n }\\n\\n buildButtons(buttons, icons) {\\n Array.from(buttons).forEach(button => {\\n const className = button.getAttribute('class') || '';\\n className.split(/\\\\s+/).forEach(name => {\\n if (!name.startsWith('ql-')) return;\\n name = name.slice('ql-'.length);\\n if (icons[name] == null) return;\\n if (name === 'direction') {\\n button.innerHTML = icons[name][''] + icons[name].rtl;\\n } else if (typeof icons[name] === 'string') {\\n button.innerHTML = icons[name];\\n } else {\\n const value = button.value || '';\\n if (value != null && icons[name][value]) {\\n button.innerHTML = icons[name][value];\\n }\\n }\\n });\\n });\\n }\\n\\n buildPickers(selects, icons) {\\n this.pickers = Array.from(selects).map(select => {\\n if (select.classList.contains('ql-align')) {\\n if (select.querySelector('option') == null) {\\n fillSelect(select, ALIGNS);\\n }\\n return new _iconPicker2.default(select, icons.align);\\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\\n const format = select.classList.contains('ql-background') ? 'background' : 'color';\\n if (select.querySelector('option') == null) {\\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\\n }\\n return new _colorPicker2.default(select, icons[format]);\\n }\\n if (select.querySelector('option') == null) {\\n if (select.classList.contains('ql-font')) {\\n fillSelect(select, FONTS);\\n } else if (select.classList.contains('ql-header')) {\\n fillSelect(select, HEADERS);\\n } else if (select.classList.contains('ql-size')) {\\n fillSelect(select, SIZES);\\n }\\n }\\n return new _picker2.default(select);\\n });\\n const update = () => {\\n this.pickers.forEach(picker => {\\n picker.update();\\n });\\n };\\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, update);\\n }\\n}\\nBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\\n modules: {\\n toolbar: {\\n handlers: {\\n formula() {\\n this.quill.theme.tooltip.edit('formula');\\n },\\n image() {\\n let fileInput = this.container.querySelector('input.ql-image[type=file]');\\n if (fileInput == null) {\\n fileInput = document.createElement('input');\\n fileInput.setAttribute('type', 'file');\\n fileInput.setAttribute('accept', this.quill.uploader.options.mimetypes.join(', '));\\n fileInput.classList.add('ql-image');\\n fileInput.addEventListener('change', () => {\\n const range = this.quill.getSelection(true);\\n this.quill.uploader.upload(range, fileInput.files);\\n fileInput.value = '';\\n });\\n this.container.appendChild(fileInput);\\n }\\n fileInput.click();\\n },\\n video() {\\n this.quill.theme.tooltip.edit('video');\\n }\\n }\\n }\\n }\\n});\\n\\nclass BaseTooltip extends _tooltip2.default {\\n constructor(quill, boundsContainer) {\\n super(quill, boundsContainer);\\n this.textbox = this.root.querySelector('input[type=\\\"text\\\"]');\\n this.listen();\\n }\\n\\n listen() {\\n this.textbox.addEventListener('keydown', event => {\\n if (event.key === 'Enter') {\\n this.save();\\n event.preventDefault();\\n } else if (event.key === 'Escape') {\\n this.cancel();\\n event.preventDefault();\\n }\\n });\\n }\\n\\n cancel() {\\n this.hide();\\n }\\n\\n edit(mode = 'link', preview = null) {\\n this.root.classList.remove('ql-hidden');\\n this.root.classList.add('ql-editing');\\n if (preview != null) {\\n this.textbox.value = preview;\\n } else if (mode !== this.root.getAttribute('data-mode')) {\\n this.textbox.value = '';\\n }\\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\\n this.textbox.select();\\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute(`data-${mode}`) || '');\\n this.root.setAttribute('data-mode', mode);\\n }\\n\\n restoreFocus() {\\n const scrollTop = this.quill.scrollingContainer.scrollTop;\\n\\n this.quill.focus();\\n this.quill.scrollingContainer.scrollTop = scrollTop;\\n }\\n\\n save() {\\n let value = this.textbox.value;\\n\\n switch (this.root.getAttribute('data-mode')) {\\n case 'link':\\n {\\n const scrollTop = this.quill.root.scrollTop;\\n\\n if (this.linkRange) {\\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\\n delete this.linkRange;\\n } else {\\n this.restoreFocus();\\n this.quill.format('link', value, _emitter2.default.sources.USER);\\n }\\n this.quill.root.scrollTop = scrollTop;\\n break;\\n }\\n case 'video':\\n {\\n value = extractVideoUrl(value);\\n } // eslint-disable-next-line no-fallthrough\\n case 'formula':\\n {\\n if (!value) break;\\n const range = this.quill.getSelection(true);\\n if (range != null) {\\n const index = range.index + range.length;\\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\\n if (this.root.getAttribute('data-mode') === 'formula') {\\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\\n }\\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\\n }\\n break;\\n }\\n default:\\n }\\n this.textbox.value = '';\\n this.hide();\\n }\\n}\\n\\nfunction extractVideoUrl(url) {\\n let match = url.match(/^(?:(https?):\\\\/\\\\/)?(?:(?:www|m)\\\\.)?youtube\\\\.com\\\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\\\/\\\\/)?(?:(?:www|m)\\\\.)?youtu\\\\.be\\\\/([a-zA-Z0-9_-]+)/);\\n if (match) {\\n return `${match[1] || 'https'}://www.youtube.com/embed/${match[2]}?showinfo=0`;\\n }\\n // eslint-disable-next-line no-cond-assign\\n if (match = url.match(/^(?:(https?):\\\\/\\\\/)?(?:www\\\\.)?vimeo\\\\.com\\\\/(\\\\d+)/)) {\\n return `${match[1] || 'https'}://player.vimeo.com/video/${match[2]}/`;\\n }\\n return url;\\n}\\n\\nfunction fillSelect(select, values, defaultValue = false) {\\n values.forEach(value => {\\n const option = document.createElement('option');\\n if (value === defaultValue) {\\n option.setAttribute('selected', 'selected');\\n } else {\\n option.setAttribute('value', value);\\n }\\n select.appendChild(option);\\n });\\n}\\n\\nexports.BaseTooltip = BaseTooltip;\\nexports.default = BaseTheme;\\n\\n//# sourceURL=webpack://Quill/./themes/base.js?\");\n\n/***/ }),\n\n/***/ \"./themes/bubble.js\":\n/*!**************************!*\\\n !*** ./themes/bubble.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nexports.default = exports.BubbleTooltip = undefined;\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _emitter = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n\\nvar _emitter2 = _interopRequireDefault(_emitter);\\n\\nvar _base = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n\\nvar _base2 = _interopRequireDefault(_base);\\n\\nvar _selection = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n\\nvar _icons = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\nvar _icons2 = _interopRequireDefault(_icons);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\\n\\nclass BubbleTooltip extends _base.BaseTooltip {\\n constructor(quill, bounds) {\\n super(quill, bounds);\\n this.quill.on(_emitter2.default.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\\n if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\\n if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\\n this.show();\\n // Lock our width so we will expand beyond our offsetParent boundaries\\n this.root.style.left = '0px';\\n this.root.style.width = '';\\n this.root.style.width = `${this.root.offsetWidth}px`;\\n const lines = this.quill.getLines(range.index, range.length);\\n if (lines.length === 1) {\\n this.position(this.quill.getBounds(range));\\n } else {\\n const lastLine = lines[lines.length - 1];\\n const index = this.quill.getIndex(lastLine);\\n const length = Math.min(lastLine.length() - 1, range.index + range.length - index);\\n const indexBounds = this.quill.getBounds(new _selection.Range(index, length));\\n this.position(indexBounds);\\n }\\n } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\\n this.hide();\\n }\\n });\\n }\\n\\n listen() {\\n super.listen();\\n this.root.querySelector('.ql-close').addEventListener('click', () => {\\n this.root.classList.remove('ql-editing');\\n });\\n this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, () => {\\n // Let selection be restored by toolbar handlers before repositioning\\n setTimeout(() => {\\n if (this.root.classList.contains('ql-hidden')) return;\\n const range = this.quill.getSelection();\\n if (range != null) {\\n this.position(this.quill.getBounds(range));\\n }\\n }, 1);\\n });\\n }\\n\\n cancel() {\\n this.show();\\n }\\n\\n position(reference) {\\n const shift = super.position(reference);\\n const arrow = this.root.querySelector('.ql-tooltip-arrow');\\n arrow.style.marginLeft = '';\\n if (shift !== 0) {\\n arrow.style.marginLeft = `${-1 * shift - arrow.offsetWidth / 2}px`;\\n }\\n return shift;\\n }\\n}\\nBubbleTooltip.TEMPLATE = ['', '
    ', '', '', '
    '].join('');\\n\\nclass BubbleTheme extends _base2.default {\\n constructor(quill, options) {\\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\\n options.modules.toolbar.container = TOOLBAR_CONFIG;\\n }\\n super(quill, options);\\n this.quill.container.classList.add('ql-bubble');\\n }\\n\\n extendToolbar(toolbar) {\\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\\n this.tooltip.root.appendChild(toolbar.container);\\n this.buildButtons(toolbar.container.querySelectorAll('button'), _icons2.default);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _icons2.default);\\n }\\n}\\nBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\\n modules: {\\n toolbar: {\\n handlers: {\\n link(value) {\\n if (!value) {\\n this.quill.format('link', false);\\n } else {\\n this.quill.theme.tooltip.edit();\\n }\\n }\\n }\\n }\\n }\\n});\\n\\nexports.BubbleTooltip = BubbleTooltip;\\nexports.default = BubbleTheme;\\n\\n//# sourceURL=webpack://Quill/./themes/bubble.js?\");\n\n/***/ }),\n\n/***/ \"./themes/snow.js\":\n/*!************************!*\\\n !*** ./themes/snow.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\\\"return\\\"]) _i[\\\"return\\\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\\\"Invalid attempt to destructure non-iterable instance\\\"); } }; }();\\n\\nvar _extend = __webpack_require__(/*! extend */ \\\"./node_modules/extend/index.js\\\");\\n\\nvar _extend2 = _interopRequireDefault(_extend);\\n\\nvar _emitter = __webpack_require__(/*! ../core/emitter */ \\\"./core/emitter.js\\\");\\n\\nvar _emitter2 = _interopRequireDefault(_emitter);\\n\\nvar _base = __webpack_require__(/*! ./base */ \\\"./themes/base.js\\\");\\n\\nvar _base2 = _interopRequireDefault(_base);\\n\\nvar _link = __webpack_require__(/*! ../formats/link */ \\\"./formats/link.js\\\");\\n\\nvar _link2 = _interopRequireDefault(_link);\\n\\nvar _selection = __webpack_require__(/*! ../core/selection */ \\\"./core/selection.js\\\");\\n\\nvar _icons = __webpack_require__(/*! ../ui/icons */ \\\"./ui/icons.js\\\");\\n\\nvar _icons2 = _interopRequireDefault(_icons);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nconst TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\\n\\nclass SnowTooltip extends _base.BaseTooltip {\\n constructor(quill, bounds) {\\n super(quill, bounds);\\n this.preview = this.root.querySelector('a.ql-preview');\\n }\\n\\n listen() {\\n super.listen();\\n this.root.querySelector('a.ql-action').addEventListener('click', event => {\\n if (this.root.classList.contains('ql-editing')) {\\n this.save();\\n } else {\\n this.edit('link', this.preview.textContent);\\n }\\n event.preventDefault();\\n });\\n this.root.querySelector('a.ql-remove').addEventListener('click', event => {\\n if (this.linkRange != null) {\\n const range = this.linkRange;\\n this.restoreFocus();\\n this.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\\n delete this.linkRange;\\n }\\n event.preventDefault();\\n this.hide();\\n });\\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, (range, oldRange, source) => {\\n if (range == null) return;\\n if (range.length === 0 && source === _emitter2.default.sources.USER) {\\n var _quill$scroll$descend = this.quill.scroll.descendant(_link2.default, range.index),\\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2);\\n\\n const link = _quill$scroll$descend2[0],\\n offset = _quill$scroll$descend2[1];\\n\\n if (link != null) {\\n this.linkRange = new _selection.Range(range.index - offset, link.length());\\n const preview = _link2.default.formats(link.domNode);\\n this.preview.textContent = preview;\\n this.preview.setAttribute('href', preview);\\n this.show();\\n this.position(this.quill.getBounds(this.linkRange));\\n return;\\n }\\n } else {\\n delete this.linkRange;\\n }\\n this.hide();\\n });\\n }\\n\\n show() {\\n super.show();\\n this.root.removeAttribute('data-mode');\\n }\\n}\\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\\n\\nclass SnowTheme extends _base2.default {\\n constructor(quill, options) {\\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\\n options.modules.toolbar.container = TOOLBAR_CONFIG;\\n }\\n super(quill, options);\\n this.quill.container.classList.add('ql-snow');\\n }\\n\\n extendToolbar(toolbar) {\\n toolbar.container.classList.add('ql-snow');\\n this.buildButtons(toolbar.container.querySelectorAll('button'), _icons2.default);\\n this.buildPickers(toolbar.container.querySelectorAll('select'), _icons2.default);\\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\\n if (toolbar.container.querySelector('.ql-link')) {\\n this.quill.keyboard.addBinding({ key: 'k', shortKey: true }, (range, context) => {\\n toolbar.handlers.link.call(toolbar, !context.format.link);\\n });\\n }\\n }\\n}\\nSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\\n modules: {\\n toolbar: {\\n handlers: {\\n link(value) {\\n if (value) {\\n const range = this.quill.getSelection();\\n if (range == null || range.length === 0) return;\\n let preview = this.quill.getText(range);\\n if (/^\\\\S+@\\\\S+\\\\.\\\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\\n preview = `mailto:${preview}`;\\n }\\n const tooltip = this.quill.theme.tooltip;\\n\\n tooltip.edit('link', preview);\\n } else {\\n this.quill.format('link', false);\\n }\\n }\\n }\\n }\\n }\\n});\\n\\nexports.default = SnowTheme;\\n\\n//# sourceURL=webpack://Quill/./themes/snow.js?\");\n\n/***/ }),\n\n/***/ \"./ui/color-picker.js\":\n/*!****************************!*\\\n !*** ./ui/color-picker.js ***!\n \\****************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _picker = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\nvar _picker2 = _interopRequireDefault(_picker);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass ColorPicker extends _picker2.default {\\n constructor(select, label) {\\n super(select);\\n this.label.innerHTML = label;\\n this.container.classList.add('ql-color-picker');\\n Array.from(this.container.querySelectorAll('.ql-picker-item')).slice(0, 7).forEach(item => {\\n item.classList.add('ql-primary');\\n });\\n }\\n\\n buildItem(option) {\\n const item = super.buildItem(option);\\n item.style.backgroundColor = option.getAttribute('value') || '';\\n return item;\\n }\\n\\n selectItem(item, trigger) {\\n super.selectItem(item, trigger);\\n const colorLabel = this.label.querySelector('.ql-color-label');\\n const value = item ? item.getAttribute('data-value') || '' : '';\\n if (colorLabel) {\\n if (colorLabel.tagName === 'line') {\\n colorLabel.style.stroke = value;\\n } else {\\n colorLabel.style.fill = value;\\n }\\n }\\n }\\n}\\n\\nexports.default = ColorPicker;\\n\\n//# sourceURL=webpack://Quill/./ui/color-picker.js?\");\n\n/***/ }),\n\n/***/ \"./ui/icon-picker.js\":\n/*!***************************!*\\\n !*** ./ui/icon-picker.js ***!\n \\***************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _picker = __webpack_require__(/*! ./picker */ \\\"./ui/picker.js\\\");\\n\\nvar _picker2 = _interopRequireDefault(_picker);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nclass IconPicker extends _picker2.default {\\n constructor(select, icons) {\\n super(select);\\n this.container.classList.add('ql-icon-picker');\\n Array.from(this.container.querySelectorAll('.ql-picker-item')).forEach(item => {\\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\\n });\\n this.defaultItem = this.container.querySelector('.ql-selected');\\n this.selectItem(this.defaultItem);\\n }\\n\\n selectItem(target, trigger) {\\n super.selectItem(target, trigger);\\n const item = target || this.defaultItem;\\n this.label.innerHTML = item.innerHTML;\\n }\\n}\\n\\nexports.default = IconPicker;\\n\\n//# sourceURL=webpack://Quill/./ui/icon-picker.js?\");\n\n/***/ }),\n\n/***/ \"./ui/icons.js\":\n/*!*********************!*\\\n !*** ./ui/icons.js ***!\n \\*********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nvar _alignLeft = __webpack_require__(/*! ../assets/icons/align-left.svg */ \\\"./assets/icons/align-left.svg\\\");\\n\\nvar _alignLeft2 = _interopRequireDefault(_alignLeft);\\n\\nvar _alignCenter = __webpack_require__(/*! ../assets/icons/align-center.svg */ \\\"./assets/icons/align-center.svg\\\");\\n\\nvar _alignCenter2 = _interopRequireDefault(_alignCenter);\\n\\nvar _alignRight = __webpack_require__(/*! ../assets/icons/align-right.svg */ \\\"./assets/icons/align-right.svg\\\");\\n\\nvar _alignRight2 = _interopRequireDefault(_alignRight);\\n\\nvar _alignJustify = __webpack_require__(/*! ../assets/icons/align-justify.svg */ \\\"./assets/icons/align-justify.svg\\\");\\n\\nvar _alignJustify2 = _interopRequireDefault(_alignJustify);\\n\\nvar _background = __webpack_require__(/*! ../assets/icons/background.svg */ \\\"./assets/icons/background.svg\\\");\\n\\nvar _background2 = _interopRequireDefault(_background);\\n\\nvar _blockquote = __webpack_require__(/*! ../assets/icons/blockquote.svg */ \\\"./assets/icons/blockquote.svg\\\");\\n\\nvar _blockquote2 = _interopRequireDefault(_blockquote);\\n\\nvar _bold = __webpack_require__(/*! ../assets/icons/bold.svg */ \\\"./assets/icons/bold.svg\\\");\\n\\nvar _bold2 = _interopRequireDefault(_bold);\\n\\nvar _clean = __webpack_require__(/*! ../assets/icons/clean.svg */ \\\"./assets/icons/clean.svg\\\");\\n\\nvar _clean2 = _interopRequireDefault(_clean);\\n\\nvar _code = __webpack_require__(/*! ../assets/icons/code.svg */ \\\"./assets/icons/code.svg\\\");\\n\\nvar _code2 = _interopRequireDefault(_code);\\n\\nvar _color = __webpack_require__(/*! ../assets/icons/color.svg */ \\\"./assets/icons/color.svg\\\");\\n\\nvar _color2 = _interopRequireDefault(_color);\\n\\nvar _directionLtr = __webpack_require__(/*! ../assets/icons/direction-ltr.svg */ \\\"./assets/icons/direction-ltr.svg\\\");\\n\\nvar _directionLtr2 = _interopRequireDefault(_directionLtr);\\n\\nvar _directionRtl = __webpack_require__(/*! ../assets/icons/direction-rtl.svg */ \\\"./assets/icons/direction-rtl.svg\\\");\\n\\nvar _directionRtl2 = _interopRequireDefault(_directionRtl);\\n\\nvar _formula = __webpack_require__(/*! ../assets/icons/formula.svg */ \\\"./assets/icons/formula.svg\\\");\\n\\nvar _formula2 = _interopRequireDefault(_formula);\\n\\nvar _header = __webpack_require__(/*! ../assets/icons/header.svg */ \\\"./assets/icons/header.svg\\\");\\n\\nvar _header2 = _interopRequireDefault(_header);\\n\\nvar _header3 = __webpack_require__(/*! ../assets/icons/header-2.svg */ \\\"./assets/icons/header-2.svg\\\");\\n\\nvar _header4 = _interopRequireDefault(_header3);\\n\\nvar _italic = __webpack_require__(/*! ../assets/icons/italic.svg */ \\\"./assets/icons/italic.svg\\\");\\n\\nvar _italic2 = _interopRequireDefault(_italic);\\n\\nvar _image = __webpack_require__(/*! ../assets/icons/image.svg */ \\\"./assets/icons/image.svg\\\");\\n\\nvar _image2 = _interopRequireDefault(_image);\\n\\nvar _indent = __webpack_require__(/*! ../assets/icons/indent.svg */ \\\"./assets/icons/indent.svg\\\");\\n\\nvar _indent2 = _interopRequireDefault(_indent);\\n\\nvar _outdent = __webpack_require__(/*! ../assets/icons/outdent.svg */ \\\"./assets/icons/outdent.svg\\\");\\n\\nvar _outdent2 = _interopRequireDefault(_outdent);\\n\\nvar _link = __webpack_require__(/*! ../assets/icons/link.svg */ \\\"./assets/icons/link.svg\\\");\\n\\nvar _link2 = _interopRequireDefault(_link);\\n\\nvar _listBullet = __webpack_require__(/*! ../assets/icons/list-bullet.svg */ \\\"./assets/icons/list-bullet.svg\\\");\\n\\nvar _listBullet2 = _interopRequireDefault(_listBullet);\\n\\nvar _listCheck = __webpack_require__(/*! ../assets/icons/list-check.svg */ \\\"./assets/icons/list-check.svg\\\");\\n\\nvar _listCheck2 = _interopRequireDefault(_listCheck);\\n\\nvar _listOrdered = __webpack_require__(/*! ../assets/icons/list-ordered.svg */ \\\"./assets/icons/list-ordered.svg\\\");\\n\\nvar _listOrdered2 = _interopRequireDefault(_listOrdered);\\n\\nvar _subscript = __webpack_require__(/*! ../assets/icons/subscript.svg */ \\\"./assets/icons/subscript.svg\\\");\\n\\nvar _subscript2 = _interopRequireDefault(_subscript);\\n\\nvar _superscript = __webpack_require__(/*! ../assets/icons/superscript.svg */ \\\"./assets/icons/superscript.svg\\\");\\n\\nvar _superscript2 = _interopRequireDefault(_superscript);\\n\\nvar _strike = __webpack_require__(/*! ../assets/icons/strike.svg */ \\\"./assets/icons/strike.svg\\\");\\n\\nvar _strike2 = _interopRequireDefault(_strike);\\n\\nvar _table = __webpack_require__(/*! ../assets/icons/table.svg */ \\\"./assets/icons/table.svg\\\");\\n\\nvar _table2 = _interopRequireDefault(_table);\\n\\nvar _underline = __webpack_require__(/*! ../assets/icons/underline.svg */ \\\"./assets/icons/underline.svg\\\");\\n\\nvar _underline2 = _interopRequireDefault(_underline);\\n\\nvar _video = __webpack_require__(/*! ../assets/icons/video.svg */ \\\"./assets/icons/video.svg\\\");\\n\\nvar _video2 = _interopRequireDefault(_video);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nmodule.exports = {\\n align: {\\n '': _alignLeft2.default,\\n center: _alignCenter2.default,\\n right: _alignRight2.default,\\n justify: _alignJustify2.default\\n },\\n background: _background2.default,\\n blockquote: _blockquote2.default,\\n bold: _bold2.default,\\n clean: _clean2.default,\\n code: _code2.default,\\n 'code-block': _code2.default,\\n color: _color2.default,\\n direction: {\\n '': _directionLtr2.default,\\n rtl: _directionRtl2.default\\n },\\n formula: _formula2.default,\\n header: {\\n '1': _header2.default,\\n '2': _header4.default\\n },\\n italic: _italic2.default,\\n image: _image2.default,\\n indent: {\\n '+1': _indent2.default,\\n '-1': _outdent2.default\\n },\\n link: _link2.default,\\n list: {\\n bullet: _listBullet2.default,\\n check: _listCheck2.default,\\n ordered: _listOrdered2.default\\n },\\n script: {\\n sub: _subscript2.default,\\n super: _superscript2.default\\n },\\n strike: _strike2.default,\\n table: _table2.default,\\n underline: _underline2.default,\\n video: _video2.default\\n};\\n\\n//# sourceURL=webpack://Quill/./ui/icons.js?\");\n\n/***/ }),\n\n/***/ \"./ui/picker.js\":\n/*!**********************!*\\\n !*** ./ui/picker.js ***!\n \\**********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\n\\nvar _dropdown = __webpack_require__(/*! ../assets/icons/dropdown.svg */ \\\"./assets/icons/dropdown.svg\\\");\\n\\nvar _dropdown2 = _interopRequireDefault(_dropdown);\\n\\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\\n\\nlet optionsCounter = 0;\\n\\nfunction toggleAriaAttribute(element, attribute) {\\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\\n}\\n\\nclass Picker {\\n constructor(select) {\\n this.select = select;\\n this.container = document.createElement('span');\\n this.buildPicker();\\n this.select.style.display = 'none';\\n this.select.parentNode.insertBefore(this.container, this.select);\\n\\n this.label.addEventListener('mousedown', () => {\\n this.togglePicker();\\n });\\n this.label.addEventListener('keydown', event => {\\n switch (event.key) {\\n case 'Enter':\\n this.togglePicker();\\n break;\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n default:\\n }\\n });\\n this.select.addEventListener('change', this.update.bind(this));\\n }\\n\\n togglePicker() {\\n this.container.classList.toggle('ql-expanded');\\n // Toggle aria-expanded and aria-hidden to make the picker accessible\\n toggleAriaAttribute(this.label, 'aria-expanded');\\n toggleAriaAttribute(this.options, 'aria-hidden');\\n }\\n\\n buildItem(option) {\\n const item = document.createElement('span');\\n item.tabIndex = '0';\\n item.setAttribute('role', 'button');\\n item.classList.add('ql-picker-item');\\n if (option.hasAttribute('value')) {\\n item.setAttribute('data-value', option.getAttribute('value'));\\n }\\n if (option.textContent) {\\n item.setAttribute('data-label', option.textContent);\\n }\\n item.addEventListener('click', () => {\\n this.selectItem(item, true);\\n });\\n item.addEventListener('keydown', event => {\\n switch (event.key) {\\n case 'Enter':\\n this.selectItem(item, true);\\n event.preventDefault();\\n break;\\n case 'Escape':\\n this.escape();\\n event.preventDefault();\\n break;\\n default:\\n }\\n });\\n\\n return item;\\n }\\n\\n buildLabel() {\\n const label = document.createElement('span');\\n label.classList.add('ql-picker-label');\\n label.innerHTML = _dropdown2.default;\\n label.tabIndex = '0';\\n label.setAttribute('role', 'button');\\n label.setAttribute('aria-expanded', 'false');\\n this.container.appendChild(label);\\n return label;\\n }\\n\\n buildOptions() {\\n const options = document.createElement('span');\\n options.classList.add('ql-picker-options');\\n\\n // Don't want screen readers to read this until options are visible\\n options.setAttribute('aria-hidden', 'true');\\n options.tabIndex = '-1';\\n\\n // Need a unique id for aria-controls\\n options.id = `ql-picker-options-${optionsCounter}`;\\n optionsCounter += 1;\\n this.label.setAttribute('aria-controls', options.id);\\n\\n this.options = options;\\n\\n Array.from(this.select.options).forEach(option => {\\n const item = this.buildItem(option);\\n options.appendChild(item);\\n if (option.selected === true) {\\n this.selectItem(item);\\n }\\n });\\n this.container.appendChild(options);\\n }\\n\\n buildPicker() {\\n Array.from(this.select.attributes).forEach(item => {\\n this.container.setAttribute(item.name, item.value);\\n });\\n this.container.classList.add('ql-picker');\\n this.label = this.buildLabel();\\n this.buildOptions();\\n }\\n\\n escape() {\\n // Close menu and return focus to trigger label\\n this.close();\\n // Need setTimeout for accessibility to ensure that the browser executes\\n // focus on the next process thread and after any DOM content changes\\n setTimeout(() => this.label.focus(), 1);\\n }\\n\\n close() {\\n this.container.classList.remove('ql-expanded');\\n this.label.setAttribute('aria-expanded', 'false');\\n this.options.setAttribute('aria-hidden', 'true');\\n }\\n\\n selectItem(item, trigger = false) {\\n const selected = this.container.querySelector('.ql-selected');\\n if (item === selected) return;\\n if (selected != null) {\\n selected.classList.remove('ql-selected');\\n }\\n if (item == null) return;\\n item.classList.add('ql-selected');\\n this.select.selectedIndex = Array.from(item.parentNode.children).indexOf(item);\\n if (item.hasAttribute('data-value')) {\\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\\n } else {\\n this.label.removeAttribute('data-value');\\n }\\n if (item.hasAttribute('data-label')) {\\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\\n } else {\\n this.label.removeAttribute('data-label');\\n }\\n if (trigger) {\\n this.select.dispatchEvent(new Event('change'));\\n this.close();\\n }\\n }\\n\\n update() {\\n let option;\\n if (this.select.selectedIndex > -1) {\\n const item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\\n option = this.select.options[this.select.selectedIndex];\\n this.selectItem(item);\\n } else {\\n this.selectItem(null);\\n }\\n const isActive = option != null && option !== this.select.querySelector('option[selected]');\\n this.label.classList.toggle('ql-active', isActive);\\n }\\n}\\n\\nexports.default = Picker;\\n\\n//# sourceURL=webpack://Quill/./ui/picker.js?\");\n\n/***/ }),\n\n/***/ \"./ui/tooltip.js\":\n/*!***********************!*\\\n !*** ./ui/tooltip.js ***!\n \\***********************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\neval(\"\\n\\nObject.defineProperty(exports, \\\"__esModule\\\", {\\n value: true\\n});\\nclass Tooltip {\\n constructor(quill, boundsContainer) {\\n this.quill = quill;\\n this.boundsContainer = boundsContainer || document.body;\\n this.root = quill.addContainer('ql-tooltip');\\n this.root.innerHTML = this.constructor.TEMPLATE;\\n if (this.quill.root === this.quill.scrollingContainer) {\\n this.quill.root.addEventListener('scroll', () => {\\n this.root.style.marginTop = `${-1 * this.quill.root.scrollTop}px`;\\n });\\n }\\n this.hide();\\n }\\n\\n hide() {\\n this.root.classList.add('ql-hidden');\\n }\\n\\n position(reference) {\\n const left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\\n // root.scrollTop should be 0 if scrollContainer !== root\\n const top = reference.bottom + this.quill.root.scrollTop;\\n this.root.style.left = `${left}px`;\\n this.root.style.top = `${top}px`;\\n this.root.classList.remove('ql-flip');\\n const containerBounds = this.boundsContainer.getBoundingClientRect();\\n const rootBounds = this.root.getBoundingClientRect();\\n let shift = 0;\\n if (rootBounds.right > containerBounds.right) {\\n shift = containerBounds.right - rootBounds.right;\\n this.root.style.left = `${left + shift}px`;\\n }\\n if (rootBounds.left < containerBounds.left) {\\n shift = containerBounds.left - rootBounds.left;\\n this.root.style.left = `${left + shift}px`;\\n }\\n if (rootBounds.bottom > containerBounds.bottom) {\\n const height = rootBounds.bottom - rootBounds.top;\\n const verticalShift = reference.bottom - reference.top + height;\\n this.root.style.top = `${top - verticalShift}px`;\\n this.root.classList.add('ql-flip');\\n }\\n return shift;\\n }\\n\\n show() {\\n this.root.classList.remove('ql-editing');\\n this.root.classList.remove('ql-hidden');\\n }\\n}\\n\\nexports.default = Tooltip;\\n\\n//# sourceURL=webpack://Quill/./ui/tooltip.js?\");\n\n/***/ }),\n\n/***/ 0:\n/*!************************!*\\\n !*** multi ./quill.js ***!\n \\************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\neval(\"module.exports = __webpack_require__(/*! ./quill.js */\\\"./quill.js\\\");\\n\\n\\n//# sourceURL=webpack://Quill/multi_./quill.js?\");\n\n/***/ })\n\n/******/ })[\"default\"];\n});","import Quill from 'quill';\n\n// specify the fonts you want\nconst fonts = ['Arial', 'Courier', 'Times New Roman', 'Verdana'];\n// generate code friendly names\nfunction get_font_name(font) {\n\treturn font.toLowerCase().replace(/\\s/g, \"-\");\n}\nlet font_names = fonts.map(font => get_font_name(font));\n// add fonts to style\nlet font_styles = \"\";\nfonts.forEach(function(font) {\n\tlet font_name = get_font_name(font);\n\tfont_styles += `\n\t\t.ql-snow .ql-picker.ql-font\n\t\t.ql-picker-label[data-value=${font_name}]::before,\n\t\t.ql-snow .ql-picker.ql-font\n\t\t.ql-picker-item[data-value=${font_name}]::before {\n\t\t\t\tcontent: '${font}';\n\t\t\t\tfont-family: ${font}, sans-serif;\n\t\t}\n\t\t.ql-font-${font_name} {\n\t\t\tfont-family: ${font}, sans-serif;\n\t\t}\n\t`;\n});\nconst node = document.createElement('style');\nnode.innerHTML = font_styles;\ndocument.body.appendChild(node);\n\n\n// replace

    tag with

    \nconst Block = Quill.import('blots/block');\nBlock.tagName = 'DIV';\nQuill.register(Block, true);\n\nconst CodeBlockContainer = Quill.import('formats/code-block-container');\nCodeBlockContainer.tagName = 'PRE';\nQuill.register(CodeBlockContainer, true);\n\n// table\nconst Table = Quill.import('formats/table-container');\nconst superCreate = Table.create.bind(Table);\nTable.create = (value) => {\n\tconst node = superCreate(value);\n\tnode.classList.add('table');\n\tnode.classList.add('table-bordered');\n\treturn node;\n}\nQuill.register(Table, true);\n\n// link without href\nvar Link = Quill.import('formats/link');\n\nclass MyLink extends Link {\n\tstatic create(value) {\n\t\tlet node = super.create(value);\n\t\tvalue = this.sanitize(value);\n\t\tnode.setAttribute('href', value);\n\t\tif(value.startsWith('/') || value.indexOf(window.location.host)) {\n\t\t\t// no href if internal link\n\t\t\tnode.removeAttribute('target');\n\t\t}\n\t\treturn node;\n\t}\n}\n\nQuill.register(MyLink, true);\n\n// image uploader\nconst Uploader = Quill.import('modules/uploader');\nUploader.DEFAULTS.mimetypes.push('image/gif');\n\n// inline style\nconst BackgroundStyle = Quill.import('attributors/style/background');\nconst ColorStyle = Quill.import('attributors/style/color');\nconst FontStyle = Quill.import('attributors/style/font');\nconst AlignStyle = Quill.import('attributors/style/align');\nconst DirectionStyle = Quill.import('attributors/style/direction');\nQuill.register(BackgroundStyle, true);\nQuill.register(ColorStyle, true);\nQuill.register(FontStyle, true);\nQuill.register(AlignStyle, true);\nQuill.register(DirectionStyle, true);\n\n//Adding fonts in text editor\nconst Font = Quill.import('attributors/class/font');\nFont.whitelist = font_names;\nQuill.register(Font, true);\n\nfrappe.ui.form.ControlTextEditor = frappe.ui.form.ControlCode.extend({\n\tmake_wrapper() {\n\t\tthis._super();\n\t\tthis.$wrapper.find(\".like-disabled-input\").addClass('text-editor-print');\n\t},\n\n\tmake_input() {\n\t\tthis.has_input = true;\n\t\tthis.make_quill_editor();\n\t},\n\n\tmake_quill_editor() {\n\t\tif (this.quill) return;\n\t\tthis.quill_container = $('
    ').appendTo(this.input_area);\n\t\tthis.quill = new Quill(this.quill_container[0], this.get_quill_options());\n\t\tthis.bind_events();\n\t},\n\n\tbind_events() {\n\t\tthis.quill.on('text-change', frappe.utils.debounce((delta, oldDelta, source) => {\n\t\t\tif (!this.is_quill_dirty(source)) return;\n\n\t\t\tconst input_value = this.get_input_value();\n\t\t\tthis.parse_validate_and_set_in_model(input_value);\n\t\t}, 300));\n\n\t\t$(this.quill.root).on('keydown', (e) => {\n\t\t\tconst key = frappe.ui.keys.get_key(e);\n\t\t\tif (['ctrl+b', 'meta+b'].includes(key)) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t});\n\n\t\t$(this.quill.root).on('drop', (e) => {\n\t\t\te.stopPropagation();\n\t\t});\n\n\t\t// table commands\n\t\tthis.$wrapper.on('click', '.ql-table .ql-picker-item', (e) => {\n\t\t\tconst $target = $(e.currentTarget);\n\t\t\tconst action = $target.data().value;\n\t\t\te.preventDefault();\n\n\t\t\tconst table = this.quill.getModule('table');\n\t\t\tif (action === 'insert-table') {\n\t\t\t\ttable.insertTable(2, 2);\n\t\t\t} else if (action === 'insert-row-above') {\n\t\t\t\ttable.insertRowAbove();\n\t\t\t} else if (action === 'insert-row-below') {\n\t\t\t\ttable.insertRowBelow();\n\t\t\t} else if (action === 'insert-column-left') {\n\t\t\t\ttable.insertColumnLeft();\n\t\t\t} else if (action === 'insert-column-right') {\n\t\t\t\ttable.insertColumnRight();\n\t\t\t} else if (action === 'delete-row') {\n\t\t\t\ttable.deleteRow();\n\t\t\t} else if (action === 'delete-column') {\n\t\t\t\ttable.deleteColumn();\n\t\t\t} else if (action === 'delete-table') {\n\t\t\t\ttable.deleteTable();\n\t\t\t}\n\n\t\t\tif (action !== 'delete-row') {\n\t\t\t\ttable.balanceTables();\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t});\n\t},\n\n\tis_quill_dirty(source) {\n\t\tif (source === 'api') return false;\n\t\tlet input_value = this.get_input_value();\n\t\treturn this.value !== input_value;\n\t},\n\n\tget_quill_options() {\n\t\treturn {\n\t\t\tmodules: {\n\t\t\t\ttoolbar: this.get_toolbar_options(),\n\t\t\t\ttable: true\n\t\t\t},\n\t\t\ttheme: 'snow'\n\t\t};\n\t},\n\n\tget_toolbar_options() {\n\t\treturn [\n\t\t\t[{ 'header': [1, 2, 3, false] }],\n\t\t\t// Adding Font dropdown to give the user the ability to change text font.\n\t\t\t[{ 'font': font_names }],\n\t\t\t['bold', 'italic', 'underline'],\n\t\t\t[{ 'color': [] }, { 'background': [] }],\n\t\t\t['blockquote', 'code-block'],\n\t\t\t['link', 'image'],\n\t\t\t// Adding Direction tool to give the user the ability to change text direction.\n\t\t\t[{ 'direction': \"rtl\" }],\n\t\t\t[{ 'list': 'ordered' }, { 'list': 'bullet' }, { 'list': 'check' }],\n\t\t\t[{ 'align': [] }],\n\t\t\t[{ 'indent': '-1'}, { 'indent': '+1' }],\n\t\t\t[{'table': [\n\t\t\t\t'insert-table',\n\t\t\t\t'insert-row-above',\n\t\t\t\t'insert-row-below',\n\t\t\t\t'insert-column-right',\n\t\t\t\t'insert-column-left',\n\t\t\t\t'delete-row',\n\t\t\t\t'delete-column',\n\t\t\t\t'delete-table',\n\t\t\t]}],\n\t\t\t['clean']\n\t\t];\n\t},\n\n\tparse(value) {\n\t\tif (value == null) {\n\t\t\tvalue = \"\";\n\t\t}\n\t\treturn frappe.dom.remove_script_and_style(value);\n\t},\n\n\tset_formatted_input(value) {\n\t\tif (!this.quill) return;\n\t\tif (value === this.get_input_value()) return;\n\t\tif (!value) {\n\t\t\t// clear contents for falsy values like '', undefined or null\n\t\t\tthis.quill.setText('');\n\t\t\treturn;\n\t\t}\n\n\t\t// set html without triggering a focus\n\t\tconst delta = this.quill.clipboard.convert({ html: value, text: '' });\n\t\tthis.quill.setContents(delta);\n\t},\n\n\tget_input_value() {\n\t\tlet value = this.quill ? this.quill.root.innerHTML : '';\n\t\t// quill keeps ol as a common container for both type of lists\n\t\t// and uses css for appearances, this is not semantic\n\t\t// so we convert ol to ul if it is unordered\n\t\tconst $value = $(`
    ${value}
    `);\n\t\t$value.find('ol li[data-list=bullet]:first-child').each((i, li) => {\n\t\t\tlet $li = $(li);\n\t\t\tlet $parent = $li.parent();\n\t\t\tlet $children = $parent.children();\n\t\t\tlet $ul = $('
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\n\t\t\t
    `;\n\n\t\t\t$(template).appendTo(this.wrapper);\n\t\t\tthis.form_area = this.wrapper.find(\".form-area\");\n\t\t\tthis.row.set_row_index();\n\t\t\tthis.set_form_events();\n\t\t}\n\t}\n\tset_form_events() {\n\t\tvar me = this;\n\t\tthis.wrapper.find(\".grid-delete-row\")\n\t\t\t.on('click', function() {\n\t\t\t\tme.row.remove(); return false;\n\t\t\t});\n\t\tthis.wrapper.find(\".grid-insert-row\")\n\t\t\t.on('click', function() {\n\t\t\t\tme.row.insert(true); return false;\n\t\t\t});\n\t\tthis.wrapper.find(\".grid-insert-row-below\")\n\t\t\t.on('click', function() {\n\t\t\t\tme.row.insert(true, true); return false;\n\t\t\t});\n\t\tthis.wrapper.find(\".grid-duplicate-row\")\n\t\t\t.on('click', function() {\n\t\t\t\tme.row.insert(true, true, true); return false;\n\t\t\t});\n\t\tthis.wrapper.find(\".grid-move-row\")\n\t\t\t.on('click', function() {\n\t\t\t\tme.row.move(); return false;\n\t\t\t});\n\t\tthis.wrapper.find(\".grid-append-row\")\n\t\t\t.on('click', function() {\n\t\t\t\tme.row.toggle_view(false);\n\t\t\t\tme.row.grid.add_new_row(me.row.doc.idx+1, null, true);\n\t\t\t\treturn false;\n\t\t\t});\n\t\tthis.wrapper.find(\".grid-form-heading, .grid-footer-toolbar\").on(\"click\", function() {\n\t\t\tme.row.toggle_view();\n\t\t\treturn false;\n\t\t});\n\t}\n\ttoggle_add_delete_button_display($parent) {\n\t\t$parent.find(\".row-actions, .grid-append-row\")\n\t\t\t.toggle(this.row.grid.is_editable());\n\t}\n\trefresh_field(fieldname) {\n\t\tconst field = this.fields_dict[fieldname];\n\t\tif (!field) return;\n\n\t\tfield.docname = this.row.doc.name;\n\t\tfield.refresh();\n\t\tthis.layout && this.layout.refresh_dependency();\n\t}\n\tset_focus() {\n\t\t// wait for animation and then focus on the first row\n\t\tvar me = this;\n\t\tsetTimeout(function() {\n\t\t\tif(me.row.frm && me.row.frm.doc.docstatus===0 || !me.row.frm) {\n\t\t\t\tvar first = me.form_area.find(\"input:first\");\n\t\t\t\tif(first.length && !in_list([\"Date\", \"Datetime\", \"Time\"], first.attr(\"data-fieldtype\"))) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tfirst.get(0).focus();\n\t\t\t\t\t} catch(e) {\n\t\t\t\t\t\t//\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}, 500);\n\t}\n}\n","import GridRowForm from './grid_row_form';\n\nexport default class GridRow {\n\tconstructor(opts) {\n\t\tthis.on_grid_fields_dict = {};\n\t\tthis.on_grid_fields = [];\n\t\tthis.columns = {};\n\t\tthis.columns_list = [];\n\t\t$.extend(this, opts);\n\t\tthis.row_check_html = '';\n\t\tthis.make();\n\t}\n\tmake() {\n\t\tvar me = this;\n\n\t\tthis.wrapper = $('
    ').appendTo(this.parent).data(\"grid_row\", this);\n\t\tthis.row = $('
    ').appendTo(this.wrapper)\n\t\t\t.on(\"click\", function(e) {\n\t\t\t\tif($(e.target).hasClass('grid-row-check') || $(e.target).hasClass('row-index') || $(e.target).parent().hasClass('row-index')) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tif(me.grid.allow_on_grid_editing() && me.grid.is_editable()) {\n\t\t\t\t\t// pass\n\t\t\t\t} else {\n\t\t\t\t\tme.toggle_view();\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t});\n\n\t\tif(this.grid.template && !this.grid.meta.editable_grid) {\n\t\t\tthis.render_template();\n\t\t} else {\n\t\t\tthis.render_row();\n\t\t}\n\t\tif(this.doc) {\n\t\t\tthis.set_data();\n\t\t}\n\t}\n\tset_data() {\n\t\tthis.wrapper.data({\n\t\t\t\"doc\": this.doc\n\t\t})\n\t}\n\tset_row_index() {\n\t\tif(this.doc) {\n\t\t\tthis.wrapper\n\t\t\t\t.attr('data-name', this.doc.name)\n\t\t\t\t.attr(\"data-idx\", this.doc.idx)\n\t\t\t\t.find(\".row-index span, .grid-form-row-index\").html(this.doc.idx)\n\n\t\t}\n\t}\n\tselect(checked) {\n\t\tthis.doc.__checked = checked ? 1 : 0;\n\t}\n\trefresh_check() {\n\t\tthis.wrapper.find('.grid-row-check').prop('checked', this.doc ? !!this.doc.__checked : false);\n\t\tthis.grid.refresh_remove_rows_button();\n\t}\n\tremove() {\n\t\tvar me = this;\n\t\tif(this.grid.is_editable()) {\n\t\t\tif(this.frm) {\n\t\t\t\tif(this.get_open_form()) {\n\t\t\t\t\tthis.hide_form();\n\t\t\t\t}\n\n\t\t\t\treturn frappe.run_serially([\n\t\t\t\t\t() => {\n\t\t\t\t\t\treturn this.frm.script_manager.trigger(\"before_\" + this.grid.df.fieldname + \"_remove\",\n\t\t\t\t\t\t\tthis.doc.doctype, this.doc.name);\n\t\t\t\t\t},\n\t\t\t\t\t() => {\n\t\t\t\t\t\tfrappe.model.clear_doc(this.doc.doctype, this.doc.name);\n\n\t\t\t\t\t\treturn this.frm.script_manager.trigger(this.grid.df.fieldname + \"_remove\",\n\t\t\t\t\t\t\tthis.doc.doctype, this.doc.name);\n\t\t\t\t\t},\n\t\t\t\t\t() => {\n\t\t\t\t\t\tthis.frm.dirty();\n\t\t\t\t\t\tthis.grid.refresh();\n\t\t\t\t\t},\n\t\t\t\t]).catch((e) => {\n\t\t\t\t\t// aborted\n\t\t\t\t\tconsole.trace(e); // eslint-disable-line\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tlet data = null;\n\t\t\t\tif (this.grid.df.get_data) {\n\t\t\t\t\tdata = this.grid.df.get_data();\n\t\t\t\t} else {\n\t\t\t\t\tdata = this.grid.df.data;\n\t\t\t\t}\n\n\t\t\t\tconst index = data.findIndex(d => d.name === me.doc.name);\n\n\t\t\t\tif (index > -1) {\n\t\t\t\t\t// mutate array directly,\n\t\t\t\t\t// else the object reference will be lost\n\t\t\t\t\tdata.splice(index, 1);\n\t\t\t\t}\n\t\t\t\t// remap idxs\n\t\t\t\tdata.forEach(function(d, i) {\n\t\t\t\t\td.idx = i+1;\n\t\t\t\t});\n\n\t\t\t\tthis.grid.refresh();\n\t\t\t}\n\t\t}\n\t}\n\tinsert(show, below, duplicate) {\n\t\tvar idx = this.doc.idx;\n\t\tvar copy_doc = duplicate ? this.doc : null;\n\t\tif(below) idx ++;\n\t\tthis.toggle_view(false);\n\t\tthis.grid.add_new_row(idx, null, show, copy_doc);\n\t}\n\tmove() {\n\t\t// promopt the user where they want to move this row\n\t\tvar me = this;\n\t\tfrappe.prompt({\n\t\t\tfieldname: 'move_to',\n\t\t\tlabel: __('Move to Row Number'),\n\t\t\tfieldtype: 'Int',\n\t\t\treqd: 1,\n\t\t\tdefault: this.doc.idx,\n\t\t}, function(values) {\n\t\t\tif (me.doc._sortable === false) {\n\t\t\t\tfrappe.msgprint(__('Cannot move row'));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// renumber and refresh\n\t\t\tlet data = me.grid.get_data();\n\t\t\tdata.move(me.doc.idx - 1, values.move_to - 1);\n\n\t\t\t// renum idx\n\t\t\tfor(let i=0; i'+this.row_check_html+' ').appendTo(this.row);\n\t\t\t}\n\t\t\tthis.row_index.find('span').html(this.doc.idx);\n\t\t}\n\n\t\tthis.row_display = $('
    '+\n\t\t\t+'
    ').appendTo(this.row)\n\t\t\t.html(frappe.render(this.grid.template, {\n\t\t\t\tdoc: this.doc ? frappe.get_format_helper(this.doc) : null,\n\t\t\t\tfrm: this.frm,\n\t\t\t\trow: this\n\t\t\t}));\n\t}\n\trender_row(refresh) {\n\t\tvar me = this;\n\t\tthis.set_row_index();\n\n\t\t// index (1, 2, 3 etc)\n\t\tif(!this.row_index) {\n\t\t\tvar txt = (this.doc ? this.doc.idx : \" \");\n\t\t\tthis.row_index = $(\n\t\t\t\t`
    \n\t\t\t\t\t${this.row_check_html}\n\t\t\t\t${txt}
    `)\n\t\t\t\t.appendTo(this.row)\n\t\t\t\t.on('click', function(e) {\n\t\t\t\t\tif(!$(e.target).hasClass('grid-row-check')) {\n\t\t\t\t\t\tme.toggle_view();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t} else {\n\t\t\tthis.row_index.find('span').html(txt);\n\t\t}\n\n\t\tthis.setup_columns();\n\t\tthis.add_open_form_button();\n\t\tthis.refresh_check();\n\n\t\tif(this.frm && this.doc) {\n\t\t\t$(this.frm.wrapper).trigger(\"grid-row-render\", [this]);\n\t\t}\n\t}\n\n\tmake_editable() {\n\t\tthis.row.toggleClass('editable-row', this.grid.is_editable());\n\t}\n\n\tis_too_small() {\n\t\treturn this.row.width() ? this.row.width() < 300 : false;\n\t}\n\n\tadd_open_form_button() {\n\t\tvar me = this;\n\t\tif(this.doc && !this.grid.df.in_place_edit) {\n\t\t\t// remove row\n\t\t\tif(!this.open_form_button) {\n\t\t\t\tthis.open_form_button = $('\\\n\t\t\t\t\t')\n\t\t\t\t\t.appendTo($('
    ').appendTo(this.row))\n\t\t\t\t\t.on('click', function() { me.toggle_view(); return false; });\n\n\t\t\t\tif(this.is_too_small()) {\n\t\t\t\t\t// narrow\n\t\t\t\t\tthis.open_form_button.css({'margin-right': '-2px'});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tsetup_columns() {\n\t\tthis.focus_set = false;\n\t\tthis.grid.setup_visible_columns();\n\n\t\tfor(var ci in this.grid.visible_columns) {\n\t\t\tvar df = this.grid.visible_columns[ci][0],\n\t\t\t\tcolsize = this.grid.visible_columns[ci][1],\n\t\t\t\ttxt = this.doc ?\n\t\t\t\t\tfrappe.format(this.doc[df.fieldname], df, null, this.doc) :\n\t\t\t\t\t__(df.label);\n\n\t\t\tif(this.doc && df.fieldtype === \"Select\") {\n\t\t\t\ttxt = __(txt);\n\t\t\t}\n\n\t\t\tif(!this.columns[df.fieldname]) {\n\t\t\t\tvar column = this.make_column(df, colsize, txt, ci);\n\t\t\t} else {\n\t\t\t\tvar column = this.columns[df.fieldname];\n\t\t\t\tthis.refresh_field(df.fieldname, txt);\n\t\t\t}\n\n\t\t\t// background color for cellz\n\t\t\tif(this.doc) {\n\t\t\t\tif(df.reqd && !txt) {\n\t\t\t\t\tcolumn.addClass('error');\n\t\t\t\t}\n\t\t\t\tif (column.is_invalid) {\n\t\t\t\t\tcolumn.addClass('invalid');\n\t\t\t\t} else if ((df.reqd || df.bold)) {\n\t\t\t\t\tcolumn.addClass('bold');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tmake_column(df, colsize, txt, ci) {\n\t\tlet me = this;\n\t\tvar add_class = (([\"Text\", \"Small Text\"].indexOf(df.fieldtype)!==-1) ?\n\t\t\t\" grid-overflow-no-ellipsis\" : \"\");\n\t\tadd_class += ([\"Int\", \"Currency\", \"Float\", \"Percent\"].indexOf(df.fieldtype)!==-1) ?\n\t\t\t\" text-right\": \"\";\n\t\tadd_class += ([\"Check\"].indexOf(df.fieldtype)!==-1) ?\n\t\t\t\" text-center\": \"\";\n\n\t\tvar $col = $('
    ')\n\t\t\t.attr(\"data-fieldname\", df.fieldname)\n\t\t\t.attr(\"data-fieldtype\", df.fieldtype)\n\t\t\t.data(\"df\", df)\n\t\t\t.appendTo(this.row)\n\t\t\t.on('click', function() {\n\t\t\t\tif(frappe.ui.form.editable_row===me) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tvar out = me.toggle_editable_row();\n\t\t\t\tvar col = this;\n\t\t\t\tsetTimeout(function() {\n\t\t\t\t\t$(col).find('input[type=\"Text\"]:first').focus();\n\t\t\t\t}, 500);\n\t\t\t\treturn out;\n\t\t\t});\n\n\t\t$col.field_area = $('
    ').appendTo($col).toggle(false);\n\t\t$col.static_area = $('
    ').appendTo($col).html(txt);\n\t\t$col.df = df;\n\t\t$col.column_index = ci;\n\n\t\tthis.columns[df.fieldname] = $col;\n\t\tthis.columns_list.push($col);\n\n\t\treturn $col;\n\t}\n\n\tactivate() {\n\t\tthis.toggle_editable_row(true);\n\t\treturn this;\n\t}\n\n\ttoggle_editable_row(show) {\n\t\tvar me = this;\n\t\t// show static for field based on\n\t\t// whether grid is editable\n\t\tif(this.grid.allow_on_grid_editing() && this.grid.is_editable() && this.doc && show !== false) {\n\n\t\t\t// disable other editable row\n\t\t\tif(frappe.ui.form.editable_row\n\t\t\t\t&& frappe.ui.form.editable_row !== this) {\n\t\t\t\tfrappe.ui.form.editable_row.toggle_editable_row(false);\n\t\t\t}\n\n\t\t\tthis.row.toggleClass('editable-row', true);\n\n\t\t\t// setup controls\n\t\t\tthis.columns_list.forEach(function(column) {\n\t\t\t\tme.make_control(column);\n\t\t\t\tcolumn.static_area.toggle(false);\n\t\t\t\tcolumn.field_area.toggle(true);\n\t\t\t});\n\n\t\t\tfrappe.ui.form.editable_row = this;\n\t\t\treturn false;\n\t\t} else {\n\t\t\tthis.row.toggleClass('editable-row', false);\n\n\t\t\tthis.columns_list.forEach((column, index) => {\n\n\t\t\t\tif(!this.frm) {\n\t\t\t\t\tlet df = this.grid.visible_columns[index][0]\n\n\t\t\t\t\tlet txt = this.doc ?\n\t\t\t\t\t\tfrappe.format(this.doc[df.fieldname], df, null, this.doc) :\n\t\t\t\t\t\t__(df.label);\n\n\t\t\t\t\tthis.refresh_field(df.fieldname, txt)\n\t\t\t\t}\n\n\t\t\t\tif (!column.df.hidden) {\n\t\t\t\t\tcolumn.static_area.toggle(true);\n\t\t\t\t}\n\n\t\t\t\tcolumn.field_area && column.field_area.toggle(false);\n\t\t\t});\n\t\t\tfrappe.ui.form.editable_row = null;\n\t\t}\n\t}\n\n\tmake_control(column) {\n\t\tif(column.field) return;\n\n\t\tvar me = this,\n\t\t\tparent = column.field_area,\n\t\t\tdf = column.df;\n\n\t\t// no text editor in grid\n\t\tif (df.fieldtype=='Text Editor') {\n\t\t\tdf = Object.assign({}, df);\n\t\t\tdf.fieldtype = 'Text';\n\t\t}\n\n\t\tvar field = frappe.ui.form.make_control({\n\t\t\tdf: df,\n\t\t\tparent: parent,\n\t\t\tonly_input: true,\n\t\t\twith_link_btn: true,\n\t\t\tdoc: this.doc,\n\t\t\tdoctype: this.doc.doctype,\n\t\t\tdocname: this.doc.name,\n\t\t\tfrm: this.grid.frm,\n\t\t\tgrid: this.grid,\n\t\t\tgrid_row: this,\n\t\t\tvalue: this.doc[df.fieldname]\n\t\t});\n\n\t\t// sync get_query\n\t\tfield.get_query = this.grid.get_field(df.fieldname).get_query;\n\n\t\tvar field_on_change_function = field.df.onchange;\n\t\tfield.df.onchange = function(e) {\n\t\t\tfield_on_change_function && field_on_change_function(e);\n\t\t\tme.grid.grid_rows[field.doc.idx - 1].refresh_field(field.df.fieldname);\n\t\t};\n\t\tfield.refresh();\n\t\tif(field.$input) {\n\t\t\tfield.$input\n\t\t\t\t.addClass('input-sm')\n\t\t\t\t.attr('data-col-idx', column.column_index)\n\t\t\t\t.attr('placeholder', __(df.label));\n\t\t\t// flag list input\n\t\t\tif (this.columns_list && this.columns_list.slice(-1)[0]===column) {\n\t\t\t\tfield.$input.attr('data-last-input', 1);\n\t\t\t}\n\t\t}\n\n\t\tthis.set_arrow_keys(field);\n\t\tcolumn.field = field;\n\t\tthis.on_grid_fields_dict[df.fieldname] = field;\n\t\tthis.on_grid_fields.push(field);\n\n\t}\n\n\tset_arrow_keys(field) {\n\t\tvar me = this;\n\t\tif (field.$input) {\n\t\t\tfield.$input.on('keydown', function(e) {\n\t\t\t\tvar { TAB, UP: UP_ARROW, DOWN: DOWN_ARROW } = frappe.ui.keyCode;\n\t\t\t\tif (!in_list([TAB, UP_ARROW, DOWN_ARROW], e.which)) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar values = me.grid.get_data();\n\t\t\t\tvar fieldname = $(this).attr('data-fieldname');\n\t\t\t\tvar fieldtype = $(this).attr('data-fieldtype');\n\n\t\t\t\tvar move_up_down = function(base) {\n\t\t\t\t\tif (in_list(['Text', 'Small Text', 'Code', 'Text Editor', 'HTML Editor'], fieldtype) && !e.altKey) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\tif (field.autocomplete_open) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\tbase.toggle_editable_row();\n\t\t\t\t\tvar input = base.columns[fieldname].field.$input;\n\t\t\t\t\tif (input) {\n\t\t\t\t\t\tinput.focus();\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t};\n\n\t\t\t\t// TAB\n\t\t\t\tif (e.which === TAB && !e.shiftKey) {\n\t\t\t\t\tvar last_column = me.wrapper.find(':input:enabled:last').get(0);\n\t\t\t\t\tvar is_last_column = $(this).attr('data-last-input') || last_column === this;\n\n\t\t\t\t\tif (is_last_column) {\n\t\t\t\t\t\t// last row\n\t\t\t\t\t\tif (me.doc.idx === values.length) {\n\t\t\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\t\t\tme.grid.add_new_row(null, null, true);\n\t\t\t\t\t\t\t\tme.grid.grid_rows[me.grid.grid_rows.length - 1].toggle_editable_row();\n\t\t\t\t\t\t\t\tme.grid.set_focus_on_row();\n\t\t\t\t\t\t\t}, 100);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// last column before last row\n\t\t\t\t\t\t\tme.grid.grid_rows[me.doc.idx].toggle_editable_row();\n\t\t\t\t\t\t\tme.grid.set_focus_on_row(me.doc.idx);\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (e.which === UP_ARROW) {\n\t\t\t\t\tif (me.doc.idx > 1) {\n\t\t\t\t\t\tvar prev = me.grid.grid_rows[me.doc.idx-2];\n\t\t\t\t\t\tif (move_up_down(prev)) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else if (e.which === DOWN_ARROW) {\n\t\t\t\t\tif (me.doc.idx < values.length) {\n\t\t\t\t\t\tvar next = me.grid.grid_rows[me.doc.idx];\n\t\t\t\t\t\tif (move_up_down(next)) {\n\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t});\n\t\t}\n\t}\n\n\tget_open_form() {\n\t\treturn frappe.ui.form.get_open_grid_form();\n\t}\n\n\ttoggle_view(show, callback) {\n\t\tif(!this.doc) {\n\t\t\treturn this;\n\t\t}\n\n\t\tif(this.frm) {\n\t\t\t// reload doc\n\t\t\tthis.doc = locals[this.doc.doctype][this.doc.name];\n\t\t}\n\n\t\t// hide other\n\t\tvar open_row = this.get_open_form();\n\n\t\tif (show===undefined) show = !!!open_row;\n\n\t\t// call blur\n\t\tdocument.activeElement && document.activeElement.blur();\n\n\t\tif(show && open_row) {\n\t\t\tif(open_row==this) {\n\t\t\t\t// already open, do nothing\n\t\t\t\tcallback && callback();\n\t\t\t\treturn;\n\t\t\t} else {\n\t\t\t\t// close other views\n\t\t\t\topen_row.toggle_view(false);\n\t\t\t}\n\t\t}\n\n\t\tif(show) {\n\t\t\tthis.show_form();\n\t\t} else {\n\t\t\tthis.hide_form();\n\t\t}\n\t\tcallback && callback();\n\n\t\treturn this;\n\t}\n\tshow_form() {\n\t\tif(!this.grid_form) {\n\t\t\tthis.grid_form = new GridRowForm({\n\t\t\t\trow: this\n\t\t\t});\n\t\t}\n\t\tthis.grid_form.render();\n\t\tthis.row.toggle(false);\n\t\t// this.form_panel.toggle(true);\n\n\t\tlet cannot_add_rows = this.grid.cannot_add_rows || (this.grid.df && this.grid.df.cannot_add_rows);\n\t\tthis.wrapper\n\t\t\t.find('.grid-insert-row-below, .grid-insert-row, .grid-duplicate-row, .grid-append-row')\n\t\t\t.toggle(!cannot_add_rows);\n\n\t\tfrappe.dom.freeze(\"\", \"dark\");\n\t\tif(cur_frm) cur_frm.cur_grid = this;\n\t\tthis.wrapper.addClass(\"grid-row-open\");\n\t\tif(!frappe.dom.is_element_in_viewport(this.wrapper)) {\n\t\t\tfrappe.utils.scroll_to(this.wrapper, true, 15);\n\t\t}\n\n\t\tif(this.frm) {\n\t\t\tthis.frm.script_manager.trigger(this.doc.parentfield + \"_on_form_rendered\");\n\t\t\tthis.frm.script_manager.trigger(\"form_render\", this.doc.doctype, this.doc.name);\n\t\t}\n\t}\n\thide_form() {\n\t\tfrappe.dom.unfreeze();\n\t\tthis.row.toggle(true);\n\t\tthis.refresh();\n\t\tif(cur_frm) cur_frm.cur_grid = null;\n\t\tthis.wrapper.removeClass(\"grid-row-open\");\n\t}\n\topen_prev() {\n\t\tif(this.grid.grid_rows[this.doc.idx-2]) {\n\t\t\tthis.grid.grid_rows[this.doc.idx-2].toggle_view(true);\n\t\t}\n\t}\n\topen_next() {\n\t\tif(this.grid.grid_rows[this.doc.idx]) {\n\t\t\tthis.grid.grid_rows[this.doc.idx].toggle_view(true);\n\t\t} else {\n\t\t\tthis.grid.add_new_row(null, null, true);\n\t\t}\n\t}\n\trefresh_field(fieldname, txt) {\n\t\tvar df = this.grid.get_docfield(fieldname) || undefined;\n\n\t\t// format values if no frm\n\t\tif(!df) {\n\t\t\tdf = this.grid.visible_columns.find((col) => {\n\t\t\t\treturn col[0].fieldname === fieldname;\n\t\t\t});\n\t\t\tif(df && this.doc) {\n\t\t\t\tvar txt = frappe.format(this.doc[fieldname], df[0],\n\t\t\t\t\tnull, this.doc);\n\t\t\t}\n\t\t}\n\n\t\tif(txt===undefined && this.frm) {\n\t\t\tvar txt = frappe.format(this.doc[fieldname], df,\n\t\t\t\tnull, this.frm.doc);\n\t\t}\n\n\t\t// reset static value\n\t\tvar column = this.columns[fieldname];\n\t\tif(column) {\n\t\t\tcolumn.static_area.html(txt || \"\");\n\t\t\tif(df && df.reqd) {\n\t\t\t\tcolumn.toggleClass('error', !!(txt===null || txt===''));\n\t\t\t}\n\t\t}\n\n\t\t// reset field value\n\t\tvar field = this.on_grid_fields_dict[fieldname];\n\t\tif(field) {\n\t\t\tfield.docname = this.doc.name;\n\t\t\tfield.refresh();\n\t\t}\n\n\t\t// in form\n\t\tif(this.grid_form) {\n\t\t\tthis.grid_form.refresh_field(fieldname);\n\t\t}\n\t}\n\tget_field(fieldname) {\n\t\tlet field = this.on_grid_fields_dict[fieldname];\n\t\tif (field) {\n\t\t\treturn field;\n\t\t} else if(this.grid_form) {\n\t\t\treturn this.grid_form.fields_dict[fieldname];\n\t\t} else {\n\t\t\tthrow `fieldname ${fieldname} not found`;\n\t\t}\n\t}\n\n\tget_visible_columns(blacklist=[]) {\n\t\tvar me = this;\n\t\tvar visible_columns = $.map(this.docfields, function(df) {\n\t\t\tvar visible = !df.hidden && df.in_list_view && me.grid.frm.get_perm(df.permlevel, \"read\")\n\t\t\t\t&& !in_list(frappe.model.layout_fields, df.fieldtype) && !in_list(blacklist, df.fieldname);\n\n\t\t\treturn visible ? df : null;\n\t\t});\n\t\treturn visible_columns;\n\t}\n\tset_field_property(fieldname, property, value) {\n\t\t// set a field property for open form / grid form\n\t\tvar me = this;\n\n\t\tvar set_property = function(field) {\n\t\t\tif(!field) return;\n\t\t\tfield.df[property] = value;\n\t\t\tfield.refresh();\n\t\t}\n\n\t\t// set property in grid form\n\t\tif(this.grid_form) {\n\t\t\tset_property(this.grid_form.fields_dict[fieldname]);\n\t\t\tthis.grid_form.layout && this.grid_form.layout.refresh_sections();\n\t\t}\n\n\t\t// set property in on grid fields\n\t\tset_property(this.on_grid_fields_dict[fieldname]);\n\t}\n\ttoggle_reqd(fieldname, reqd) {\n\t\tthis.set_field_property(fieldname, 'reqd', reqd ? 1 : 0);\n\t}\n\ttoggle_display(fieldname, show) {\n\t\tthis.set_field_property(fieldname, 'hidden', show ? 0 : 1);\n\t}\n\ttoggle_editable(fieldname, editable) {\n\t\tthis.set_field_property(fieldname, 'read_only', editable ? 0 : 1);\n\t}\n};\n","// Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors\n// MIT License. See license.txt\n\nimport GridRow from \"./grid_row\";\n\nfrappe.ui.form.get_open_grid_form = function() {\n\treturn $(\".grid-row-open\").data(\"grid_row\");\n}\n\nfrappe.ui.form.close_grid_form = function() {\n\tvar open_form = frappe.ui.form.get_open_grid_form();\n\topen_form && open_form.hide_form();\n\n\t// hide editable row too\n\tif(frappe.ui.form.editable_row) {\n\t\tfrappe.ui.form.editable_row.toggle_editable_row(false);\n\t}\n}\n\n\nexport default class Grid {\n\tconstructor(opts) {\n\t\t$.extend(this, opts);\n\t\tthis.fieldinfo = {};\n\t\tthis.doctype = this.df.options;\n\n\t\tif(this.doctype) {\n\t\t\tthis.meta = frappe.get_meta(this.doctype);\n\t\t}\n\t\tthis.fields_map = {};\n\t\tthis.template = null;\n\t\tthis.multiple_set = false;\n\t\tif(this.frm && this.frm.meta.__form_grid_templates\n\t\t\t&& this.frm.meta.__form_grid_templates[this.df.fieldname]) {\n\t\t\tthis.template = this.frm.meta.__form_grid_templates[this.df.fieldname];\n\t\t}\n\n\t\tthis.is_grid = true;\n\t}\n\n\tallow_on_grid_editing() {\n\t\tif(frappe.utils.is_xs()) {\n\t\t\treturn false;\n\t\t} else if(this.meta && this.meta.editable_grid || !this.meta) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\tmake() {\n\t\tvar me = this;\n\n\t\tlet template = `
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    ${__(\"No Data\")}
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    `;\n\n\t\tthis.wrapper = $(template)\n\t\t\t.appendTo(this.parent)\n\t\t\t.attr(\"data-fieldname\", this.df.fieldname);\n\n\t\tthis.form_grid = this.wrapper.find('.form-grid');\n\n\t\tthis.wrapper.find(\".grid-add-row\").click(function() {\n\t\t\tme.add_new_row(null, null, true);\n\t\t\tme.set_focus_on_row();\n\n\t\t\treturn false;\n\t\t});\n\n\t\tthis.custom_buttons = {};\n\t\tthis.grid_buttons = this.wrapper.find('.grid-buttons');\n\t\tthis.remove_rows_button = this.grid_buttons.find('.grid-remove-rows')\n\n\t\tthis.setup_allow_bulk_edit();\n\t\tthis.setup_check();\n\t\tif(this.df.on_setup) {\n\t\t\tthis.df.on_setup(this);\n\t\t}\n\t}\n\n\tsetup_check() {\n\t\tvar me = this;\n\n\t\tthis.wrapper.on('click', '.grid-row-check', function(e) {\n\t\t\tvar $check = $(this);\n\t\t\tif($check.parents('.grid-heading-row:first').length!==0) {\n\t\t\t\t// select all?\n\t\t\t\tvar checked = $check.prop('checked');\n\t\t\t\t$check.parents('.form-grid:first')\n\t\t\t\t\t.find('.grid-row-check').prop('checked', checked);\n\n\t\t\t\t// set all\n\t\t\t\t(me.grid_rows || []).forEach(function(row) { row.doc.__checked = checked ? 1 : 0; });\n\t\t\t} else {\n\t\t\t\tvar docname = $check.parents('.grid-row:first').attr('data-name');\n\t\t\t\tme.grid_rows_by_docname[docname].select($check.prop('checked'));\n\t\t\t}\n\t\t\tme.refresh_remove_rows_button();\n\t\t});\n\n\t\tthis.remove_rows_button.on('click', function() {\n\t\t\tvar dirty = false;\n\n\t\t\tlet tasks = [];\n\t\t\tme.get_selected_children().forEach((doc) => {\n\t\t\t\ttasks.push(() => {\n\t\t\t\t\tif (!me.frm) {\n\t\t\t\t\t\tme.df.data = me.get_data();\n\t\t\t\t\t\tme.df.data = me.df.data.filter((row)=> row.idx != doc.idx);\n\t\t\t\t\t}\n\t\t\t\t\tdirty = true;\n\t\t\t\t\treturn me.grid_rows_by_docname[doc.name] && me.grid_rows_by_docname[doc.name].remove();\n\t\t\t\t});\n\t\t\t\ttasks.push(() => frappe.timeout(0));\n\t\t\t});\n\n\t\t\tif (!me.frm) {\n\t\t\t\ttasks.push(() => {\n\t\t\t\t\t// reorder idx of df.data\n\t\t\t\t\tme.df.data.forEach((row, index) => row.idx = index + 1);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\ttasks.push(() => {\n\t\t\t\tif (dirty) me.refresh();\n\t\t\t});\n\n\t\t\tfrappe.run_serially(tasks);\n\t\t});\n\t}\n\tselect_row(name) {\n\t\tthis.grid_rows_by_docname[name].select();\n\t}\n\tremove_all() {\n\t\tthis.grid_rows.forEach(row => {\n\t\t\trow.remove();\n\t\t});\n\t}\n\trefresh_remove_rows_button() {\n\t\tthis.remove_rows_button.toggleClass('hidden',\n\t\t\tthis.wrapper.find('.grid-body .grid-row-check:checked:first').length ? false : true);\n\t}\n\tget_selected() {\n\t\treturn (this.grid_rows || []).map(function(row) { return row.doc.__checked ? row.doc.name : null; })\n\t\t\t.filter(function(d) { return d; });\n\t}\n\tget_selected_children() {\n\t\treturn (this.grid_rows || []).map(function(row) { return row.doc.__checked ? row.doc : null; })\n\t\t\t.filter(function(d) { return d; });\n\t}\n\tmake_head() {\n\t\t// labels\n\t\tif(!this.header_row) {\n\t\t\tthis.header_row = new GridRow({\n\t\t\t\tparent: $(this.parent).find(\".grid-heading-row\"),\n\t\t\t\tparent_df: this.df,\n\t\t\t\tdocfields: this.docfields,\n\t\t\t\tfrm: this.frm,\n\t\t\t\tgrid: this\n\t\t\t});\n\t\t}\n\t}\n\trefresh(force) {\n\t\t!this.wrapper && this.make();\n\t\tvar me = this,\n\t\t\t$rows = $(me.parent).find(\".rows\"),\n\t\t\tdata = this.get_data();\n\n\t\tthis.setup_fields();\n\n\t\tif(this.frm) {\n\t\t\tthis.display_status = frappe.perm.get_field_display_status(this.df, this.frm.doc,\n\t\t\t\tthis.perm);\n\t\t} else {\n\t\t\t// not in form\n\t\t\tthis.display_status = 'Write';\n\t\t}\n\n\t\tif(this.display_status === \"None\") return;\n\n\t\t// redraw\n\t\tvar _scroll_y = $(document).scrollTop();\n\t\tthis.make_head();\n\n\t\tif(!this.grid_rows) {\n\t\t\tthis.grid_rows = [];\n\t\t}\n\n\t\tthis.truncate_rows(data);\n\t\tthis.grid_rows_by_docname = {};\n\n\t\tfor(var ri=0; ri < data.length; ri++) {\n\t\t\tvar d = data[ri];\n\n\t\t\tif(d.idx===undefined) {\n\t\t\t\td.idx = ri + 1;\n\t\t\t}\n\n\t\t\tif(this.grid_rows[ri]) {\n\t\t\t\tvar grid_row = this.grid_rows[ri];\n\t\t\t\tgrid_row.doc = d;\n\t\t\t\tgrid_row.refresh();\n\t\t\t} else {\n\t\t\t\tvar grid_row = new GridRow({\n\t\t\t\t\tparent: $rows,\n\t\t\t\t\tparent_df: this.df,\n\t\t\t\t\tdocfields: this.docfields,\n\t\t\t\t\tdoc: d,\n\t\t\t\t\tfrm: this.frm,\n\t\t\t\t\tgrid: this\n\t\t\t\t});\n\t\t\t\tthis.grid_rows.push(grid_row);\n\t\t\t}\n\n\t\t\tthis.grid_rows_by_docname[d.name] = grid_row;\n\t\t}\n\n\t\tthis.wrapper.find(\".grid-empty\").toggleClass(\"hidden\", Boolean(data.length));\n\n\t\t// toolbar\n\t\tthis.setup_toolbar();\n\t\tthis.toggle_checkboxes(this.display_status !== 'Read');\n\n\t\t// sortable\n\t\tif(this.frm && this.is_sortable() && !this.sortable_setup_done) {\n\t\t\tthis.make_sortable($rows);\n\t\t\tthis.sortable_setup_done = true;\n\t\t}\n\n\t\tthis.last_display_status = this.display_status;\n\t\tthis.last_docname = this.frm && this.frm.docname;\n\n\t\t// frappe.utils.scroll_to(_scroll_y);\n\n\t\t// red if mandatory\n\t\tthis.form_grid.toggleClass('error', !!(this.df.reqd && !(data && data.length)));\n\n\t\tthis.refresh_remove_rows_button();\n\n\t\tthis.wrapper.trigger('change');\n\t}\n\tsetup_toolbar() {\n\t\tif(this.is_editable()) {\n\t\t\tthis.wrapper.find(\".grid-footer\").toggle(true);\n\n\t\t\t// show, hide buttons to add rows\n\t\t\tif(this.cannot_add_rows || (this.df && this.df.cannot_add_rows)) {\n\t\t\t\t// add 'hidden' to buttons\n\t\t\t\tthis.wrapper.find(\".grid-add-row, .grid-add-multiple-rows\")\n\t\t\t\t\t.addClass('hidden');\n\t\t\t} else {\n\t\t\t\t// show buttons\n\t\t\t\tthis.wrapper.find(\".grid-add-row\").removeClass('hidden');\n\n\t\t\t\tif(this.multiple_set) {\n\t\t\t\t\tthis.wrapper.find(\".grid-add-multiple-rows\").removeClass('hidden');\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\t\t\tthis.wrapper.find(\".grid-footer\").toggle(false);\n\t\t}\n\n\t\tthis.wrapper.find('.grid-add-row, .grid-add-multiple-rows').toggle(this.is_editable());\n\n\t}\n\ttruncate_rows(data) {\n\t\tif(this.grid_rows.length > data.length) {\n\t\t\t// remove extra rows\n\t\t\tfor(var i=data.length; i < this.grid_rows.length; i++) {\n\t\t\t\tvar grid_row = this.grid_rows[i];\n\t\t\t\tgrid_row.wrapper.remove();\n\t\t\t}\n\t\t\tthis.grid_rows.splice(data.length);\n\t\t}\n\t}\n\tsetup_fields() {\n\t\tvar me = this;\n\t\t// reset docfield\n\t\tif (this.frm && this.frm.docname) {\n\t\t\t// use doc specific docfield object\n\t\t\tthis.df = frappe.meta.get_docfield(this.frm.doctype, this.df.fieldname,\n\t\t\t\tthis.frm.docname);\n\t\t} else {\n\t\t\t// use non-doc specific docfield\n\t\t\tif(this.df.options) {\n\t\t\t\tthis.df = frappe.meta.get_docfield(this.df.options, this.df.fieldname) || this.df || null;\n\t\t\t}\n\t\t}\n\n\t\tif(this.doctype && this.frm) {\n\t\t\tthis.docfields = frappe.meta.get_docfields(this.doctype, this.frm.docname);\n\t\t} else {\n\t\t\t// fields given in docfield\n\t\t\tthis.docfields = this.df.fields;\n\t\t}\n\n\t\tthis.docfields.forEach(function(df) {\n\t\t\tme.fields_map[df.fieldname] = df;\n\t\t});\n\t}\n\trefresh_row(docname) {\n\t\tthis.grid_rows_by_docname[docname] &&\n\t\t\tthis.grid_rows_by_docname[docname].refresh();\n\t}\n\tmake_sortable($rows) {\n\t\tnew Sortable($rows.get(0), {\n\t\t\tgroup: {name: this.df.fieldname},\n\t\t\thandle: '.sortable-handle',\n\t\t\tdraggable: '.grid-row',\n\t\t\tanimation: 100,\n\t\t\tfilter: 'li, a',\n\t\t\tonMove: (event) => {\n\t\t\t\t// don't move if editable\n\t\t\t\tif (!this.is_editable()) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// prevent drag behaviour if _sortable property is \"false\"\n\t\t\t\tlet idx = $(event.dragged).closest('.grid-row').attr('data-idx');\n\t\t\t\tlet doc = this.get_data()[idx - 1];\n\t\t\t\tif (doc && doc._sortable === false) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonUpdate: (event) => {\n\t\t\t\tlet idx = $(event.item).closest('.grid-row').attr('data-idx');\n\t\t\t\tlet doc = this.get_data()[idx - 1];\n\t\t\t\tthis.renumber_based_on_dom();\n\t\t\t\tthis.frm.script_manager.trigger(this.df.fieldname + \"_move\", this.df.options, doc.name);\n\t\t\t\tthis.refresh();\n\t\t\t\tthis.frm.dirty();\n\t\t\t}\n\t\t});\n\n\t\t$(this.frm.wrapper).trigger(\"grid-make-sortable\", [this.frm]);\n\t}\n\tget_data() {\n\t\tvar data = this.frm ?\n\t\t\tthis.frm.doc[this.df.fieldname] || []\n\t\t\t: this.df.data || this.get_modal_data();\n\t\tdata.sort(function(a, b) { return a.idx - b.idx});\n\t\treturn data;\n\t}\n\tget_modal_data() {\n\t\treturn this.df.get_data ? this.df.get_data().filter(data => {\n\t\t\tif (!this.deleted_docs || !in_list(this.deleted_docs, data.name)) {\n\t\t\t\treturn data;\n\t\t\t}\n\t\t}) : [];\n\t}\n\tset_column_disp(fieldname, show) {\n\t\tif($.isArray(fieldname)) {\n\t\t\tvar me = this;\n\t\t\tfor(var i=0, l=fieldname.length; i 11)\n\t\t\t\t\treturn false;\n\t\t\t\tthis.visible_columns.push([df, df.colsize]);\n\t\t\t}\n\t\t}\n\n\t\t// redistribute if total-col size is less than 12\n\t\tvar passes = 0;\n\t\twhile(total_colsize < 11 && passes < 12) {\n\t\t\tfor(var i in this.visible_columns) {\n\t\t\t\tvar df = this.visible_columns[i][0];\n\t\t\t\tvar colsize = this.visible_columns[i][1];\n\t\t\t\tif(colsize > 1 && colsize < 11\n\t\t\t\t\t&& !in_list(frappe.model.std_fields_list, df.fieldname)) {\n\n\t\t\t\t\tif (passes < 3 && [\"Int\", \"Currency\", \"Float\", \"Check\", \"Percent\"].indexOf(df.fieldtype)!==-1) {\n\t\t\t\t\t\t// don't increase col size of these fields in first 3 passes\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tthis.visible_columns[i][1] += 1;\n\t\t\t\t\ttotal_colsize++;\n\t\t\t\t}\n\n\t\t\t\tif(total_colsize > 10)\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t\tpasses++;\n\t\t}\n\t}\n\n\n\tis_editable() {\n\t\treturn this.display_status==\"Write\" && !this.static_rows;\n\t}\n\tis_sortable() {\n\t\treturn this.sortable_status || this.is_editable();\n\t}\n\tonly_sortable(status) {\n\t\tif(status===undefined ? true : status) {\n\t\t\tthis.sortable_status = true;\n\t\t\tthis.static_rows = true;\n\t\t}\n\t}\n\tset_multiple_add(link, qty) {\n\t\tif(this.multiple_set) return;\n\t\tvar me = this;\n\t\tvar link_field = frappe.meta.get_docfield(this.df.options, link);\n\t\tvar btn = $(this.wrapper).find(\".grid-add-multiple-rows\");\n\n\t\t// show button\n\t\tbtn.removeClass('hidden');\n\n\t\t// open link selector on click\n\t\tbtn.on(\"click\", function() {\n\t\t\tnew frappe.ui.form.LinkSelector({\n\t\t\t\tdoctype: link_field.options,\n\t\t\t\tfieldname: link,\n\t\t\t\tqty_fieldname: qty,\n\t\t\t\ttarget: me,\n\t\t\t\ttxt: \"\"\n\t\t\t});\n\t\t\treturn false;\n\t\t});\n\t\tthis.multiple_set = true;\n\t}\n\tsetup_allow_bulk_edit() {\n\t\tvar me = this;\n\t\tif(this.frm && this.frm.get_docfield(this.df.fieldname).allow_bulk_edit) {\n\t\t\t// download\n\t\t\tme.setup_download();\n\n\t\t\t// upload\n\t\t\tfrappe.flags.no_socketio = true;\n\t\t\t$(this.wrapper).find(\".grid-upload\").removeClass('hidden').on(\"click\", function() {\n\t\t\t\tnew frappe.ui.FileUploader({\n\t\t\t\t\tas_dataurl: true,\n\t\t\t\t\tallow_multiple: false,\n\t\t\t\t\ton_success(file) {\n\t\t\t\t\t\tvar data = frappe.utils.csv_to_array(frappe.utils.get_decoded_string(file.dataurl));\n\t\t\t\t\t\t// row #2 contains fieldnames;\n\t\t\t\t\t\tvar fieldnames = data[2];\n\n\t\t\t\t\t\tme.frm.clear_table(me.df.fieldname);\n\t\t\t\t\t\t$.each(data, function(i, row) {\n\t\t\t\t\t\t\tif(i > 6) {\n\t\t\t\t\t\t\t\tvar blank_row = true;\n\t\t\t\t\t\t\t\t$.each(row, function(ci, value) {\n\t\t\t\t\t\t\t\t\tif(value) {\n\t\t\t\t\t\t\t\t\t\tblank_row = false;\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\n\t\t\t\t\t\t\t\tif(!blank_row) {\n\t\t\t\t\t\t\t\t\tvar d = me.frm.add_child(me.df.fieldname);\n\t\t\t\t\t\t\t\t\t$.each(row, function(ci, value) {\n\t\t\t\t\t\t\t\t\t\tvar fieldname = fieldnames[ci];\n\t\t\t\t\t\t\t\t\t\tvar df = frappe.meta.get_docfield(me.df.options, fieldname);\n\n\t\t\t\t\t\t\t\t\t\t// convert date formatting\n\t\t\t\t\t\t\t\t\t\tif(df.fieldtype===\"Date\" && value) {\n\t\t\t\t\t\t\t\t\t\t\tvalue = frappe.datetime.user_to_str(value);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif(df.fieldtype===\"Int\" || df.fieldtype===\"Check\") {\n\t\t\t\t\t\t\t\t\t\t\tvalue = cint(value);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\td[fieldnames[ci]] = value;\n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\tme.frm.refresh_field(me.df.fieldname);\n\t\t\t\t\t\tfrappe.msgprint({message:__('Table updated'), title:__('Success'), indicator:'green'})\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn false;\n\t\t\t});\n\t\t}\n\t}\n\tsetup_download() {\n\t\tvar me = this;\n\t\tlet title = me.df.label || frappe.model.unscrub(me.df.fieldname);\n\t\t$(this.wrapper).find(\".grid-download\").removeClass('hidden').on(\"click\", function() {\n\t\t\tvar data = [];\n\t\t\tvar docfields = [];\n\t\t\tdata.push([__(\"Bulk Edit {0}\", [title])]);\n\t\t\tdata.push([]);\n\t\t\tdata.push([]);\n\t\t\tdata.push([]);\n\t\t\tdata.push([__(\"The CSV format is case sensitive\")]);\n\t\t\tdata.push([__(\"Do not edit headers which are preset in the template\")]);\n\t\t\tdata.push([\"------\"]);\n\t\t\t$.each(frappe.get_meta(me.df.options).fields, function(i, df) {\n\t\t\t\t// don't include the read-only field in the template\n\t\t\t\tif(frappe.model.is_value_type(df.fieldtype)) {\n\t\t\t\t\tdata[1].push(df.label);\n\t\t\t\t\tdata[2].push(df.fieldname);\n\t\t\t\t\tlet description = (df.description || \"\") + ' ';\n\t\t\t\t\tif (df.fieldtype === \"Date\") {\n\t\t\t\t\t\tdescription += frappe.boot.sysdefaults.date_format;\n\t\t\t\t\t}\n\t\t\t\t\tdata[3].push(description);\n\t\t\t\t\tdocfields.push(df);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// add data\n\t\t\t$.each(me.frm.doc[me.df.fieldname] || [], function(i, d) {\n\t\t\t\tvar row = [];\n\t\t\t\t$.each(data[2], function(i, fieldname) {\n\t\t\t\t\tvar value = d[fieldname];\n\n\t\t\t\t\t// format date\n\t\t\t\t\tif(docfields[i].fieldtype===\"Date\" && value) {\n\t\t\t\t\t\tvalue = frappe.datetime.str_to_user(value);\n\t\t\t\t\t}\n\n\t\t\t\t\trow.push(value || \"\");\n\t\t\t\t});\n\t\t\t\tdata.push(row);\n\t\t\t});\n\n\t\t\tfrappe.tools.downloadify(data, null, title);\n\t\t\treturn false;\n\t\t});\n\t}\n\tadd_custom_button(label, click) {\n\t\t// add / unhide a custom button\n\t\tvar btn = this.custom_buttons[label];\n\t\tif(!btn) {\n\t\t\tbtn = $('')\n\t\t\t\t.css('margin-right', '4px')\n\t\t\t\t.prependTo(this.grid_buttons)\n\t\t\t\t.on('click', click);\n\t\t\tthis.custom_buttons[label] = btn;\n\t\t} else {\n\t\t\tbtn.removeClass('hidden');\n\t\t}\n\t}\n\tclear_custom_buttons() {\n\t\t// hide all custom buttons\n\t\tthis.grid_buttons.find('.btn-custom').addClass('hidden');\n\t}\n}\n","import Grid from '../grid';\n\nfrappe.ui.form.ControlTable = frappe.ui.form.Control.extend({\n\tmake: function() {\n\t\tthis._super();\n\n\t\t// add title if prev field is not column / section heading or html\n\t\tthis.grid = new Grid({\n\t\t\tfrm: this.frm,\n\t\t\tdf: this.df,\n\t\t\tperm: this.perm || (this.frm && this.frm.perm) || this.df.perm,\n\t\t\tparent: this.wrapper\n\t\t});\n\t\tif(this.frm) {\n\t\t\tthis.frm.grids[this.frm.grids.length] = this;\n\t\t}\n\n\t\t// description\n\t\tif(this.df.description) {\n\t\t\t$('

    ' + __(this.df.description) + '

    ')\n\t\t\t\t.appendTo(this.wrapper);\n\t\t}\n\t\tthis.$wrapper.on('paste',':text', function(e) {\n\t\t\tvar cur_table_field =$(e.target).closest('div [data-fieldtype=\"Table\"]').data('fieldname');\n\t\t\tvar cur_field = $(e.target).data('fieldname');\n\t\t\tvar cur_grid= cur_frm.get_field(cur_table_field).grid;\n\t\t\tvar cur_grid_rows = cur_grid.grid_rows;\n\t\t\tvar cur_doctype = cur_grid.doctype;\n\t\t\tvar cur_row_docname =$(e.target).closest('div .grid-row').data('name');\n\t\t\tvar row_idx = locals[cur_doctype][cur_row_docname].idx;\n\t\t\tvar clipboardData, pastedData;\n\t\t\t// Get pasted data via clipboard API\n\t\t\tclipboardData = e.clipboardData || window.clipboardData || e.originalEvent.clipboardData;\n\t\t\tpastedData = clipboardData.getData('Text');\n\t\t\tif (!pastedData) return;\n\t\t\tvar data = frappe.utils.csv_to_array(pastedData,'\\t');\n\t\t\tif (data.length === 1 & data[0].length === 1) return;\n\t\t\tif (data.length > 100){\n\t\t\t\tdata = data.slice(0, 100);\n\t\t\t\tfrappe.msgprint(__('For performance, only the first 100 rows were processed.'));\n\t\t\t}\n\t\t\tvar fieldnames = [];\n\t\t\tvar get_field = function(name_or_label){\n\t\t\t\tvar fieldname;\n\t\t\t\t$.each(cur_grid.meta.fields,(ci,field)=>{\n\t\t\t\t\tname_or_label = name_or_label.toLowerCase()\n\t\t\t\t\tif (field.fieldname.toLowerCase() === name_or_label ||\n\t\t\t\t\t\t(field.label && field.label.toLowerCase() === name_or_label)){\n\t\t\t\t\t\t fieldname = field.fieldname;\n\t\t\t\t\t\t return false;\n\t\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn fieldname;\n\t\t\t}\n\t\t\tif (get_field(data[0][0])){ // for raw data with column header\n\t\t\t\t$.each(data[0], (ci, column)=>{fieldnames.push(get_field(column));});\n\t\t\t\tdata.shift();\n\t\t\t}\n\t\t\telse{ // no column header, map to the existing visible columns\n\t\t\t\tvar visible_columns = cur_grid_rows[0].get_visible_columns();\n\t\t\t\tvar find;\n\t\t\t\t$.each(visible_columns, (ci, column)=>{\n\t\t\t\t\tif (column.fieldname === cur_field) find = true;\n\t\t\t\t\tfind && fieldnames.push(column.fieldname);\n\t\t\t\t})\n\t\t\t}\n\t\t\t$.each(data, function(i, row) {\n\t\t\t\tvar blank_row = true;\n\t\t\t\t$.each(row, function(ci, value) {\n\t\t\t\t\tif(value) {\n\t\t\t\t\t\tblank_row = false;\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(!blank_row) {\n\t\t\t\t\tif (row_idx > cur_frm.doc[cur_table_field].length){\n\t\t\t\t\t\tcur_grid.add_new_row();\n\t\t\t\t\t}\n\t\t\t\t\tvar cur_row = cur_grid_rows[row_idx - 1];\n\t\t\t\t\trow_idx ++;\n\t\t\t\t\tvar row_name = cur_row.doc.name;\n\t\t\t\t\t$.each(row, function(ci, value) {\n\t\t\t\t\t\tif (fieldnames[ci]) frappe.model.set_value(cur_doctype, row_name, fieldnames[ci], value);\n\t\t\t\t\t});\n\t\t\t\t\tfrappe.show_progress(__('Processing'), i, data.length);\n\t\t\t\t}\n\t\t\t});\n\t\t\tfrappe.hide_progress();\n\t\t\treturn false; // Prevent the default handler from running.\n\t\t});\n\t},\n\trefresh_input: function() {\n\t\tthis.grid.refresh();\n\t},\n\tget_value: function() {\n\t\tif(this.grid) {\n\t\t\treturn this.grid.get_data();\n\t\t}\n\t},\n\tset_input: function( ) {\n\t\t//\n\t},\n\tvalidate: function() {\n\t\treturn this.get_value();\n\t},\n\tcheck_all_rows() {\n\t\tthis.$wrapper.find('.grid-row-check')[0].click();\n\t}\n});\n","frappe.ui.form.ControlColor = frappe.ui.form.ControlData.extend({\n\tmake_input: function () {\n\t\tthis._super();\n\t\tthis.colors = [\n\t\t\t\"#ffc4c4\", \"#ff8989\", \"#ff4d4d\", \"#a83333\",\n\t\t\t\"#ffe8cd\", \"#ffd19c\", \"#ffb868\", \"#a87945\",\n\t\t\t\"#ffd2c2\", \"#ffa685\", \"#ff7846\", \"#a85b5b\",\n\t\t\t\"#ffd7d7\", \"#ffb1b1\", \"#ff8989\", \"#a84f2e\",\n\t\t\t\"#fffacd\", \"#fff168\", \"#fff69c\", \"#a89f45\",\n\t\t\t\"#ebf8cc\", \"#d9f399\", \"#c5ec63\", \"#7b933d\",\n\t\t\t\"#cef6d1\", \"#9deca2\", \"#6be273\", \"#428b46\",\n\t\t\t\"#d2f8ed\", \"#a4f3dd\", \"#77ecca\", \"#49937e\",\n\t\t\t\"#d2f1ff\", \"#a6e4ff\", \"#78d6ff\", \"#4f8ea8\",\n\t\t\t\"#d2d2ff\", \"#a3a3ff\", \"#7575ff\", \"#4d4da8\",\n\t\t\t\"#dac7ff\", \"#b592ff\", \"#8e58ff\", \"#5e3aa8\",\n\t\t\t\"#f8d4f8\", \"#f3aaf0\", \"#ec7dea\", \"#934f92\"\n\t\t];\n\t\tthis.make_color_input();\n\t},\n\tmake_color_input: function () {\n\t\tthis.$wrapper\n\t\t\t.find('.control-input-wrapper')\n\t\t\t.append(`
    \n\t\t\t\t
    \n\t\t\t
    `);\n\t\tthis.$color_pallete = this.$wrapper.find('.color-picker-pallete');\n\n\t\tvar color_html = this.colors.map(this.get_color_box).join(\"\");\n\t\tthis.$color_pallete.append(color_html);\n\t\tthis.$color_pallete.hide();\n\t\tthis.bind_events();\n\t},\n\tget_color_box: function (hex) {\n\t\treturn `
    `;\n\t},\n\tset_formatted_input: function(value) {\n\t\tthis._super(value);\n\n\t\tif (!value) value = '#FFFFFF';\n\t\tconst contrast = frappe.ui.color.get_contrast_color(value);\n\n\t\tthis.$input.css({\n\t\t\t\"background-color\": value, \"color\": contrast\n\t\t});\n\t},\n\tbind_events: function () {\n\t\tvar mousedown_happened = false;\n\t\tthis.$wrapper.on(\"click\", \".color-box\", (e) => {\n\t\t\tmousedown_happened = false;\n\n\t\t\tvar color_val = $(e.target).data(\"color\");\n\t\t\tthis.set_value(color_val);\n\t\t\t// set focus so that we can blur it later\n\t\t\tthis.set_focus();\n\t\t});\n\n\t\tthis.$wrapper.find(\".color-box\").mousedown(() => {\n\t\t\tmousedown_happened = true;\n\t\t});\n\n\t\tthis.$input.on(\"focus\", () => {\n\t\t\tthis.$color_pallete.show();\n\t\t});\n\t\tthis.$input.on(\"blur\", () => {\n\t\t\tif (mousedown_happened) {\n\t\t\t\t// cancel the blur event\n\t\t\t\tmousedown_happened = false;\n\t\t\t} else {\n\t\t\t\t// blur event is okay\n\t\t\t\t$(this.$color_pallete).hide();\n\t\t\t}\n\t\t});\n\t},\n\tvalidate: function (value) {\n\t\tif(value === '') {\n\t\t\treturn '';\n\t\t}\n\t\tvar is_valid = /^#[0-9A-F]{6}$/i.test(value);\n\t\tif(is_valid) {\n\t\t\treturn value;\n\t\t}\n\t\treturn null;\n\t}\n});\n","frappe.ui.form.ControlSignature = frappe.ui.form.ControlData.extend({\n\tsaving: false,\n\tloading: false,\n\tmake: function() {\n\t\tvar me = this;\n\t\tthis._super();\n\n\t\t// make jSignature field\n\t\tthis.body = $('
    ').appendTo(me.wrapper);\n\n\t\tif (this.body.is(':visible')) {\n\t\t\tthis.make_pad();\n\t\t} else {\n\t\t\t$(document).on('frappe.ui.Dialog:shown', () => {\n\t\t\t\tthis.make_pad();\n\t\t\t});\n\t\t}\n\n\t\tthis.img_wrapper = $(`
    \n\t\t\t
    \n\t\t\t\t\n\t\t\t
    `)\n\t\t\t.appendTo(this.wrapper);\n\t\tthis.img = $(\"\")\n\t\t\t.appendTo(this.img_wrapper).toggle(false);\n\n\t},\n\tmake_pad: function() {\n\t\tlet width = this.body.width();\n\t\tif (width > 0 && !this.$pad) {\n\t\t\tthis.$pad = this.body.jSignature({\n\t\t\t\theight: 300,\n\t\t\t\twidth: this.body.width(),\n\t\t\t\tlineWidth: 3\n\t\t\t}).on('change',\n\t\t\t\tthis.on_save_sign.bind(this));\n\t\t\tthis.load_pad();\n\t\t\tthis.$reset_button_wrapper = $(`
    \n\t\t\t\t\n\t\t\t\t`)\n\t\t\t\t.appendTo(this.$pad)\n\t\t\t\t.on(\"click\", '.signature-reset', () => {\n\t\t\t\t\tthis.on_reset_sign();\n\t\t\t\t\treturn false;\n\t\t\t\t});\n\n\t\t}\n\t},\n\trefresh_input: function(e) {\n\t\t// prevent to load the second time\n\t\tthis.make_pad();\n\t\tthis.$wrapper.find(\".control-input\").toggle(false);\n\t\tthis.set_editable(this.get_status()==\"Write\");\n\t\tthis.load_pad();\n\t\tif(this.get_status()==\"Read\") {\n\t\t\t$(this.disp_area).toggle(false);\n\t\t}\n\t},\n\tset_image: function(value) {\n\t\tif(value) {\n\t\t\t$(this.img_wrapper).find(\".missing-image\").toggle(false);\n\t\t\tthis.img.attr(\"src\", value).toggle(true);\n\t\t} else {\n\t\t\t$(this.img_wrapper).find(\".missing-image\").toggle(true);\n\t\t\tthis.img.toggle(false);\n\t\t}\n\t},\n\tload_pad: function() {\n\t\t// make sure not triggered during saving\n\t\tif (this.saving) return;\n\t\t// get value\n\t\tvar value = this.get_value();\n\t\t// import data for pad\n\t\tif (this.$pad) {\n\t\t\tthis.loading = true;\n\t\t\t// reset in all cases\n\t\t\tthis.$pad.jSignature('reset');\n\t\t\tif (value) {\n\t\t\t\t// load the image to find out the size, because scaling will affect\n\t\t\t\t// stroke width\n\t\t\t\ttry {\n\t\t\t\t\tthis.$pad.jSignature('setData', value);\n\t\t\t\t\tthis.set_image(value);\n\t\t\t\t}\n\t\t\t\tcatch (e){\n\t\t\t\t\tconsole.log(\"Cannot set data for signature\", value, e);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.loading = false;\n\t\t}\n\t},\n\tset_editable: function(editable) {\n\t\tthis.$pad && this.$pad.toggle(editable);\n\t\tthis.img_wrapper.toggle(!editable);\n\t\tif (this.$reset_button_wrapper) {\n\t\t\tthis.$reset_button_wrapper.toggle(editable);\n\t\t\tif (editable) {\n\t\t\t\tthis.$reset_button_wrapper.addClass('editing');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.$reset_button_wrapper.removeClass('editing');\n\t\t\t}\n\t\t}\n\t},\n\tset_my_value: function(value) {\n\t\tif (this.saving || this.loading) return;\n\t\tthis.saving = true;\n\t\tthis.set_value(value);\n\t\tthis.saving = false;\n\t},\n\tget_value: function() {\n\t\treturn this.value ? this.value: this.get_model_value();\n\t},\n\t// reset signature canvas\n\ton_reset_sign: function() {\n\t\tthis.$pad.jSignature(\"reset\");\n\t\tthis.set_my_value(\"\");\n\t},\n\t// save signature value to model and display\n\ton_save_sign: function() {\n\t\tif (this.saving || this.loading) return;\n\t\tvar base64_img = this.$pad.jSignature(\"getData\");\n\t\tthis.set_my_value(base64_img);\n\t\tthis.set_image(this.get_value());\n\t}\n});\n","frappe.ui.form.ControlPassword = frappe.ui.form.ControlData.extend({\n\tinput_type: \"password\",\n\tmake: function() {\n\t\tthis._super();\n\t},\n\tmake_input: function() {\n\t\tvar me = this;\n\t\tthis._super();\n\t\tthis.$input.parent().append($(''));\n\t\tthis.$wrapper.find('.control-input-wrapper').append($('

    '));\n\n\t\tthis.indicator = this.$wrapper.find('.password-strength-indicator');\n\t\tthis.message = this.$wrapper.find('.help-box');\n\n\t\tthis.$input.on('keyup', () => {\n\t\t\tclearTimeout(this.check_password_timeout);\n\t\t\tthis.check_password_timeout = setTimeout (() => {\n\t\t\t\tme.get_password_strength(me.$input.val());\n\t\t\t}, 500);\n\t\t});\n\t},\n\tget_password_strength: function(value) {\n\t\tvar me = this;\n\t\tfrappe.call({\n\t\t\ttype: 'POST',\n\t\t\tmethod: 'frappe.core.doctype.user.user.test_password_strength',\n\t\t\targs: {\n\t\t\t\tnew_password: value || ''\n\t\t\t},\n\t\t\tcallback: function(r) {\n\t\t\t\tif (r.message && r.message.entropy) {\n\t\t\t\t\tvar score = r.message.score,\n\t\t\t\t\t\tfeedback = r.message.feedback;\n\n\t\t\t\t\tfeedback.crack_time_display = r.message.crack_time_display;\n\n\t\t\t\t\tvar indicators = ['grey', 'red', 'orange', 'yellow', 'green'];\n\t\t\t\t\tme.set_strength_indicator(indicators[score]);\n\n\t\t\t\t}\n\t\t\t}\n\n\t\t});\n\t},\n\tset_strength_indicator: function(color) {\n\t\tvar message = __(\"Include symbols, numbers and capital letters in the password\");\n\t\tthis.indicator.removeClass().addClass('password-strength-indicator indicator ' + color);\n\t\tthis.message.html(message).removeClass('hidden');\n\t}\n});\n","frappe.ui.form.ControlReadOnly = frappe.ui.form.ControlData.extend({\n\tget_status: function(explain) {\n\t\tvar status = this._super(explain);\n\t\tif(status===\"Write\")\n\t\t\tstatus = \"Read\";\n\t\treturn;\n\t},\n});\n","frappe.ui.form.ControlButton = frappe.ui.form.ControlData.extend({\n\tcan_write() {\n\t\t// should be always true in case of button\n\t\treturn true;\n\t},\n\tmake_input: function() {\n\t\tvar me = this;\n\t\tthis.$input = $('`)\n\t\t\t.click(e => {\n\t\t\t\tif (!this.showing_preview) {\n\t\t\t\t\tthis.update_preview();\n\t\t\t\t}\n\n\t\t\t\tconst $btn = $(e.target);\n\t\t\t\tthis.markdown_preview.toggle(!this.showing_preview);\n\t\t\t\tthis.ace_editor_target.toggle(this.showing_preview);\n\n\t\t\t\tthis.showing_preview = !this.showing_preview;\n\n\t\t\t\t$btn.text(this.showing_preview ? __('Edit') : __('Preview'));\n\t\t\t});\n\t\tthis.markdown_container.prepend(this.preview_toggle_btn);\n\n\t\tthis.markdown_preview = $(`
    `).hide();\n\t\tthis.markdown_container.append(this.markdown_preview);\n\t},\n\n\tset_language() {\n\t\tthis.df.options = 'Markdown';\n\t\tthis._super();\n\t},\n\n\tupdate_preview() {\n\t\tconst value = this.get_value() || \"\";\n\t\tthis.markdown_preview.html(frappe.markdown(value));\n\t},\n\n\tset_formatted_input(value) {\n\t\tthis._super(value)\n\t\t\t.then(() => {\n\t\t\t\tthis.update_preview();\n\t\t\t});\n\t}\n});\n","frappe.ui.form.ControlHTMLEditor = frappe.ui.form.ControlMarkdownEditor.extend({\n\teditor_class: 'html',\n\tset_language() {\n\t\tthis.df.options = 'HTML';\n\t\tthis._super();\n\t},\n\tupdate_preview() {\n\t\tif (!this.markdown_preview) return;\n\t\tlet value = this.get_value() || '';\n\t\tvalue = frappe.dom.remove_script_and_style(value);\n\t\tthis.markdown_preview.html(value);\n\t}\n});\n","frappe.ui.form.ControlHeading = frappe.ui.form.ControlHTML.extend({\n\tget_content: function() {\n\t\treturn \"

    \" + __(this.df.label) + \"

    \";\n\t}\n});\n","import Awesomplete from 'awesomplete';\n\nfrappe.ui.form.ControlAutocomplete = frappe.ui.form.ControlData.extend({\n\ttrigger_change_on_input_event: false,\n\tmake_input() {\n\t\tthis._super();\n\t\tthis.setup_awesomplete();\n\t\tthis.set_options();\n\t},\n\n\tset_options() {\n\t\tif (this.df.options) {\n\t\t\tlet options = this.df.options || [];\n\t\t\tthis._data = this.parse_options(options);\n\t\t}\n\t},\n\n\tget_awesomplete_settings() {\n\t\tvar me = this;\n\t\treturn {\n\t\t\tminChars: 0,\n\t\t\tmaxItems: this.df.max_items || 99,\n\t\t\tautoFirst: true,\n\t\t\tlist: this.get_data(),\n\t\t\tdata: function(item) {\n\t\t\t\tif (!(item instanceof Object)) {\n\t\t\t\t\tvar d = { value: item };\n\t\t\t\t\titem = d;\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\tlabel: item.label || item.value,\n\t\t\t\t\tvalue: item.value\n\t\t\t\t};\n\t\t\t},\n\t\t\tfilter: function(item, input) {\n\t\t\t\tlet hay = item.label + item.value;\n\t\t\t\treturn Awesomplete.FILTER_CONTAINS(hay, input);\n\t\t\t},\n\t\t\titem: function(item) {\n\t\t\t\tvar d = this.get_item(item.value);\n\t\t\t\tif (!d) {\n\t\t\t\t\td = item;\n\t\t\t\t}\n\n\t\t\t\tif (!d.label) {\n\t\t\t\t\td.label = d.value;\n\t\t\t\t}\n\n\t\t\t\tvar _label = me.translate_values ? __(d.label) : d.label;\n\t\t\t\tvar html = '' + _label + '';\n\t\t\t\tif (d.description) {\n\t\t\t\t\thtml += '
    ' + __(d.description) + '';\n\t\t\t\t}\n\n\t\t\t\treturn $('
  • ')\n\t\t\t\t\t.data('item.autocomplete', d)\n\t\t\t\t\t.prop('aria-selected', 'false')\n\t\t\t\t\t.html('

    ' + html + '

    ')\n\t\t\t\t\t.get(0);\n\t\t\t},\n\t\t\tsort: () => {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t};\n\t},\n\n\tsetup_awesomplete() {\n\t\tthis.awesomplete = new Awesomplete(\n\t\t\tthis.input,\n\t\t\tthis.get_awesomplete_settings()\n\t\t);\n\n\t\t$(this.input_area)\n\t\t\t.find('.awesomplete ul')\n\t\t\t.css('min-width', '100%');\n\n\t\tthis.$input.on(\n\t\t\t'input',\n\t\t\tfrappe.utils.debounce(() => {\n\t\t\t\tthis.awesomplete.list = this.get_data();\n\t\t\t}, 500)\n\t\t);\n\n\t\tthis.$input.on('focus', () => {\n\t\t\tif (!this.$input.val()) {\n\t\t\t\tthis.$input.val('');\n\t\t\t\tthis.$input.trigger('input');\n\t\t\t}\n\t\t});\n\n\t\tthis.$input.on('awesomplete-selectcomplete', () => {\n\t\t\tthis.$input.trigger('change');\n\t\t});\n\t},\n\n\tvalidate(value) {\n\t\tif (this.df.ignore_validation) {\n\t\t\treturn value || '';\n\t\t}\n\t\tlet valid_values = this.awesomplete._list.map(d => d.value);\n\t\tif (!valid_values.length) {\n\t\t\treturn value;\n\t\t}\n\t\tif (valid_values.includes(value)) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn '';\n\t\t}\n\t},\n\n\tparse_options(options) {\n\t\tif (typeof options === 'string') {\n\t\t\toptions = options.split('\\n');\n\t\t}\n\t\tif (typeof options[0] === 'string') {\n\t\t\toptions = options.map(o => ({ label: o, value: o }));\n\t\t}\n\t\treturn options;\n\t},\n\n\tget_data() {\n\t\treturn this._data || [];\n\t},\n\n\tset_data(data) {\n\t\tdata = this.parse_options(data);\n\t\tif (this.awesomplete) {\n\t\t\tthis.awesomplete.list = data;\n\t\t}\n\t\tthis._data = data;\n\t}\n});\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Barcode = function Barcode(data, options) {\n\t_classCallCheck(this, Barcode);\n\n\tthis.data = data;\n\tthis.text = options.text || data;\n\tthis.options = options;\n};\n\nexports.default = Barcode;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.CODE39 = undefined;\n\nvar _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\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Code_39#Encoding\n\nvar CODE39 = function (_Barcode) {\n\t_inherits(CODE39, _Barcode);\n\n\tfunction CODE39(data, options) {\n\t\t_classCallCheck(this, CODE39);\n\n\t\tdata = data.toUpperCase();\n\n\t\t// Calculate mod43 checksum if enabled\n\t\tif (options.mod43) {\n\t\t\tdata += getCharacter(mod43checksum(data));\n\t\t}\n\n\t\treturn _possibleConstructorReturn(this, (CODE39.__proto__ || Object.getPrototypeOf(CODE39)).call(this, data, options));\n\t}\n\n\t_createClass(CODE39, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\t// First character is always a *\n\t\t\tvar result = getEncoding(\"*\");\n\n\t\t\t// Take every character and add the binary representation to the result\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\tresult += getEncoding(this.data[i]) + \"0\";\n\t\t\t}\n\n\t\t\t// Last character is always a *\n\t\t\tresult += getEncoding(\"*\");\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9A-Z\\-\\.\\ \\$\\/\\+\\%]+$/) !== -1;\n\t\t}\n\t}]);\n\n\treturn CODE39;\n}(_Barcode3.default);\n\n// All characters. The position in the array is the (checksum) value\n\n\nvar characters = [\"0\", \"1\", \"2\", \"3\", \"4\", \"5\", \"6\", \"7\", \"8\", \"9\", \"A\", \"B\", \"C\", \"D\", \"E\", \"F\", \"G\", \"H\", \"I\", \"J\", \"K\", \"L\", \"M\", \"N\", \"O\", \"P\", \"Q\", \"R\", \"S\", \"T\", \"U\", \"V\", \"W\", \"X\", \"Y\", \"Z\", \"-\", \".\", \" \", \"$\", \"/\", \"+\", \"%\", \"*\"];\n\n// The decimal representation of the characters, is converted to the\n// corresponding binary with the getEncoding function\nvar encodings = [20957, 29783, 23639, 30485, 20951, 29813, 23669, 20855, 29789, 23645, 29975, 23831, 30533, 22295, 30149, 24005, 21623, 29981, 23837, 22301, 30023, 23879, 30545, 22343, 30161, 24017, 21959, 30065, 23921, 22385, 29015, 18263, 29141, 17879, 29045, 18293, 17783, 29021, 18269, 17477, 17489, 17681, 20753, 35770];\n\n// Get the binary representation of a character by converting the encodings\n// from decimal to binary\nfunction getEncoding(character) {\n\treturn getBinary(characterValue(character));\n}\n\nfunction getBinary(characterValue) {\n\treturn encodings[characterValue].toString(2);\n}\n\nfunction getCharacter(characterValue) {\n\treturn characters[characterValue];\n}\n\nfunction characterValue(character) {\n\treturn characters.indexOf(character);\n}\n\nfunction mod43checksum(data) {\n\tvar checksum = 0;\n\tfor (var i = 0; i < data.length; i++) {\n\t\tchecksum += characterValue(data[i]);\n\t}\n\n\tchecksum = checksum % 43;\n\treturn checksum;\n}\n\nexports.CODE39 = CODE39;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _SET_BY_CODE;\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n// constants for internal usage\nvar SET_A = exports.SET_A = 0;\nvar SET_B = exports.SET_B = 1;\nvar SET_C = exports.SET_C = 2;\n\n// Special characters\nvar SHIFT = exports.SHIFT = 98;\nvar START_A = exports.START_A = 103;\nvar START_B = exports.START_B = 104;\nvar START_C = exports.START_C = 105;\nvar MODULO = exports.MODULO = 103;\nvar STOP = exports.STOP = 106;\nvar FNC1 = exports.FNC1 = 207;\n\n// Get set by start code\nvar SET_BY_CODE = exports.SET_BY_CODE = (_SET_BY_CODE = {}, _defineProperty(_SET_BY_CODE, START_A, SET_A), _defineProperty(_SET_BY_CODE, START_B, SET_B), _defineProperty(_SET_BY_CODE, START_C, SET_C), _SET_BY_CODE);\n\n// Get next set by code\nvar SWAP = exports.SWAP = {\n\t101: SET_A,\n\t100: SET_B,\n\t99: SET_C\n};\n\nvar A_START_CHAR = exports.A_START_CHAR = String.fromCharCode(208); // START_A + 105\nvar B_START_CHAR = exports.B_START_CHAR = String.fromCharCode(209); // START_B + 105\nvar C_START_CHAR = exports.C_START_CHAR = String.fromCharCode(210); // START_C + 105\n\n// 128A (Code Set A)\n// ASCII characters 00 to 95 (0–9, A–Z and control codes), special characters, and FNC 1–4\nvar A_CHARS = exports.A_CHARS = \"[\\x00-\\x5F\\xC8-\\xCF]\";\n\n// 128B (Code Set B)\n// ASCII characters 32 to 127 (0–9, A–Z, a–z), special characters, and FNC 1–4\nvar B_CHARS = exports.B_CHARS = \"[\\x20-\\x7F\\xC8-\\xCF]\";\n\n// 128C (Code Set C)\n// 00–99 (encodes two digits with a single code point) and FNC1\nvar C_CHARS = exports.C_CHARS = \"(\\xCF*[0-9]{2}\\xCF*)\";\n\n// CODE128 includes 107 symbols:\n// 103 data symbols, 3 start symbols (A, B and C), and 1 stop symbol (the last one)\n// Each symbol consist of three black bars (1) and three white spaces (0).\nvar BARS = exports.BARS = [11011001100, 11001101100, 11001100110, 10010011000, 10010001100, 10001001100, 10011001000, 10011000100, 10001100100, 11001001000, 11001000100, 11000100100, 10110011100, 10011011100, 10011001110, 10111001100, 10011101100, 10011100110, 11001110010, 11001011100, 11001001110, 11011100100, 11001110100, 11101101110, 11101001100, 11100101100, 11100100110, 11101100100, 11100110100, 11100110010, 11011011000, 11011000110, 11000110110, 10100011000, 10001011000, 10001000110, 10110001000, 10001101000, 10001100010, 11010001000, 11000101000, 11000100010, 10110111000, 10110001110, 10001101110, 10111011000, 10111000110, 10001110110, 11101110110, 11010001110, 11000101110, 11011101000, 11011100010, 11011101110, 11101011000, 11101000110, 11100010110, 11101101000, 11101100010, 11100011010, 11101111010, 11001000010, 11110001010, 10100110000, 10100001100, 10010110000, 10010000110, 10000101100, 10000100110, 10110010000, 10110000100, 10011010000, 10011000010, 10000110100, 10000110010, 11000010010, 11001010000, 11110111010, 11000010100, 10001111010, 10100111100, 10010111100, 10010011110, 10111100100, 10011110100, 10011110010, 11110100100, 11110010100, 11110010010, 11011011110, 11011110110, 11110110110, 10101111000, 10100011110, 10001011110, 10111101000, 10111100010, 11110101000, 11110100010, 10111011110, 10111101110, 11101011110, 11110101110, 11010000100, 11010010000, 11010011100, 1100011101011];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _Barcode2 = require('../Barcode.js');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// This is the master class,\n// it does require the start code to be included in the string\nvar CODE128 = function (_Barcode) {\n\t_inherits(CODE128, _Barcode);\n\n\tfunction CODE128(data, options) {\n\t\t_classCallCheck(this, CODE128);\n\n\t\t// Get array of ascii codes from data\n\t\tvar _this = _possibleConstructorReturn(this, (CODE128.__proto__ || Object.getPrototypeOf(CODE128)).call(this, data.substring(1), options));\n\n\t\t_this.bytes = data.split('').map(function (char) {\n\t\t\treturn char.charCodeAt(0);\n\t\t});\n\t\treturn _this;\n\t}\n\n\t_createClass(CODE128, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\t// ASCII value ranges 0-127, 200-211\n\t\t\treturn (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(this.data)\n\t\t\t);\n\t\t}\n\n\t\t// The public encoding function\n\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar bytes = this.bytes;\n\t\t\t// Remove the start code from the bytes and set its index\n\t\t\tvar startIndex = bytes.shift() - 105;\n\t\t\t// Get start set by index\n\t\t\tvar startSet = _constants.SET_BY_CODE[startIndex];\n\n\t\t\tif (startSet === undefined) {\n\t\t\t\tthrow new RangeError('The encoding does not start with a start character.');\n\t\t\t}\n\n\t\t\tif (this.shouldEncodeAsEan128() === true) {\n\t\t\t\tbytes.unshift(_constants.FNC1);\n\t\t\t}\n\n\t\t\t// Start encode with the right type\n\t\t\tvar encodingResult = CODE128.next(bytes, 1, startSet);\n\n\t\t\treturn {\n\t\t\t\ttext: this.text === this.data ? this.text.replace(/[^\\x20-\\x7E]/g, '') : this.text,\n\t\t\t\tdata:\n\t\t\t\t// Add the start bits\n\t\t\t\tCODE128.getBar(startIndex) +\n\t\t\t\t// Add the encoded bits\n\t\t\t\tencodingResult.result +\n\t\t\t\t// Add the checksum\n\t\t\t\tCODE128.getBar((encodingResult.checksum + startIndex) % _constants.MODULO) +\n\t\t\t\t// Add the end bits\n\t\t\t\tCODE128.getBar(_constants.STOP)\n\t\t\t};\n\t\t}\n\n\t\t// GS1-128/EAN-128\n\n\t}, {\n\t\tkey: 'shouldEncodeAsEan128',\n\t\tvalue: function shouldEncodeAsEan128() {\n\t\t\tvar isEAN128 = this.options.ean128 || false;\n\t\t\tif (typeof isEAN128 === 'string') {\n\t\t\t\tisEAN128 = isEAN128.toLowerCase() === 'true';\n\t\t\t}\n\t\t\treturn isEAN128;\n\t\t}\n\n\t\t// Get a bar symbol by index\n\n\t}], [{\n\t\tkey: 'getBar',\n\t\tvalue: function getBar(index) {\n\t\t\treturn _constants.BARS[index] ? _constants.BARS[index].toString() : '';\n\t\t}\n\n\t\t// Correct an index by a set and shift it from the bytes array\n\n\t}, {\n\t\tkey: 'correctIndex',\n\t\tvalue: function correctIndex(bytes, set) {\n\t\t\tif (set === _constants.SET_A) {\n\t\t\t\tvar charCode = bytes.shift();\n\t\t\t\treturn charCode < 32 ? charCode + 64 : charCode - 32;\n\t\t\t} else if (set === _constants.SET_B) {\n\t\t\t\treturn bytes.shift() - 32;\n\t\t\t} else {\n\t\t\t\treturn (bytes.shift() - 48) * 10 + bytes.shift() - 48;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'next',\n\t\tvalue: function next(bytes, pos, set) {\n\t\t\tif (!bytes.length) {\n\t\t\t\treturn { result: '', checksum: 0 };\n\t\t\t}\n\n\t\t\tvar nextCode = void 0,\n\t\t\t index = void 0;\n\n\t\t\t// Special characters\n\t\t\tif (bytes[0] >= 200) {\n\t\t\t\tindex = bytes.shift() - 105;\n\t\t\t\tvar nextSet = _constants.SWAP[index];\n\n\t\t\t\t// Swap to other set\n\t\t\t\tif (nextSet !== undefined) {\n\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, nextSet);\n\t\t\t\t}\n\t\t\t\t// Continue on current set but encode a special character\n\t\t\t\telse {\n\t\t\t\t\t\t// Shift\n\t\t\t\t\t\tif ((set === _constants.SET_A || set === _constants.SET_B) && index === _constants.SHIFT) {\n\t\t\t\t\t\t\t// Convert the next character so that is encoded correctly\n\t\t\t\t\t\t\tbytes[0] = set === _constants.SET_A ? bytes[0] > 95 ? bytes[0] - 96 : bytes[0] : bytes[0] < 32 ? bytes[0] + 96 : bytes[0];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, set);\n\t\t\t\t\t}\n\t\t\t}\n\t\t\t// Continue encoding\n\t\t\telse {\n\t\t\t\t\tindex = CODE128.correctIndex(bytes, set);\n\t\t\t\t\tnextCode = CODE128.next(bytes, pos + 1, set);\n\t\t\t\t}\n\n\t\t\t// Get the correct binary encoding and calculate the weight\n\t\t\tvar enc = CODE128.getBar(index);\n\t\t\tvar weight = index * pos;\n\n\t\t\treturn {\n\t\t\t\tresult: enc + nextCode.result,\n\t\t\t\tchecksum: weight + nextCode.checksum\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn CODE128;\n}(_Barcode3.default);\n\nexports.default = CODE128;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _constants = require('./constants');\n\n// Match Set functions\nvar matchSetALength = function matchSetALength(string) {\n\treturn string.match(new RegExp('^' + _constants.A_CHARS + '*'))[0].length;\n};\nvar matchSetBLength = function matchSetBLength(string) {\n\treturn string.match(new RegExp('^' + _constants.B_CHARS + '*'))[0].length;\n};\nvar matchSetC = function matchSetC(string) {\n\treturn string.match(new RegExp('^' + _constants.C_CHARS + '*'))[0];\n};\n\n// CODE128A or CODE128B\nfunction autoSelectFromAB(string, isA) {\n\tvar ranges = isA ? _constants.A_CHARS : _constants.B_CHARS;\n\tvar untilC = string.match(new RegExp('^(' + ranges + '+?)(([0-9]{2}){2,})([^0-9]|$)'));\n\n\tif (untilC) {\n\t\treturn untilC[1] + String.fromCharCode(204) + autoSelectFromC(string.substring(untilC[1].length));\n\t}\n\n\tvar chars = string.match(new RegExp('^' + ranges + '+'))[0];\n\n\tif (chars.length === string.length) {\n\t\treturn string;\n\t}\n\n\treturn chars + String.fromCharCode(isA ? 205 : 206) + autoSelectFromAB(string.substring(chars.length), !isA);\n}\n\n// CODE128C\nfunction autoSelectFromC(string) {\n\tvar cMatch = matchSetC(string);\n\tvar length = cMatch.length;\n\n\tif (length === string.length) {\n\t\treturn string;\n\t}\n\n\tstring = string.substring(length);\n\n\t// Select A/B depending on the longest match\n\tvar isA = matchSetALength(string) >= matchSetBLength(string);\n\treturn cMatch + String.fromCharCode(isA ? 206 : 205) + autoSelectFromAB(string, isA);\n}\n\n// Detect Code Set (A, B or C) and format the string\n\nexports.default = function (string) {\n\tvar newString = void 0;\n\tvar cLength = matchSetC(string).length;\n\n\t// Select 128C if the string start with enough digits\n\tif (cLength >= 2) {\n\t\tnewString = _constants.C_START_CHAR + autoSelectFromC(string);\n\t} else {\n\t\t// Select A/B depending on the longest match\n\t\tvar isA = matchSetALength(string) > matchSetBLength(string);\n\t\tnewString = (isA ? _constants.A_START_CHAR : _constants.B_START_CHAR) + autoSelectFromAB(string, isA);\n\t}\n\n\treturn newString.replace(/[\\xCD\\xCE]([^])[\\xCD\\xCE]/, // Any sequence between 205 and 206 characters\n\tfunction (match, char) {\n\t\treturn String.fromCharCode(203) + char;\n\t});\n};","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _CODE2 = require('./CODE128');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _auto = require('./auto');\n\nvar _auto2 = _interopRequireDefault(_auto);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128AUTO = function (_CODE) {\n\t_inherits(CODE128AUTO, _CODE);\n\n\tfunction CODE128AUTO(data, options) {\n\t\t_classCallCheck(this, CODE128AUTO);\n\n\t\t// ASCII value ranges 0-127, 200-211\n\t\tif (/^[\\x00-\\x7F\\xC8-\\xD3]+$/.test(data)) {\n\t\t\tvar _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, (0, _auto2.default)(data), options));\n\t\t} else {\n\t\t\tvar _this = _possibleConstructorReturn(this, (CODE128AUTO.__proto__ || Object.getPrototypeOf(CODE128AUTO)).call(this, data, options));\n\t\t}\n\t\treturn _possibleConstructorReturn(_this);\n\t}\n\n\treturn CODE128AUTO;\n}(_CODE3.default);\n\nexports.default = CODE128AUTO;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128A = function (_CODE) {\n\t_inherits(CODE128A, _CODE);\n\n\tfunction CODE128A(string, options) {\n\t\t_classCallCheck(this, CODE128A);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128A.__proto__ || Object.getPrototypeOf(CODE128A)).call(this, _constants.A_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128A, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.A_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128A;\n}(_CODE3.default);\n\nexports.default = CODE128A;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128B = function (_CODE) {\n\t_inherits(CODE128B, _CODE);\n\n\tfunction CODE128B(string, options) {\n\t\t_classCallCheck(this, CODE128B);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128B.__proto__ || Object.getPrototypeOf(CODE128B)).call(this, _constants.B_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128B, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.B_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128B;\n}(_CODE3.default);\n\nexports.default = CODE128B;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _CODE2 = require('./CODE128.js');\n\nvar _CODE3 = _interopRequireDefault(_CODE2);\n\nvar _constants = require('./constants');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar CODE128C = function (_CODE) {\n\t_inherits(CODE128C, _CODE);\n\n\tfunction CODE128C(string, options) {\n\t\t_classCallCheck(this, CODE128C);\n\n\t\treturn _possibleConstructorReturn(this, (CODE128C.__proto__ || Object.getPrototypeOf(CODE128C)).call(this, _constants.C_START_CHAR + string, options));\n\t}\n\n\t_createClass(CODE128C, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn new RegExp('^' + _constants.C_CHARS + '+$').test(this.data);\n\t\t}\n\t}]);\n\n\treturn CODE128C;\n}(_CODE3.default);\n\nexports.default = CODE128C;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.CODE128C = exports.CODE128B = exports.CODE128A = exports.CODE128 = undefined;\n\nvar _CODE128_AUTO = require('./CODE128_AUTO.js');\n\nvar _CODE128_AUTO2 = _interopRequireDefault(_CODE128_AUTO);\n\nvar _CODE128A = require('./CODE128A.js');\n\nvar _CODE128A2 = _interopRequireDefault(_CODE128A);\n\nvar _CODE128B = require('./CODE128B.js');\n\nvar _CODE128B2 = _interopRequireDefault(_CODE128B);\n\nvar _CODE128C = require('./CODE128C.js');\n\nvar _CODE128C2 = _interopRequireDefault(_CODE128C);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.CODE128 = _CODE128_AUTO2.default;\nexports.CODE128A = _CODE128A2.default;\nexports.CODE128B = _CODE128B2.default;\nexports.CODE128C = _CODE128C2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n// Standard start end and middle bits\nvar SIDE_BIN = exports.SIDE_BIN = '101';\nvar MIDDLE_BIN = exports.MIDDLE_BIN = '01010';\n\nvar BINARIES = exports.BINARIES = {\n\t'L': [// The L (left) type of encoding\n\t'0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'],\n\t'G': [// The G type of encoding\n\t'0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111'],\n\t'R': [// The R (right) type of encoding\n\t'1110010', '1100110', '1101100', '1000010', '1011100', '1001110', '1010000', '1000100', '1001000', '1110100'],\n\t'O': [// The O (odd) encoding for UPC-E\n\t'0001101', '0011001', '0010011', '0111101', '0100011', '0110001', '0101111', '0111011', '0110111', '0001011'],\n\t'E': [// The E (even) encoding for UPC-E\n\t'0100111', '0110011', '0011011', '0100001', '0011101', '0111001', '0000101', '0010001', '0001001', '0010111']\n};\n\n// Define the EAN-2 structure\nvar EAN2_STRUCTURE = exports.EAN2_STRUCTURE = ['LL', 'LG', 'GL', 'GG'];\n\n// Define the EAN-5 structure\nvar EAN5_STRUCTURE = exports.EAN5_STRUCTURE = ['GGLLL', 'GLGLL', 'GLLGL', 'GLLLG', 'LGGLL', 'LLGGL', 'LLLGG', 'LGLGL', 'LGLLG', 'LLGLG'];\n\n// Define the EAN-13 structure\nvar EAN13_STRUCTURE = exports.EAN13_STRUCTURE = ['LLLLLL', 'LLGLGG', 'LLGGLG', 'LLGGGL', 'LGLLGG', 'LGGLLG', 'LGGGLL', 'LGLGLG', 'LGLGGL', 'LGGLGL'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _constants = require('./constants');\n\n// Encode data string\nvar encode = function encode(data, structure, separator) {\n\tvar encoded = data.split('').map(function (val, idx) {\n\t\treturn _constants.BINARIES[structure[idx]];\n\t}).map(function (val, idx) {\n\t\treturn val ? val[data[idx]] : '';\n\t});\n\n\tif (separator) {\n\t\tvar last = data.length - 1;\n\t\tencoded = encoded.map(function (val, idx) {\n\t\t\treturn idx < last ? val + separator : val;\n\t\t});\n\t}\n\n\treturn encoded.join('');\n};\n\nexports.default = encode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Base class for EAN8 & EAN13\nvar EAN = function (_Barcode) {\n\t_inherits(EAN, _Barcode);\n\n\tfunction EAN(data, options) {\n\t\t_classCallCheck(this, EAN);\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tvar _this = _possibleConstructorReturn(this, (EAN.__proto__ || Object.getPrototypeOf(EAN)).call(this, data, options));\n\n\t\t_this.fontSize = !options.flat && options.fontSize > options.width * 10 ? options.width * 10 : options.fontSize;\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(EAN, [{\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\treturn this.options.flat ? this.encodeFlat() : this.encodeGuarded();\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText(from, to) {\n\t\t\treturn this.text.substr(from, to);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode(data, structure) {\n\t\t\treturn (0, _encoder2.default)(data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText(from, to) {\n\t\t\treturn this.text.substr(from, to);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode(data, structure) {\n\t\t\treturn (0, _encoder2.default)(data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'encodeGuarded',\n\t\tvalue: function encodeGuarded() {\n\t\t\tvar textOptions = { fontSize: this.fontSize };\n\t\t\tvar guardOptions = { height: this.guardHeight };\n\n\t\t\treturn [{ data: _constants.SIDE_BIN, options: guardOptions }, { data: this.leftEncode(), text: this.leftText(), options: textOptions }, { data: _constants.MIDDLE_BIN, options: guardOptions }, { data: this.rightEncode(), text: this.rightText(), options: textOptions }, { data: _constants.SIDE_BIN, options: guardOptions }];\n\t\t}\n\t}, {\n\t\tkey: 'encodeFlat',\n\t\tvalue: function encodeFlat() {\n\t\t\tvar data = [_constants.SIDE_BIN, this.leftEncode(), _constants.MIDDLE_BIN, this.rightEncode(), _constants.SIDE_BIN];\n\n\t\t\treturn {\n\t\t\t\tdata: data.join(''),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN;\n}(_Barcode3.default);\n\nexports.default = EAN;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _constants = require('./constants');\n\nvar _EAN2 = require('./EAN');\n\nvar _EAN3 = _interopRequireDefault(_EAN2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Binary_encoding_of_data_digits_into_EAN-13_barcode\n\n// Calculate the checksum digit\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit\nvar checksum = function checksum(number) {\n\tvar res = number.substr(0, 12).split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a * 3 : sum + a;\n\t}, 0);\n\n\treturn (10 - res % 10) % 10;\n};\n\nvar EAN13 = function (_EAN) {\n\t_inherits(EAN13, _EAN);\n\n\tfunction EAN13(data, options) {\n\t\t_classCallCheck(this, EAN13);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{12}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\t// Adds a last character to the end of the barcode\n\t\tvar _this = _possibleConstructorReturn(this, (EAN13.__proto__ || Object.getPrototypeOf(EAN13)).call(this, data, options));\n\n\t\t_this.lastChar = options.lastChar;\n\t\treturn _this;\n\t}\n\n\t_createClass(EAN13, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{13}$/) !== -1 && +this.data[12] === checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText() {\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftText', this).call(this, 1, 6);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode() {\n\t\t\tvar data = this.data.substr(1, 6);\n\t\t\tvar structure = _constants.EAN13_STRUCTURE[this.data[0]];\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'leftEncode', this).call(this, data, structure);\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText() {\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightText', this).call(this, 7, 6);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode() {\n\t\t\tvar data = this.data.substr(7, 6);\n\t\t\treturn _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'rightEncode', this).call(this, data, 'RRRRRR');\n\t\t}\n\n\t\t// The \"standard\" way of printing EAN13 barcodes with guard bars\n\n\t}, {\n\t\tkey: 'encodeGuarded',\n\t\tvalue: function encodeGuarded() {\n\t\t\tvar data = _get(EAN13.prototype.__proto__ || Object.getPrototypeOf(EAN13.prototype), 'encodeGuarded', this).call(this);\n\n\t\t\t// Extend data with left digit & last character\n\t\t\tif (this.options.displayValue) {\n\t\t\t\tdata.unshift({\n\t\t\t\t\tdata: '000000000000',\n\t\t\t\t\ttext: this.text.substr(0, 1),\n\t\t\t\t\toptions: { textAlign: 'left', fontSize: this.fontSize }\n\t\t\t\t});\n\n\t\t\t\tif (this.options.lastChar) {\n\t\t\t\t\tdata.push({\n\t\t\t\t\t\tdata: '00'\n\t\t\t\t\t});\n\t\t\t\t\tdata.push({\n\t\t\t\t\t\tdata: '00000',\n\t\t\t\t\t\ttext: this.options.lastChar,\n\t\t\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\t}]);\n\n\treturn EAN13;\n}(_EAN3.default);\n\nexports.default = EAN13;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _EAN2 = require('./EAN');\n\nvar _EAN3 = _interopRequireDefault(_EAN2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// http://www.barcodeisland.com/ean8.phtml\n\n// Calculate the checksum digit\nvar checksum = function checksum(number) {\n\tvar res = number.substr(0, 7).split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a : sum + a * 3;\n\t}, 0);\n\n\treturn (10 - res % 10) % 10;\n};\n\nvar EAN8 = function (_EAN) {\n\t_inherits(EAN8, _EAN);\n\n\tfunction EAN8(data, options) {\n\t\t_classCallCheck(this, EAN8);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{7}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\treturn _possibleConstructorReturn(this, (EAN8.__proto__ || Object.getPrototypeOf(EAN8)).call(this, data, options));\n\t}\n\n\t_createClass(EAN8, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{8}$/) !== -1 && +this.data[7] === checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: 'leftText',\n\t\tvalue: function leftText() {\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftText', this).call(this, 0, 4);\n\t\t}\n\t}, {\n\t\tkey: 'leftEncode',\n\t\tvalue: function leftEncode() {\n\t\t\tvar data = this.data.substr(0, 4);\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'leftEncode', this).call(this, data, 'LLLL');\n\t\t}\n\t}, {\n\t\tkey: 'rightText',\n\t\tvalue: function rightText() {\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightText', this).call(this, 4, 4);\n\t\t}\n\t}, {\n\t\tkey: 'rightEncode',\n\t\tvalue: function rightEncode() {\n\t\t\tvar data = this.data.substr(4, 4);\n\t\t\treturn _get(EAN8.prototype.__proto__ || Object.getPrototypeOf(EAN8.prototype), 'rightEncode', this).call(this, data, 'RRRR');\n\t\t}\n\t}]);\n\n\treturn EAN8;\n}(_EAN3.default);\n\nexports.default = EAN8;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/EAN_5#Encoding\n\nvar checksum = function checksum(data) {\n\tvar result = data.split('').map(function (n) {\n\t\treturn +n;\n\t}).reduce(function (sum, a, idx) {\n\t\treturn idx % 2 ? sum + a * 9 : sum + a * 3;\n\t}, 0);\n\treturn result % 10;\n};\n\nvar EAN5 = function (_Barcode) {\n\t_inherits(EAN5, _Barcode);\n\n\tfunction EAN5(data, options) {\n\t\t_classCallCheck(this, EAN5);\n\n\t\treturn _possibleConstructorReturn(this, (EAN5.__proto__ || Object.getPrototypeOf(EAN5)).call(this, data, options));\n\t}\n\n\t_createClass(EAN5, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{5}$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar structure = _constants.EAN5_STRUCTURE[checksum(this.data)];\n\t\t\treturn {\n\t\t\t\tdata: '1011' + (0, _encoder2.default)(this.data, structure, '01'),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN5;\n}(_Barcode3.default);\n\nexports.default = EAN5;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _constants = require('./constants');\n\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/EAN_2#Encoding\n\nvar EAN2 = function (_Barcode) {\n\t_inherits(EAN2, _Barcode);\n\n\tfunction EAN2(data, options) {\n\t\t_classCallCheck(this, EAN2);\n\n\t\treturn _possibleConstructorReturn(this, (EAN2.__proto__ || Object.getPrototypeOf(EAN2)).call(this, data, options));\n\t}\n\n\t_createClass(EAN2, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{2}$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\t// Choose the structure based on the number mod 4\n\t\t\tvar structure = _constants.EAN2_STRUCTURE[parseInt(this.data) % 4];\n\t\t\treturn {\n\t\t\t\t// Start bits + Encode the two digits with 01 in between\n\t\t\t\tdata: '1011' + (0, _encoder2.default)(this.data, structure, '01'),\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn EAN2;\n}(_Barcode3.default);\n\nexports.default = EAN2;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nexports.checksum = checksum;\n\nvar _encoder = require(\"./encoder\");\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding\n\nvar UPC = function (_Barcode) {\n\t_inherits(UPC, _Barcode);\n\n\tfunction UPC(data, options) {\n\t\t_classCallCheck(this, UPC);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{11}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\n\t\tvar _this = _possibleConstructorReturn(this, (UPC.__proto__ || Object.getPrototypeOf(UPC)).call(this, data, options));\n\n\t\t_this.displayValue = options.displayValue;\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tif (options.fontSize > options.width * 10) {\n\t\t\t_this.fontSize = options.width * 10;\n\t\t} else {\n\t\t\t_this.fontSize = options.fontSize;\n\t\t}\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(UPC, [{\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{12}$/) !== -1 && this.data[11] == checksum(this.data);\n\t\t}\n\t}, {\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tif (this.options.flat) {\n\t\t\t\treturn this.flatEncoding();\n\t\t\t} else {\n\t\t\t\treturn this.guardedEncoding();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"flatEncoding\",\n\t\tvalue: function flatEncoding() {\n\t\t\tvar result = \"\";\n\n\t\t\tresult += \"101\";\n\t\t\tresult += (0, _encoder2.default)(this.data.substr(0, 6), \"LLLLLL\");\n\t\t\tresult += \"01010\";\n\t\t\tresult += (0, _encoder2.default)(this.data.substr(6, 6), \"RRRRRR\");\n\t\t\tresult += \"101\";\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"guardedEncoding\",\n\t\tvalue: function guardedEncoding() {\n\t\t\tvar result = [];\n\n\t\t\t// Add the first digit\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text.substr(0, 1),\n\t\t\t\t\toptions: { textAlign: \"left\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Add the guard bars\n\t\t\tresult.push({\n\t\t\t\tdata: \"101\" + (0, _encoder2.default)(this.data[0], \"L\"),\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the left side\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data.substr(1, 5), \"LLLLL\"),\n\t\t\t\ttext: this.text.substr(1, 5),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the middle bits\n\t\t\tresult.push({\n\t\t\t\tdata: \"01010\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the right side\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data.substr(6, 5), \"RRRRR\"),\n\t\t\t\ttext: this.text.substr(6, 5),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the end bits\n\t\t\tresult.push({\n\t\t\t\tdata: (0, _encoder2.default)(this.data[11], \"R\") + \"101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the last digit\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text.substr(11, 1),\n\t\t\t\t\toptions: { textAlign: \"right\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t}]);\n\n\treturn UPC;\n}(_Barcode3.default);\n\n// Calulate the checksum digit\n// https://en.wikipedia.org/wiki/International_Article_Number_(EAN)#Calculation_of_checksum_digit\n\n\nfunction checksum(number) {\n\tvar result = 0;\n\n\tvar i;\n\tfor (i = 1; i < 11; i += 2) {\n\t\tresult += parseInt(number[i]);\n\t}\n\tfor (i = 0; i < 11; i += 2) {\n\t\tresult += parseInt(number[i]) * 3;\n\t}\n\n\treturn (10 - result % 10) % 10;\n}\n\nexports.default = UPC;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _encoder = require('./encoder');\n\nvar _encoder2 = _interopRequireDefault(_encoder);\n\nvar _Barcode2 = require('../Barcode.js');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nvar _UPC = require('./UPC.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#Encoding\n//\n// UPC-E documentation:\n// https://en.wikipedia.org/wiki/Universal_Product_Code#UPC-E\n\nvar EXPANSIONS = [\"XX00000XXX\", \"XX10000XXX\", \"XX20000XXX\", \"XXX00000XX\", \"XXXX00000X\", \"XXXXX00005\", \"XXXXX00006\", \"XXXXX00007\", \"XXXXX00008\", \"XXXXX00009\"];\n\nvar PARITIES = [[\"EEEOOO\", \"OOOEEE\"], [\"EEOEOO\", \"OOEOEE\"], [\"EEOOEO\", \"OOEEOE\"], [\"EEOOOE\", \"OOEEEO\"], [\"EOEEOO\", \"OEOOEE\"], [\"EOOEEO\", \"OEEOOE\"], [\"EOOOEE\", \"OEEEOO\"], [\"EOEOEO\", \"OEOEOE\"], [\"EOEOOE\", \"OEOEEO\"], [\"EOOEOE\", \"OEEOEO\"]];\n\nvar UPCE = function (_Barcode) {\n\t_inherits(UPCE, _Barcode);\n\n\tfunction UPCE(data, options) {\n\t\t_classCallCheck(this, UPCE);\n\n\t\tvar _this = _possibleConstructorReturn(this, (UPCE.__proto__ || Object.getPrototypeOf(UPCE)).call(this, data, options));\n\t\t// Code may be 6 or 8 digits;\n\t\t// A 7 digit code is ambiguous as to whether the extra digit\n\t\t// is a UPC-A check or number system digit.\n\n\n\t\t_this.isValid = false;\n\t\tif (data.search(/^[0-9]{6}$/) !== -1) {\n\t\t\t_this.middleDigits = data;\n\t\t\t_this.upcA = expandToUPCA(data, \"0\");\n\t\t\t_this.text = options.text || '' + _this.upcA[0] + data + _this.upcA[_this.upcA.length - 1];\n\t\t\t_this.isValid = true;\n\t\t} else if (data.search(/^[01][0-9]{7}$/) !== -1) {\n\t\t\t_this.middleDigits = data.substring(1, data.length - 1);\n\t\t\t_this.upcA = expandToUPCA(_this.middleDigits, data[0]);\n\n\t\t\tif (_this.upcA[_this.upcA.length - 1] === data[data.length - 1]) {\n\t\t\t\t_this.isValid = true;\n\t\t\t} else {\n\t\t\t\t// checksum mismatch\n\t\t\t\treturn _possibleConstructorReturn(_this);\n\t\t\t}\n\t\t} else {\n\t\t\treturn _possibleConstructorReturn(_this);\n\t\t}\n\n\t\t_this.displayValue = options.displayValue;\n\n\t\t// Make sure the font is not bigger than the space between the guard bars\n\t\tif (options.fontSize > options.width * 10) {\n\t\t\t_this.fontSize = options.width * 10;\n\t\t} else {\n\t\t\t_this.fontSize = options.fontSize;\n\t\t}\n\n\t\t// Make the guard bars go down half the way of the text\n\t\t_this.guardHeight = options.height + _this.fontSize / 2 + options.textMargin;\n\t\treturn _this;\n\t}\n\n\t_createClass(UPCE, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.isValid;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tif (this.options.flat) {\n\t\t\t\treturn this.flatEncoding();\n\t\t\t} else {\n\t\t\t\treturn this.guardedEncoding();\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: 'flatEncoding',\n\t\tvalue: function flatEncoding() {\n\t\t\tvar result = \"\";\n\n\t\t\tresult += \"101\";\n\t\t\tresult += this.encodeMiddleDigits();\n\t\t\tresult += \"010101\";\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: 'guardedEncoding',\n\t\tvalue: function guardedEncoding() {\n\t\t\tvar result = [];\n\n\t\t\t// Add the UPC-A number system digit beneath the quiet zone\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text[0],\n\t\t\t\t\toptions: { textAlign: \"left\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Add the guard bars\n\t\t\tresult.push({\n\t\t\t\tdata: \"101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the 6 UPC-E digits\n\t\t\tresult.push({\n\t\t\t\tdata: this.encodeMiddleDigits(),\n\t\t\t\ttext: this.text.substring(1, 7),\n\t\t\t\toptions: { fontSize: this.fontSize }\n\t\t\t});\n\n\t\t\t// Add the end bits\n\t\t\tresult.push({\n\t\t\t\tdata: \"010101\",\n\t\t\t\toptions: { height: this.guardHeight }\n\t\t\t});\n\n\t\t\t// Add the UPC-A check digit beneath the quiet zone\n\t\t\tif (this.displayValue) {\n\t\t\t\tresult.push({\n\t\t\t\t\tdata: \"00000000\",\n\t\t\t\t\ttext: this.text[7],\n\t\t\t\t\toptions: { textAlign: \"right\", fontSize: this.fontSize }\n\t\t\t\t});\n\t\t\t}\n\n\t\t\treturn result;\n\t\t}\n\t}, {\n\t\tkey: 'encodeMiddleDigits',\n\t\tvalue: function encodeMiddleDigits() {\n\t\t\tvar numberSystem = this.upcA[0];\n\t\t\tvar checkDigit = this.upcA[this.upcA.length - 1];\n\t\t\tvar parity = PARITIES[parseInt(checkDigit)][parseInt(numberSystem)];\n\t\t\treturn (0, _encoder2.default)(this.middleDigits, parity);\n\t\t}\n\t}]);\n\n\treturn UPCE;\n}(_Barcode3.default);\n\nfunction expandToUPCA(middleDigits, numberSystem) {\n\tvar lastUpcE = parseInt(middleDigits[middleDigits.length - 1]);\n\tvar expansion = EXPANSIONS[lastUpcE];\n\n\tvar result = \"\";\n\tvar digitIndex = 0;\n\tfor (var i = 0; i < expansion.length; i++) {\n\t\tvar c = expansion[i];\n\t\tif (c === 'X') {\n\t\t\tresult += middleDigits[digitIndex++];\n\t\t} else {\n\t\t\tresult += c;\n\t\t}\n\t}\n\n\tresult = '' + numberSystem + result;\n\treturn '' + result + (0, _UPC.checksum)(result);\n}\n\nexports.default = UPCE;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.UPCE = exports.UPC = exports.EAN2 = exports.EAN5 = exports.EAN8 = exports.EAN13 = undefined;\n\nvar _EAN = require('./EAN13.js');\n\nvar _EAN2 = _interopRequireDefault(_EAN);\n\nvar _EAN3 = require('./EAN8.js');\n\nvar _EAN4 = _interopRequireDefault(_EAN3);\n\nvar _EAN5 = require('./EAN5.js');\n\nvar _EAN6 = _interopRequireDefault(_EAN5);\n\nvar _EAN7 = require('./EAN2.js');\n\nvar _EAN8 = _interopRequireDefault(_EAN7);\n\nvar _UPC = require('./UPC.js');\n\nvar _UPC2 = _interopRequireDefault(_UPC);\n\nvar _UPCE = require('./UPCE.js');\n\nvar _UPCE2 = _interopRequireDefault(_UPCE);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.EAN13 = _EAN2.default;\nexports.EAN8 = _EAN4.default;\nexports.EAN5 = _EAN6.default;\nexports.EAN2 = _EAN8.default;\nexports.UPC = _UPC2.default;\nexports.UPCE = _UPCE2.default;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar START_BIN = exports.START_BIN = '1010';\nvar END_BIN = exports.END_BIN = '11101';\n\nvar BINARIES = exports.BINARIES = ['00110', '10001', '01001', '11000', '00101', '10100', '01100', '00011', '10010', '01010'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _constants = require('./constants');\n\nvar _Barcode2 = require('../Barcode');\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ITF = function (_Barcode) {\n\t_inherits(ITF, _Barcode);\n\n\tfunction ITF() {\n\t\t_classCallCheck(this, ITF);\n\n\t\treturn _possibleConstructorReturn(this, (ITF.__proto__ || Object.getPrototypeOf(ITF)).apply(this, arguments));\n\t}\n\n\t_createClass(ITF, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^([0-9]{2})+$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: 'encode',\n\t\tvalue: function encode() {\n\t\t\tvar _this2 = this;\n\n\t\t\t// Calculate all the digit pairs\n\t\t\tvar encoded = this.data.match(/.{2}/g).map(function (pair) {\n\t\t\t\treturn _this2.encodePair(pair);\n\t\t\t}).join('');\n\n\t\t\treturn {\n\t\t\t\tdata: _constants.START_BIN + encoded + _constants.END_BIN,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\n\t\t// Calculate the data of a number pair\n\n\t}, {\n\t\tkey: 'encodePair',\n\t\tvalue: function encodePair(pair) {\n\t\t\tvar second = _constants.BINARIES[pair[1]];\n\n\t\t\treturn _constants.BINARIES[pair[0]].split('').map(function (first, idx) {\n\t\t\t\treturn (first === '1' ? '111' : '1') + (second[idx] === '1' ? '000' : '0');\n\t\t\t}).join('');\n\t\t}\n\t}]);\n\n\treturn ITF;\n}(_Barcode3.default);\n\nexports.default = ITF;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _ITF2 = require('./ITF');\n\nvar _ITF3 = _interopRequireDefault(_ITF2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n// Calculate the checksum digit\nvar checksum = function checksum(data) {\n\tvar res = data.substr(0, 13).split('').map(function (num) {\n\t\treturn parseInt(num, 10);\n\t}).reduce(function (sum, n, idx) {\n\t\treturn sum + n * (3 - idx % 2 * 2);\n\t}, 0);\n\n\treturn Math.ceil(res / 10) * 10 - res;\n};\n\nvar ITF14 = function (_ITF) {\n\t_inherits(ITF14, _ITF);\n\n\tfunction ITF14(data, options) {\n\t\t_classCallCheck(this, ITF14);\n\n\t\t// Add checksum if it does not exist\n\t\tif (data.search(/^[0-9]{13}$/) !== -1) {\n\t\t\tdata += checksum(data);\n\t\t}\n\t\treturn _possibleConstructorReturn(this, (ITF14.__proto__ || Object.getPrototypeOf(ITF14)).call(this, data, options));\n\t}\n\n\t_createClass(ITF14, [{\n\t\tkey: 'valid',\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]{14}$/) !== -1 && +this.data[13] === checksum(this.data);\n\t\t}\n\t}]);\n\n\treturn ITF14;\n}(_ITF3.default);\n\nexports.default = ITF14;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ITF14 = exports.ITF = undefined;\n\nvar _ITF = require('./ITF');\n\nvar _ITF2 = _interopRequireDefault(_ITF);\n\nvar _ITF3 = require('./ITF14');\n\nvar _ITF4 = _interopRequireDefault(_ITF3);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.ITF = _ITF2.default;\nexports.ITF14 = _ITF4.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation\n// https://en.wikipedia.org/wiki/MSI_Barcode#Character_set_and_binary_lookup\n\nvar MSI = function (_Barcode) {\n\t_inherits(MSI, _Barcode);\n\n\tfunction MSI(data, options) {\n\t\t_classCallCheck(this, MSI);\n\n\t\treturn _possibleConstructorReturn(this, (MSI.__proto__ || Object.getPrototypeOf(MSI)).call(this, data, options));\n\t}\n\n\t_createClass(MSI, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\t// Start bits\n\t\t\tvar ret = \"110\";\n\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\t// Convert the character to binary (always 4 binary digits)\n\t\t\t\tvar digit = parseInt(this.data[i]);\n\t\t\t\tvar bin = digit.toString(2);\n\t\t\t\tbin = addZeroes(bin, 4 - bin.length);\n\n\t\t\t\t// Add 100 for every zero and 110 for every 1\n\t\t\t\tfor (var b = 0; b < bin.length; b++) {\n\t\t\t\t\tret += bin[b] == \"0\" ? \"100\" : \"110\";\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// End bits\n\t\t\tret += \"1001\";\n\n\t\t\treturn {\n\t\t\t\tdata: ret,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[0-9]+$/) !== -1;\n\t\t}\n\t}]);\n\n\treturn MSI;\n}(_Barcode3.default);\n\nfunction addZeroes(number, n) {\n\tfor (var i = 0; i < n; i++) {\n\t\tnumber = \"0\" + number;\n\t}\n\treturn number;\n}\n\nexports.default = MSI;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.mod10 = mod10;\nexports.mod11 = mod11;\nfunction mod10(number) {\n\tvar sum = 0;\n\tfor (var i = 0; i < number.length; i++) {\n\t\tvar n = parseInt(number[i]);\n\t\tif ((i + number.length) % 2 === 0) {\n\t\t\tsum += n;\n\t\t} else {\n\t\t\tsum += n * 2 % 10 + Math.floor(n * 2 / 10);\n\t\t}\n\t}\n\treturn (10 - sum % 10) % 10;\n}\n\nfunction mod11(number) {\n\tvar sum = 0;\n\tvar weights = [2, 3, 4, 5, 6, 7];\n\tfor (var i = 0; i < number.length; i++) {\n\t\tvar n = parseInt(number[number.length - 1 - i]);\n\t\tsum += weights[i % weights.length] * n;\n\t}\n\treturn (11 - sum % 11) % 11;\n}","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI10 = function (_MSI) {\n\t_inherits(MSI10, _MSI);\n\n\tfunction MSI10(data, options) {\n\t\t_classCallCheck(this, MSI10);\n\n\t\treturn _possibleConstructorReturn(this, (MSI10.__proto__ || Object.getPrototypeOf(MSI10)).call(this, data + (0, _checksums.mod10)(data), options));\n\t}\n\n\treturn MSI10;\n}(_MSI3.default);\n\nexports.default = MSI10;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI11 = function (_MSI) {\n\t_inherits(MSI11, _MSI);\n\n\tfunction MSI11(data, options) {\n\t\t_classCallCheck(this, MSI11);\n\n\t\treturn _possibleConstructorReturn(this, (MSI11.__proto__ || Object.getPrototypeOf(MSI11)).call(this, data + (0, _checksums.mod11)(data), options));\n\t}\n\n\treturn MSI11;\n}(_MSI3.default);\n\nexports.default = MSI11;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI1010 = function (_MSI) {\n\t_inherits(MSI1010, _MSI);\n\n\tfunction MSI1010(data, options) {\n\t\t_classCallCheck(this, MSI1010);\n\n\t\tdata += (0, _checksums.mod10)(data);\n\t\tdata += (0, _checksums.mod10)(data);\n\t\treturn _possibleConstructorReturn(this, (MSI1010.__proto__ || Object.getPrototypeOf(MSI1010)).call(this, data, options));\n\t}\n\n\treturn MSI1010;\n}(_MSI3.default);\n\nexports.default = MSI1010;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _MSI2 = require('./MSI.js');\n\nvar _MSI3 = _interopRequireDefault(_MSI2);\n\nvar _checksums = require('./checksums.js');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar MSI1110 = function (_MSI) {\n\t_inherits(MSI1110, _MSI);\n\n\tfunction MSI1110(data, options) {\n\t\t_classCallCheck(this, MSI1110);\n\n\t\tdata += (0, _checksums.mod11)(data);\n\t\tdata += (0, _checksums.mod10)(data);\n\t\treturn _possibleConstructorReturn(this, (MSI1110.__proto__ || Object.getPrototypeOf(MSI1110)).call(this, data, options));\n\t}\n\n\treturn MSI1110;\n}(_MSI3.default);\n\nexports.default = MSI1110;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MSI1110 = exports.MSI1010 = exports.MSI11 = exports.MSI10 = exports.MSI = undefined;\n\nvar _MSI = require('./MSI.js');\n\nvar _MSI2 = _interopRequireDefault(_MSI);\n\nvar _MSI3 = require('./MSI10.js');\n\nvar _MSI4 = _interopRequireDefault(_MSI3);\n\nvar _MSI5 = require('./MSI11.js');\n\nvar _MSI6 = _interopRequireDefault(_MSI5);\n\nvar _MSI7 = require('./MSI1010.js');\n\nvar _MSI8 = _interopRequireDefault(_MSI7);\n\nvar _MSI9 = require('./MSI1110.js');\n\nvar _MSI10 = _interopRequireDefault(_MSI9);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.MSI = _MSI2.default;\nexports.MSI10 = _MSI4.default;\nexports.MSI11 = _MSI6.default;\nexports.MSI1010 = _MSI8.default;\nexports.MSI1110 = _MSI10.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.pharmacode = undefined;\n\nvar _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\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding documentation\n// http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf\n\nvar pharmacode = function (_Barcode) {\n\t_inherits(pharmacode, _Barcode);\n\n\tfunction pharmacode(data, options) {\n\t\t_classCallCheck(this, pharmacode);\n\n\t\tvar _this = _possibleConstructorReturn(this, (pharmacode.__proto__ || Object.getPrototypeOf(pharmacode)).call(this, data, options));\n\n\t\t_this.number = parseInt(data, 10);\n\t\treturn _this;\n\t}\n\n\t_createClass(pharmacode, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tvar z = this.number;\n\t\t\tvar result = \"\";\n\n\t\t\t// http://i.imgur.com/RMm4UDJ.png\n\t\t\t// (source: http://www.gomaro.ch/ftproot/Laetus_PHARMA-CODE.pdf, page: 34)\n\t\t\twhile (!isNaN(z) && z != 0) {\n\t\t\t\tif (z % 2 === 0) {\n\t\t\t\t\t// Even\n\t\t\t\t\tresult = \"11100\" + result;\n\t\t\t\t\tz = (z - 2) / 2;\n\t\t\t\t} else {\n\t\t\t\t\t// Odd\n\t\t\t\t\tresult = \"100\" + result;\n\t\t\t\t\tz = (z - 1) / 2;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove the two last zeroes\n\t\t\tresult = result.slice(0, -2);\n\n\t\t\treturn {\n\t\t\t\tdata: result,\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.number >= 3 && this.number <= 131070;\n\t\t}\n\t}]);\n\n\treturn pharmacode;\n}(_Barcode3.default);\n\nexports.pharmacode = pharmacode;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.codabar = undefined;\n\nvar _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\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } // Encoding specification:\n// http://www.barcodeisland.com/codabar.phtml\n\nvar codabar = function (_Barcode) {\n\t_inherits(codabar, _Barcode);\n\n\tfunction codabar(data, options) {\n\t\t_classCallCheck(this, codabar);\n\n\t\tif (data.search(/^[0-9\\-\\$\\:\\.\\+\\/]+$/) === 0) {\n\t\t\tdata = \"A\" + data + \"A\";\n\t\t}\n\n\t\tvar _this = _possibleConstructorReturn(this, (codabar.__proto__ || Object.getPrototypeOf(codabar)).call(this, data.toUpperCase(), options));\n\n\t\t_this.text = _this.options.text || _this.text.replace(/[A-D]/g, '');\n\t\treturn _this;\n\t}\n\n\t_createClass(codabar, [{\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn this.data.search(/^[A-D][0-9\\-\\$\\:\\.\\+\\/]+[A-D]$/) !== -1;\n\t\t}\n\t}, {\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\tvar result = [];\n\t\t\tvar encodings = this.getEncodings();\n\t\t\tfor (var i = 0; i < this.data.length; i++) {\n\t\t\t\tresult.push(encodings[this.data.charAt(i)]);\n\t\t\t\t// for all characters except the last, append a narrow-space (\"0\")\n\t\t\t\tif (i !== this.data.length - 1) {\n\t\t\t\t\tresult.push(\"0\");\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn {\n\t\t\t\ttext: this.text,\n\t\t\t\tdata: result.join('')\n\t\t\t};\n\t\t}\n\t}, {\n\t\tkey: \"getEncodings\",\n\t\tvalue: function getEncodings() {\n\t\t\treturn {\n\t\t\t\t\"0\": \"101010011\",\n\t\t\t\t\"1\": \"101011001\",\n\t\t\t\t\"2\": \"101001011\",\n\t\t\t\t\"3\": \"110010101\",\n\t\t\t\t\"4\": \"101101001\",\n\t\t\t\t\"5\": \"110101001\",\n\t\t\t\t\"6\": \"100101011\",\n\t\t\t\t\"7\": \"100101101\",\n\t\t\t\t\"8\": \"100110101\",\n\t\t\t\t\"9\": \"110100101\",\n\t\t\t\t\"-\": \"101001101\",\n\t\t\t\t\"$\": \"101100101\",\n\t\t\t\t\":\": \"1101011011\",\n\t\t\t\t\"/\": \"1101101011\",\n\t\t\t\t\".\": \"1101101101\",\n\t\t\t\t\"+\": \"101100110011\",\n\t\t\t\t\"A\": \"1011001001\",\n\t\t\t\t\"B\": \"1001001011\",\n\t\t\t\t\"C\": \"1010010011\",\n\t\t\t\t\"D\": \"1010011001\"\n\t\t\t};\n\t\t}\n\t}]);\n\n\treturn codabar;\n}(_Barcode3.default);\n\nexports.codabar = codabar;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.GenericBarcode = undefined;\n\nvar _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\nvar _Barcode2 = require(\"../Barcode.js\");\n\nvar _Barcode3 = _interopRequireDefault(_Barcode2);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar GenericBarcode = function (_Barcode) {\n\t_inherits(GenericBarcode, _Barcode);\n\n\tfunction GenericBarcode(data, options) {\n\t\t_classCallCheck(this, GenericBarcode);\n\n\t\treturn _possibleConstructorReturn(this, (GenericBarcode.__proto__ || Object.getPrototypeOf(GenericBarcode)).call(this, data, options)); // Sets this.data and this.text\n\t}\n\n\t// Return the corresponding binary numbers for the data provided\n\n\n\t_createClass(GenericBarcode, [{\n\t\tkey: \"encode\",\n\t\tvalue: function encode() {\n\t\t\treturn {\n\t\t\t\tdata: \"10101010101010101010101010101010101010101\",\n\t\t\t\ttext: this.text\n\t\t\t};\n\t\t}\n\n\t\t// Resturn true/false if the string provided is valid for this encoder\n\n\t}, {\n\t\tkey: \"valid\",\n\t\tvalue: function valid() {\n\t\t\treturn true;\n\t\t}\n\t}]);\n\n\treturn GenericBarcode;\n}(_Barcode3.default);\n\nexports.GenericBarcode = GenericBarcode;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _CODE = require('./CODE39/');\n\nvar _CODE2 = require('./CODE128/');\n\nvar _EAN_UPC = require('./EAN_UPC/');\n\nvar _ITF = require('./ITF/');\n\nvar _MSI = require('./MSI/');\n\nvar _pharmacode = require('./pharmacode/');\n\nvar _codabar = require('./codabar');\n\nvar _GenericBarcode = require('./GenericBarcode/');\n\nexports.default = {\n\tCODE39: _CODE.CODE39,\n\tCODE128: _CODE2.CODE128, CODE128A: _CODE2.CODE128A, CODE128B: _CODE2.CODE128B, CODE128C: _CODE2.CODE128C,\n\tEAN13: _EAN_UPC.EAN13, EAN8: _EAN_UPC.EAN8, EAN5: _EAN_UPC.EAN5, EAN2: _EAN_UPC.EAN2, UPC: _EAN_UPC.UPC, UPCE: _EAN_UPC.UPCE,\n\tITF14: _ITF.ITF14,\n\tITF: _ITF.ITF,\n\tMSI: _MSI.MSI, MSI10: _MSI.MSI10, MSI11: _MSI.MSI11, MSI1010: _MSI.MSI1010, MSI1110: _MSI.MSI1110,\n\tpharmacode: _pharmacode.pharmacode,\n\tcodabar: _codabar.codabar,\n\tGenericBarcode: _GenericBarcode.GenericBarcode\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _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\nexports.default = function (old, replaceObj) {\n return _extends({}, old, replaceObj);\n};","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = linearizeEncodings;\n\n// Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2]\n// Convert to [1-1, 1-2, 2, 3-1, 3-2]\n\nfunction linearizeEncodings(encodings) {\n\tvar linearEncodings = [];\n\tfunction nextLevel(encoded) {\n\t\tif (Array.isArray(encoded)) {\n\t\t\tfor (var i = 0; i < encoded.length; i++) {\n\t\t\t\tnextLevel(encoded[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tencoded.text = encoded.text || \"\";\n\t\t\tencoded.data = encoded.data || \"\";\n\t\t\tlinearEncodings.push(encoded);\n\t\t}\n\t}\n\tnextLevel(encodings);\n\n\treturn linearEncodings;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = fixOptions;\n\n\nfunction fixOptions(options) {\n\t// Fix the margins\n\toptions.marginTop = options.marginTop || options.margin;\n\toptions.marginBottom = options.marginBottom || options.margin;\n\toptions.marginRight = options.marginRight || options.margin;\n\toptions.marginLeft = options.marginLeft || options.margin;\n\n\treturn options;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.default = optionsFromStrings;\n\n// Convert string to integers/booleans where it should be\n\nfunction optionsFromStrings(options) {\n\tvar intOptions = [\"width\", \"height\", \"textMargin\", \"fontSize\", \"margin\", \"marginTop\", \"marginBottom\", \"marginLeft\", \"marginRight\"];\n\n\tfor (var intOption in intOptions) {\n\t\tif (intOptions.hasOwnProperty(intOption)) {\n\t\t\tintOption = intOptions[intOption];\n\t\t\tif (typeof options[intOption] === \"string\") {\n\t\t\t\toptions[intOption] = parseInt(options[intOption], 10);\n\t\t\t}\n\t\t}\n\t}\n\n\tif (typeof options[\"displayValue\"] === \"string\") {\n\t\toptions[\"displayValue\"] = options[\"displayValue\"] != \"false\";\n\t}\n\n\treturn options;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nvar defaults = {\n\twidth: 2,\n\theight: 100,\n\tformat: \"auto\",\n\tdisplayValue: true,\n\tfontOptions: \"\",\n\tfont: \"monospace\",\n\ttext: undefined,\n\ttextAlign: \"center\",\n\ttextPosition: \"bottom\",\n\ttextMargin: 2,\n\tfontSize: 20,\n\tbackground: \"#ffffff\",\n\tlineColor: \"#000000\",\n\tmargin: 10,\n\tmarginTop: undefined,\n\tmarginBottom: undefined,\n\tmarginLeft: undefined,\n\tmarginRight: undefined,\n\tvalid: function valid() {}\n};\n\nexports.default = defaults;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _optionsFromStrings = require(\"./optionsFromStrings.js\");\n\nvar _optionsFromStrings2 = _interopRequireDefault(_optionsFromStrings);\n\nvar _defaults = require(\"../options/defaults.js\");\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getOptionsFromElement(element) {\n\tvar options = {};\n\tfor (var property in _defaults2.default) {\n\t\tif (_defaults2.default.hasOwnProperty(property)) {\n\t\t\t// jsbarcode-*\n\t\t\tif (element.hasAttribute(\"jsbarcode-\" + property.toLowerCase())) {\n\t\t\t\toptions[property] = element.getAttribute(\"jsbarcode-\" + property.toLowerCase());\n\t\t\t}\n\n\t\t\t// data-*\n\t\t\tif (element.hasAttribute(\"data-\" + property.toLowerCase())) {\n\t\t\t\toptions[property] = element.getAttribute(\"data-\" + property.toLowerCase());\n\t\t\t}\n\t\t}\n\t}\n\n\toptions[\"value\"] = element.getAttribute(\"jsbarcode-value\") || element.getAttribute(\"data-value\");\n\n\t// Since all atributes are string they need to be converted to integers\n\toptions = (0, _optionsFromStrings2.default)(options);\n\n\treturn options;\n}\n\nexports.default = getOptionsFromElement;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\nexports.getTotalWidthOfEncodings = exports.calculateEncodingAttributes = exports.getBarcodePadding = exports.getEncodingHeight = exports.getMaximumHeightOfEncodings = undefined;\n\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction getEncodingHeight(encoding, options) {\n\treturn options.height + (options.displayValue && encoding.text.length > 0 ? options.fontSize + options.textMargin : 0) + options.marginTop + options.marginBottom;\n}\n\nfunction getBarcodePadding(textWidth, barcodeWidth, options) {\n\tif (options.displayValue && barcodeWidth < textWidth) {\n\t\tif (options.textAlign == \"center\") {\n\t\t\treturn Math.floor((textWidth - barcodeWidth) / 2);\n\t\t} else if (options.textAlign == \"left\") {\n\t\t\treturn 0;\n\t\t} else if (options.textAlign == \"right\") {\n\t\t\treturn Math.floor(textWidth - barcodeWidth);\n\t\t}\n\t}\n\treturn 0;\n}\n\nfunction calculateEncodingAttributes(encodings, barcodeOptions, context) {\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tvar encoding = encodings[i];\n\t\tvar options = (0, _merge2.default)(barcodeOptions, encoding.options);\n\n\t\t// Calculate the width of the encoding\n\t\tvar textWidth;\n\t\tif (options.displayValue) {\n\t\t\ttextWidth = messureText(encoding.text, options, context);\n\t\t} else {\n\t\t\ttextWidth = 0;\n\t\t}\n\n\t\tvar barcodeWidth = encoding.data.length * options.width;\n\t\tencoding.width = Math.ceil(Math.max(textWidth, barcodeWidth));\n\n\t\tencoding.height = getEncodingHeight(encoding, options);\n\n\t\tencoding.barcodePadding = getBarcodePadding(textWidth, barcodeWidth, options);\n\t}\n}\n\nfunction getTotalWidthOfEncodings(encodings) {\n\tvar totalWidth = 0;\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\ttotalWidth += encodings[i].width;\n\t}\n\treturn totalWidth;\n}\n\nfunction getMaximumHeightOfEncodings(encodings) {\n\tvar maxHeight = 0;\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tif (encodings[i].height > maxHeight) {\n\t\t\tmaxHeight = encodings[i].height;\n\t\t}\n\t}\n\treturn maxHeight;\n}\n\nfunction messureText(string, options, context) {\n\tvar ctx;\n\n\tif (context) {\n\t\tctx = context;\n\t} else if (typeof document !== \"undefined\") {\n\t\tctx = document.createElement(\"canvas\").getContext(\"2d\");\n\t} else {\n\t\t// If the text cannot be messured we will return 0.\n\t\t// This will make some barcode with big text render incorrectly\n\t\treturn 0;\n\t}\n\tctx.font = options.fontOptions + \" \" + options.fontSize + \"px \" + options.font;\n\n\t// Calculate the width of the encoding\n\tvar size = ctx.measureText(string).width;\n\n\treturn size;\n}\n\nexports.getMaximumHeightOfEncodings = getMaximumHeightOfEncodings;\nexports.getEncodingHeight = getEncodingHeight;\nexports.getBarcodePadding = getBarcodePadding;\nexports.calculateEncodingAttributes = calculateEncodingAttributes;\nexports.getTotalWidthOfEncodings = getTotalWidthOfEncodings;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _shared = require(\"./shared.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar CanvasRenderer = function () {\n\tfunction CanvasRenderer(canvas, encodings, options) {\n\t\t_classCallCheck(this, CanvasRenderer);\n\n\t\tthis.canvas = canvas;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t}\n\n\t_createClass(CanvasRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\t// Abort if the browser does not support HTML5 canvas\n\t\t\tif (!this.canvas.getContext) {\n\t\t\t\tthrow new Error('The browser does not support canvas.');\n\t\t\t}\n\n\t\t\tthis.prepareCanvas();\n\t\t\tfor (var i = 0; i < this.encodings.length; i++) {\n\t\t\t\tvar encodingOptions = (0, _merge2.default)(this.options, this.encodings[i].options);\n\n\t\t\t\tthis.drawCanvasBarcode(encodingOptions, this.encodings[i]);\n\t\t\t\tthis.drawCanvasText(encodingOptions, this.encodings[i]);\n\n\t\t\t\tthis.moveCanvasDrawing(this.encodings[i]);\n\t\t\t}\n\n\t\t\tthis.restoreCanvas();\n\t\t}\n\t}, {\n\t\tkey: \"prepareCanvas\",\n\t\tvalue: function prepareCanvas() {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.save();\n\n\t\t\t(0, _shared.calculateEncodingAttributes)(this.encodings, this.options, ctx);\n\t\t\tvar totalWidth = (0, _shared.getTotalWidthOfEncodings)(this.encodings);\n\t\t\tvar maxHeight = (0, _shared.getMaximumHeightOfEncodings)(this.encodings);\n\n\t\t\tthis.canvas.width = totalWidth + this.options.marginLeft + this.options.marginRight;\n\n\t\t\tthis.canvas.height = maxHeight;\n\n\t\t\t// Paint the canvas\n\t\t\tctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n\t\t\tif (this.options.background) {\n\t\t\t\tctx.fillStyle = this.options.background;\n\t\t\t\tctx.fillRect(0, 0, this.canvas.width, this.canvas.height);\n\t\t\t}\n\n\t\t\tctx.translate(this.options.marginLeft, 0);\n\t\t}\n\t}, {\n\t\tkey: \"drawCanvasBarcode\",\n\t\tvalue: function drawCanvasBarcode(options, encoding) {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tvar binary = encoding.data;\n\n\t\t\t// Creates the barcode out of the encoded binary\n\t\t\tvar yFrom;\n\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\tyFrom = options.marginTop + options.fontSize + options.textMargin;\n\t\t\t} else {\n\t\t\t\tyFrom = options.marginTop;\n\t\t\t}\n\n\t\t\tctx.fillStyle = options.lineColor;\n\n\t\t\tfor (var b = 0; b < binary.length; b++) {\n\t\t\t\tvar x = b * options.width + encoding.barcodePadding;\n\n\t\t\t\tif (binary[b] === \"1\") {\n\t\t\t\t\tctx.fillRect(x, yFrom, options.width, options.height);\n\t\t\t\t} else if (binary[b]) {\n\t\t\t\t\tctx.fillRect(x, yFrom, options.width, options.height * binary[b]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawCanvasText\",\n\t\tvalue: function drawCanvasText(options, encoding) {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tvar font = options.fontOptions + \" \" + options.fontSize + \"px \" + options.font;\n\n\t\t\t// Draw the text if displayValue is set\n\t\t\tif (options.displayValue) {\n\t\t\t\tvar x, y;\n\n\t\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\t\ty = options.marginTop + options.fontSize - options.textMargin;\n\t\t\t\t} else {\n\t\t\t\t\ty = options.height + options.textMargin + options.marginTop + options.fontSize;\n\t\t\t\t}\n\n\t\t\t\tctx.font = font;\n\n\t\t\t\t// Draw the text in the correct X depending on the textAlign option\n\t\t\t\tif (options.textAlign == \"left\" || encoding.barcodePadding > 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\tctx.textAlign = 'left';\n\t\t\t\t} else if (options.textAlign == \"right\") {\n\t\t\t\t\tx = encoding.width - 1;\n\t\t\t\t\tctx.textAlign = 'right';\n\t\t\t\t}\n\t\t\t\t// In all other cases, center the text\n\t\t\t\telse {\n\t\t\t\t\t\tx = encoding.width / 2;\n\t\t\t\t\t\tctx.textAlign = 'center';\n\t\t\t\t\t}\n\n\t\t\t\tctx.fillText(encoding.text, x, y);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"moveCanvasDrawing\",\n\t\tvalue: function moveCanvasDrawing(encoding) {\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.translate(encoding.width, 0);\n\t\t}\n\t}, {\n\t\tkey: \"restoreCanvas\",\n\t\tvalue: function restoreCanvas() {\n\t\t\t// Get the canvas context\n\t\t\tvar ctx = this.canvas.getContext(\"2d\");\n\n\t\t\tctx.restore();\n\t\t}\n\t}]);\n\n\treturn CanvasRenderer;\n}();\n\nexports.default = CanvasRenderer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nvar _merge = require(\"../help/merge.js\");\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _shared = require(\"./shared.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar svgns = \"http://www.w3.org/2000/svg\";\n\nvar SVGRenderer = function () {\n\tfunction SVGRenderer(svg, encodings, options) {\n\t\t_classCallCheck(this, SVGRenderer);\n\n\t\tthis.svg = svg;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t\tthis.document = options.xmlDocument || document;\n\t}\n\n\t_createClass(SVGRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tvar currentX = this.options.marginLeft;\n\n\t\t\tthis.prepareSVG();\n\t\t\tfor (var i = 0; i < this.encodings.length; i++) {\n\t\t\t\tvar encoding = this.encodings[i];\n\t\t\t\tvar encodingOptions = (0, _merge2.default)(this.options, encoding.options);\n\n\t\t\t\tvar group = this.createGroup(currentX, encodingOptions.marginTop, this.svg);\n\n\t\t\t\tthis.setGroupOptions(group, encodingOptions);\n\n\t\t\t\tthis.drawSvgBarcode(group, encodingOptions, encoding);\n\t\t\t\tthis.drawSVGText(group, encodingOptions, encoding);\n\n\t\t\t\tcurrentX += encoding.width;\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"prepareSVG\",\n\t\tvalue: function prepareSVG() {\n\t\t\t// Clear the SVG\n\t\t\twhile (this.svg.firstChild) {\n\t\t\t\tthis.svg.removeChild(this.svg.firstChild);\n\t\t\t}\n\n\t\t\t(0, _shared.calculateEncodingAttributes)(this.encodings, this.options);\n\t\t\tvar totalWidth = (0, _shared.getTotalWidthOfEncodings)(this.encodings);\n\t\t\tvar maxHeight = (0, _shared.getMaximumHeightOfEncodings)(this.encodings);\n\n\t\t\tvar width = totalWidth + this.options.marginLeft + this.options.marginRight;\n\t\t\tthis.setSvgAttributes(width, maxHeight);\n\n\t\t\tif (this.options.background) {\n\t\t\t\tthis.drawRect(0, 0, width, maxHeight, this.svg).setAttribute(\"style\", \"fill:\" + this.options.background + \";\");\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawSvgBarcode\",\n\t\tvalue: function drawSvgBarcode(parent, options, encoding) {\n\t\t\tvar binary = encoding.data;\n\n\t\t\t// Creates the barcode out of the encoded binary\n\t\t\tvar yFrom;\n\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\tyFrom = options.fontSize + options.textMargin;\n\t\t\t} else {\n\t\t\t\tyFrom = 0;\n\t\t\t}\n\n\t\t\tvar barWidth = 0;\n\t\t\tvar x = 0;\n\t\t\tfor (var b = 0; b < binary.length; b++) {\n\t\t\t\tx = b * options.width + encoding.barcodePadding;\n\n\t\t\t\tif (binary[b] === \"1\") {\n\t\t\t\t\tbarWidth++;\n\t\t\t\t} else if (barWidth > 0) {\n\t\t\t\t\tthis.drawRect(x - options.width * barWidth, yFrom, options.width * barWidth, options.height, parent);\n\t\t\t\t\tbarWidth = 0;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Last draw is needed since the barcode ends with 1\n\t\t\tif (barWidth > 0) {\n\t\t\t\tthis.drawRect(x - options.width * (barWidth - 1), yFrom, options.width * barWidth, options.height, parent);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"drawSVGText\",\n\t\tvalue: function drawSVGText(parent, options, encoding) {\n\t\t\tvar textElem = this.document.createElementNS(svgns, 'text');\n\n\t\t\t// Draw the text if displayValue is set\n\t\t\tif (options.displayValue) {\n\t\t\t\tvar x, y;\n\n\t\t\t\ttextElem.setAttribute(\"style\", \"font:\" + options.fontOptions + \" \" + options.fontSize + \"px \" + options.font);\n\n\t\t\t\tif (options.textPosition == \"top\") {\n\t\t\t\t\ty = options.fontSize - options.textMargin;\n\t\t\t\t} else {\n\t\t\t\t\ty = options.height + options.textMargin + options.fontSize;\n\t\t\t\t}\n\n\t\t\t\t// Draw the text in the correct X depending on the textAlign option\n\t\t\t\tif (options.textAlign == \"left\" || encoding.barcodePadding > 0) {\n\t\t\t\t\tx = 0;\n\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"start\");\n\t\t\t\t} else if (options.textAlign == \"right\") {\n\t\t\t\t\tx = encoding.width - 1;\n\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"end\");\n\t\t\t\t}\n\t\t\t\t// In all other cases, center the text\n\t\t\t\telse {\n\t\t\t\t\t\tx = encoding.width / 2;\n\t\t\t\t\t\ttextElem.setAttribute(\"text-anchor\", \"middle\");\n\t\t\t\t\t}\n\n\t\t\t\ttextElem.setAttribute(\"x\", x);\n\t\t\t\ttextElem.setAttribute(\"y\", y);\n\n\t\t\t\ttextElem.appendChild(this.document.createTextNode(encoding.text));\n\n\t\t\t\tparent.appendChild(textElem);\n\t\t\t}\n\t\t}\n\t}, {\n\t\tkey: \"setSvgAttributes\",\n\t\tvalue: function setSvgAttributes(width, height) {\n\t\t\tvar svg = this.svg;\n\t\t\tsvg.setAttribute(\"width\", width + \"px\");\n\t\t\tsvg.setAttribute(\"height\", height + \"px\");\n\t\t\tsvg.setAttribute(\"x\", \"0px\");\n\t\t\tsvg.setAttribute(\"y\", \"0px\");\n\t\t\tsvg.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n\n\t\t\tsvg.setAttribute(\"xmlns\", svgns);\n\t\t\tsvg.setAttribute(\"version\", \"1.1\");\n\n\t\t\tsvg.setAttribute(\"style\", \"transform: translate(0,0)\");\n\t\t}\n\t}, {\n\t\tkey: \"createGroup\",\n\t\tvalue: function createGroup(x, y, parent) {\n\t\t\tvar group = this.document.createElementNS(svgns, 'g');\n\t\t\tgroup.setAttribute(\"transform\", \"translate(\" + x + \", \" + y + \")\");\n\n\t\t\tparent.appendChild(group);\n\n\t\t\treturn group;\n\t\t}\n\t}, {\n\t\tkey: \"setGroupOptions\",\n\t\tvalue: function setGroupOptions(group, options) {\n\t\t\tgroup.setAttribute(\"style\", \"fill:\" + options.lineColor + \";\");\n\t\t}\n\t}, {\n\t\tkey: \"drawRect\",\n\t\tvalue: function drawRect(x, y, width, height, parent) {\n\t\t\tvar rect = this.document.createElementNS(svgns, 'rect');\n\n\t\t\trect.setAttribute(\"x\", x);\n\t\t\trect.setAttribute(\"y\", y);\n\t\t\trect.setAttribute(\"width\", width);\n\t\t\trect.setAttribute(\"height\", height);\n\n\t\t\tparent.appendChild(rect);\n\n\t\t\treturn rect;\n\t\t}\n\t}]);\n\n\treturn SVGRenderer;\n}();\n\nexports.default = SVGRenderer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ObjectRenderer = function () {\n\tfunction ObjectRenderer(object, encodings, options) {\n\t\t_classCallCheck(this, ObjectRenderer);\n\n\t\tthis.object = object;\n\t\tthis.encodings = encodings;\n\t\tthis.options = options;\n\t}\n\n\t_createClass(ObjectRenderer, [{\n\t\tkey: \"render\",\n\t\tvalue: function render() {\n\t\t\tthis.object.encodings = this.encodings;\n\t\t}\n\t}]);\n\n\treturn ObjectRenderer;\n}();\n\nexports.default = ObjectRenderer;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _canvas = require('./canvas.js');\n\nvar _canvas2 = _interopRequireDefault(_canvas);\n\nvar _svg = require('./svg.js');\n\nvar _svg2 = _interopRequireDefault(_svg);\n\nvar _object = require('./object.js');\n\nvar _object2 = _interopRequireDefault(_object);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nexports.default = { CanvasRenderer: _canvas2.default, SVGRenderer: _svg2.default, ObjectRenderer: _object2.default };","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar InvalidInputException = function (_Error) {\n\t_inherits(InvalidInputException, _Error);\n\n\tfunction InvalidInputException(symbology, input) {\n\t\t_classCallCheck(this, InvalidInputException);\n\n\t\tvar _this = _possibleConstructorReturn(this, (InvalidInputException.__proto__ || Object.getPrototypeOf(InvalidInputException)).call(this));\n\n\t\t_this.name = \"InvalidInputException\";\n\n\t\t_this.symbology = symbology;\n\t\t_this.input = input;\n\n\t\t_this.message = '\"' + _this.input + '\" is not a valid input for ' + _this.symbology;\n\t\treturn _this;\n\t}\n\n\treturn InvalidInputException;\n}(Error);\n\nvar InvalidElementException = function (_Error2) {\n\t_inherits(InvalidElementException, _Error2);\n\n\tfunction InvalidElementException() {\n\t\t_classCallCheck(this, InvalidElementException);\n\n\t\tvar _this2 = _possibleConstructorReturn(this, (InvalidElementException.__proto__ || Object.getPrototypeOf(InvalidElementException)).call(this));\n\n\t\t_this2.name = \"InvalidElementException\";\n\t\t_this2.message = \"Not supported type to render on\";\n\t\treturn _this2;\n\t}\n\n\treturn InvalidElementException;\n}(Error);\n\nvar NoElementException = function (_Error3) {\n\t_inherits(NoElementException, _Error3);\n\n\tfunction NoElementException() {\n\t\t_classCallCheck(this, NoElementException);\n\n\t\tvar _this3 = _possibleConstructorReturn(this, (NoElementException.__proto__ || Object.getPrototypeOf(NoElementException)).call(this));\n\n\t\t_this3.name = \"NoElementException\";\n\t\t_this3.message = \"No element to render on.\";\n\t\treturn _this3;\n\t}\n\n\treturn NoElementException;\n}(Error);\n\nexports.InvalidInputException = InvalidInputException;\nexports.InvalidElementException = InvalidElementException;\nexports.NoElementException = NoElementException;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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; }; /* global HTMLImageElement */\n/* global HTMLCanvasElement */\n/* global SVGElement */\n\nvar _getOptionsFromElement = require(\"./getOptionsFromElement.js\");\n\nvar _getOptionsFromElement2 = _interopRequireDefault(_getOptionsFromElement);\n\nvar _renderers = require(\"../renderers\");\n\nvar _renderers2 = _interopRequireDefault(_renderers);\n\nvar _exceptions = require(\"../exceptions/exceptions.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// Takes an element and returns an object with information about how\n// it should be rendered\n// This could also return an array with these objects\n// {\n// element: The element that the renderer should draw on\n// renderer: The name of the renderer\n// afterRender (optional): If something has to done after the renderer\n// completed, calls afterRender (function)\n// options (optional): Options that can be defined in the element\n// }\n\nfunction getRenderProperties(element) {\n\t// If the element is a string, query select call again\n\tif (typeof element === \"string\") {\n\t\treturn querySelectedRenderProperties(element);\n\t}\n\t// If element is array. Recursivly call with every object in the array\n\telse if (Array.isArray(element)) {\n\t\t\tvar returnArray = [];\n\t\t\tfor (var i = 0; i < element.length; i++) {\n\t\t\t\treturnArray.push(getRenderProperties(element[i]));\n\t\t\t}\n\t\t\treturn returnArray;\n\t\t}\n\t\t// If element, render on canvas and set the uri as src\n\t\telse if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLImageElement) {\n\t\t\t\treturn newCanvasRenderProperties(element);\n\t\t\t}\n\t\t\t// If SVG\n\t\t\telse if (element && element.nodeName === 'svg' || typeof SVGElement !== 'undefined' && element instanceof SVGElement) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\telement: element,\n\t\t\t\t\t\toptions: (0, _getOptionsFromElement2.default)(element),\n\t\t\t\t\t\trenderer: _renderers2.default.SVGRenderer\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\t// If canvas (in browser)\n\t\t\t\telse if (typeof HTMLCanvasElement !== 'undefined' && element instanceof HTMLCanvasElement) {\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\toptions: (0, _getOptionsFromElement2.default)(element),\n\t\t\t\t\t\t\trenderer: _renderers2.default.CanvasRenderer\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\t\t\t\t\t// If canvas (in node)\n\t\t\t\t\telse if (element && element.getContext) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\trenderer: _renderers2.default.CanvasRenderer\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else if (element && (typeof element === \"undefined\" ? \"undefined\" : _typeof(element)) === 'object' && !element.nodeName) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\telement: element,\n\t\t\t\t\t\t\t\trenderer: _renderers2.default.ObjectRenderer\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tthrow new _exceptions.InvalidElementException();\n\t\t\t\t\t\t}\n}\n\nfunction querySelectedRenderProperties(string) {\n\tvar selector = document.querySelectorAll(string);\n\tif (selector.length === 0) {\n\t\treturn undefined;\n\t} else {\n\t\tvar returnArray = [];\n\t\tfor (var i = 0; i < selector.length; i++) {\n\t\t\treturnArray.push(getRenderProperties(selector[i]));\n\t\t}\n\t\treturn returnArray;\n\t}\n}\n\nfunction newCanvasRenderProperties(imgElement) {\n\tvar canvas = document.createElement('canvas');\n\treturn {\n\t\telement: canvas,\n\t\toptions: (0, _getOptionsFromElement2.default)(imgElement),\n\t\trenderer: _renderers2.default.CanvasRenderer,\n\t\tafterRender: function afterRender() {\n\t\t\timgElement.setAttribute(\"src\", canvas.toDataURL());\n\t\t}\n\t};\n}\n\nexports.default = getRenderProperties;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n\tvalue: true\n});\n\nvar _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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/*eslint no-console: 0 */\n\nvar ErrorHandler = function () {\n\tfunction ErrorHandler(api) {\n\t\t_classCallCheck(this, ErrorHandler);\n\n\t\tthis.api = api;\n\t}\n\n\t_createClass(ErrorHandler, [{\n\t\tkey: \"handleCatch\",\n\t\tvalue: function handleCatch(e) {\n\t\t\t// If babel supported extending of Error in a correct way instanceof would be used here\n\t\t\tif (e.name === \"InvalidInputException\") {\n\t\t\t\tif (this.api._options.valid !== this.api._defaults.valid) {\n\t\t\t\t\tthis.api._options.valid(false);\n\t\t\t\t} else {\n\t\t\t\t\tthrow e.message;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tthrow e;\n\t\t\t}\n\n\t\t\tthis.api.render = function () {};\n\t\t}\n\t}, {\n\t\tkey: \"wrapBarcodeCall\",\n\t\tvalue: function wrapBarcodeCall(func) {\n\t\t\ttry {\n\t\t\t\tvar result = func.apply(undefined, arguments);\n\t\t\t\tthis.api._options.valid(true);\n\t\t\t\treturn result;\n\t\t\t} catch (e) {\n\t\t\t\tthis.handleCatch(e);\n\n\t\t\t\treturn this.api;\n\t\t\t}\n\t\t}\n\t}]);\n\n\treturn ErrorHandler;\n}();\n\nexports.default = ErrorHandler;","'use strict';\n\nvar _barcodes = require('./barcodes/');\n\nvar _barcodes2 = _interopRequireDefault(_barcodes);\n\nvar _merge = require('./help/merge.js');\n\nvar _merge2 = _interopRequireDefault(_merge);\n\nvar _linearizeEncodings = require('./help/linearizeEncodings.js');\n\nvar _linearizeEncodings2 = _interopRequireDefault(_linearizeEncodings);\n\nvar _fixOptions = require('./help/fixOptions.js');\n\nvar _fixOptions2 = _interopRequireDefault(_fixOptions);\n\nvar _getRenderProperties = require('./help/getRenderProperties.js');\n\nvar _getRenderProperties2 = _interopRequireDefault(_getRenderProperties);\n\nvar _optionsFromStrings = require('./help/optionsFromStrings.js');\n\nvar _optionsFromStrings2 = _interopRequireDefault(_optionsFromStrings);\n\nvar _ErrorHandler = require('./exceptions/ErrorHandler.js');\n\nvar _ErrorHandler2 = _interopRequireDefault(_ErrorHandler);\n\nvar _exceptions = require('./exceptions/exceptions.js');\n\nvar _defaults = require('./options/defaults.js');\n\nvar _defaults2 = _interopRequireDefault(_defaults);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// The protype of the object returned from the JsBarcode() call\n\n\n// Help functions\nvar API = function API() {};\n\n// The first call of the library API\n// Will return an object with all barcodes calls and the data that is used\n// by the renderers\n\n\n// Default values\n\n\n// Exceptions\n// Import all the barcodes\nvar JsBarcode = function JsBarcode(element, text, options) {\n\tvar api = new API();\n\n\tif (typeof element === \"undefined\") {\n\t\tthrow Error(\"No element to render on was provided.\");\n\t}\n\n\t// Variables that will be pased through the API calls\n\tapi._renderProperties = (0, _getRenderProperties2.default)(element);\n\tapi._encodings = [];\n\tapi._options = _defaults2.default;\n\tapi._errorHandler = new _ErrorHandler2.default(api);\n\n\t// If text is set, use the simple syntax (render the barcode directly)\n\tif (typeof text !== \"undefined\") {\n\t\toptions = options || {};\n\n\t\tif (!options.format) {\n\t\t\toptions.format = autoSelectBarcode();\n\t\t}\n\n\t\tapi.options(options)[options.format](text, options).render();\n\t}\n\n\treturn api;\n};\n\n// To make tests work TODO: remove\nJsBarcode.getModule = function (name) {\n\treturn _barcodes2.default[name];\n};\n\n// Register all barcodes\nfor (var name in _barcodes2.default) {\n\tif (_barcodes2.default.hasOwnProperty(name)) {\n\t\t// Security check if the propery is a prototype property\n\t\tregisterBarcode(_barcodes2.default, name);\n\t}\n}\nfunction registerBarcode(barcodes, name) {\n\tAPI.prototype[name] = API.prototype[name.toUpperCase()] = API.prototype[name.toLowerCase()] = function (text, options) {\n\t\tvar api = this;\n\t\treturn api._errorHandler.wrapBarcodeCall(function () {\n\t\t\t// Ensure text is options.text\n\t\t\toptions.text = typeof options.text === 'undefined' ? undefined : '' + options.text;\n\n\t\t\tvar newOptions = (0, _merge2.default)(api._options, options);\n\t\t\tnewOptions = (0, _optionsFromStrings2.default)(newOptions);\n\t\t\tvar Encoder = barcodes[name];\n\t\t\tvar encoded = encode(text, Encoder, newOptions);\n\t\t\tapi._encodings.push(encoded);\n\n\t\t\treturn api;\n\t\t});\n\t};\n}\n\n// encode() handles the Encoder call and builds the binary string to be rendered\nfunction encode(text, Encoder, options) {\n\t// Ensure that text is a string\n\ttext = \"\" + text;\n\n\tvar encoder = new Encoder(text, options);\n\n\t// If the input is not valid for the encoder, throw error.\n\t// If the valid callback option is set, call it instead of throwing error\n\tif (!encoder.valid()) {\n\t\tthrow new _exceptions.InvalidInputException(encoder.constructor.name, text);\n\t}\n\n\t// Make a request for the binary data (and other infromation) that should be rendered\n\tvar encoded = encoder.encode();\n\n\t// Encodings can be nestled like [[1-1, 1-2], 2, [3-1, 3-2]\n\t// Convert to [1-1, 1-2, 2, 3-1, 3-2]\n\tencoded = (0, _linearizeEncodings2.default)(encoded);\n\n\t// Merge\n\tfor (var i = 0; i < encoded.length; i++) {\n\t\tencoded[i].options = (0, _merge2.default)(options, encoded[i].options);\n\t}\n\n\treturn encoded;\n}\n\nfunction autoSelectBarcode() {\n\t// If CODE128 exists. Use it\n\tif (_barcodes2.default[\"CODE128\"]) {\n\t\treturn \"CODE128\";\n\t}\n\n\t// Else, take the first (probably only) barcode\n\treturn Object.keys(_barcodes2.default)[0];\n}\n\n// Sets global encoder options\n// Added to the api by the JsBarcode function\nAPI.prototype.options = function (options) {\n\tthis._options = (0, _merge2.default)(this._options, options);\n\treturn this;\n};\n\n// Will create a blank space (usually in between barcodes)\nAPI.prototype.blank = function (size) {\n\tvar zeroes = new Array(size + 1).join(\"0\");\n\tthis._encodings.push({ data: zeroes });\n\treturn this;\n};\n\n// Initialize JsBarcode on all HTML elements defined.\nAPI.prototype.init = function () {\n\t// Should do nothing if no elements where found\n\tif (!this._renderProperties) {\n\t\treturn;\n\t}\n\n\t// Make sure renderProperies is an array\n\tif (!Array.isArray(this._renderProperties)) {\n\t\tthis._renderProperties = [this._renderProperties];\n\t}\n\n\tvar renderProperty;\n\tfor (var i in this._renderProperties) {\n\t\trenderProperty = this._renderProperties[i];\n\t\tvar options = (0, _merge2.default)(this._options, renderProperty.options);\n\n\t\tif (options.format == \"auto\") {\n\t\t\toptions.format = autoSelectBarcode();\n\t\t}\n\n\t\tthis._errorHandler.wrapBarcodeCall(function () {\n\t\t\tvar text = options.value;\n\t\t\tvar Encoder = _barcodes2.default[options.format.toUpperCase()];\n\t\t\tvar encoded = encode(text, Encoder, options);\n\n\t\t\trender(renderProperty, encoded, options);\n\t\t});\n\t}\n};\n\n// The render API call. Calls the real render function.\nAPI.prototype.render = function () {\n\tif (!this._renderProperties) {\n\t\tthrow new _exceptions.NoElementException();\n\t}\n\n\tif (Array.isArray(this._renderProperties)) {\n\t\tfor (var i = 0; i < this._renderProperties.length; i++) {\n\t\t\trender(this._renderProperties[i], this._encodings, this._options);\n\t\t}\n\t} else {\n\t\trender(this._renderProperties, this._encodings, this._options);\n\t}\n\n\treturn this;\n};\n\nAPI.prototype._defaults = _defaults2.default;\n\n// Prepares the encodings and calls the renderer\nfunction render(renderProperties, encodings, options) {\n\tencodings = (0, _linearizeEncodings2.default)(encodings);\n\n\tfor (var i = 0; i < encodings.length; i++) {\n\t\tencodings[i].options = (0, _merge2.default)(options, encodings[i].options);\n\t\t(0, _fixOptions2.default)(encodings[i].options);\n\t}\n\n\t(0, _fixOptions2.default)(options);\n\n\tvar Renderer = renderProperties.renderer;\n\tvar renderer = new Renderer(renderProperties.element, encodings, options);\n\trenderer.render();\n\n\tif (renderProperties.afterRender) {\n\t\trenderProperties.afterRender();\n\t}\n}\n\n// Export to browser\nif (typeof window !== \"undefined\") {\n\twindow.JsBarcode = JsBarcode;\n}\n\n// Export to jQuery\n/*global jQuery */\nif (typeof jQuery !== 'undefined') {\n\tjQuery.fn.JsBarcode = function (content, options) {\n\t\tvar elementArray = [];\n\t\tjQuery(this).each(function () {\n\t\t\telementArray.push(this);\n\t\t});\n\t\treturn JsBarcode(elementArray, content, options);\n\t};\n}\n\n// Export to commonJS\nmodule.exports = JsBarcode;","import JsBarcode from 'jsbarcode';\n\nfrappe.ui.form.ControlBarcode = frappe.ui.form.ControlData.extend({\n\tmake_wrapper() {\n\t\t// Create the elements for barcode area\n\t\tthis._super();\n\n\t\tthis.default_svg = '';\n\t\tlet $input_wrapper = this.$wrapper.find('.control-input-wrapper');\n\t\tthis.barcode_area = $(\n\t\t\t`
    ${this.default_svg}
    `\n\t\t);\n\t\tthis.barcode_area.appendTo($input_wrapper);\n\t},\n\n\tparse(value) {\n\t\t// Parse raw value\n\t\tif (value) {\n\t\t\tif (value.startsWith('\n\t\t\t\t
    \n\t\t\t
    `\n\t\t);\n\t\tthis.map_area.prependTo($input_wrapper);\n\t\tthis.$wrapper.find('.control-input').addClass(\"hidden\");\n\n\t\tif (this.frm) {\n\t\t\tthis.make_map();\n\t\t} else {\n\t\t\t$(document).on('frappe.ui.Dialog:shown', () => {\n\t\t\t\tthis.make_map();\n\t\t\t});\n\t\t}\n\t},\n\n\tmake_map() {\n\t\tthis.bind_leaflet_map();\n\t\tthis.bind_leaflet_draw_control();\n\t\tthis.bind_leaflet_locate_control();\n\t\tthis.bind_leaflet_refresh_button();\n\t},\n\n\tformat_for_input(value) {\n\t\tif (!this.map) return;\n\t\t// render raw value from db into map\n\t\tthis.clear_editable_layers();\n\t\tif(value) {\n\t\t\tvar data_layers = new L.FeatureGroup()\n\t\t\t\t.addLayer(L.geoJson(JSON.parse(value),{\n\t\t\t\t\tpointToLayer: function(geoJsonPoint, latlng) {\n\t\t\t\t\t\tif (geoJsonPoint.properties.point_type == \"circle\"){\n\t\t\t\t\t\t\treturn L.circle(latlng, {radius: geoJsonPoint.properties.radius});\n\t\t\t\t\t\t} else if (geoJsonPoint.properties.point_type == \"circlemarker\") {\n\t\t\t\t\t\t\treturn L.circleMarker(latlng, {radius: geoJsonPoint.properties.radius});\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\treturn L.marker(latlng);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}));\n\t\t\tthis.add_non_group_layers(data_layers, this.editableLayers);\n\t\t\ttry {\n\t\t\t\tthis.map.flyToBounds(this.editableLayers.getBounds(), {\n\t\t\t\t\tpadding: [50,50]\n\t\t\t\t});\n\t\t\t}\n\t\t\tcatch(err) {\n\t\t\t\t// suppress error if layer has a point.\n\t\t\t}\n\t\t\tthis.editableLayers.addTo(this.map);\n\t\t\tthis.map._onResize();\n\t\t} else if ((value===undefined) || (value == JSON.stringify(new L.FeatureGroup().toGeoJSON()))) {\n\t\t\tthis.locate_control.start();\n\t\t}\n\t},\n\n\tbind_leaflet_map() {\n\t\tvar circleToGeoJSON = L.Circle.prototype.toGeoJSON;\n\t\tL.Circle.include({\n\t\t\ttoGeoJSON: function() {\n\t\t\t\tvar feature = circleToGeoJSON.call(this);\n\t\t\t\tfeature.properties = {\n\t\t\t\t\tpoint_type: 'circle',\n\t\t\t\t\tradius: this.getRadius()\n\t\t\t\t};\n\t\t\t\treturn feature;\n\t\t\t}\n\t\t});\n\n\t\tL.CircleMarker.include({\n\t\t\ttoGeoJSON: function() {\n\t\t\t\tvar feature = circleToGeoJSON.call(this);\n\t\t\t\tfeature.properties = {\n\t\t\t\t\tpoint_type: 'circlemarker',\n\t\t\t\t\tradius: this.getRadius()\n\t\t\t\t};\n\t\t\t\treturn feature;\n\t\t\t}\n\t\t});\n\n\t\tL.Icon.Default.imagePath = '/assets/frappe/images/leaflet/';\n\t\tthis.map = L.map(this.map_id).setView([19.0800, 72.8961], 13);\n\n\t\tL.tileLayer('http://{s}.tile.osm.org/{z}/{x}/{y}.png', {\n\t\t\tattribution: '© OpenStreetMap contributors'\n\t\t}).addTo(this.map);\n\t},\n\n\tbind_leaflet_locate_control() {\n\t\t// To request location update and set location, sets current geolocation on load\n\t\tthis.locate_control = L.control.locate({position:'topright'});\n\t\tthis.locate_control.addTo(this.map);\n\t},\n\n\tbind_leaflet_draw_control() {\n\t\tthis.editableLayers = new L.FeatureGroup();\n\n\t\tvar options = {\n\t\t\tposition: 'topleft',\n\t\t\tdraw: {\n\t\t\t\tpolyline: {\n\t\t\t\t\tshapeOptions: {\n\t\t\t\t\t\tcolor: frappe.ui.color.get('blue'),\n\t\t\t\t\t\tweight: 10\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tpolygon: {\n\t\t\t\t\tallowIntersection: false, // Restricts shapes to simple polygons\n\t\t\t\t\tdrawError: {\n\t\t\t\t\t\tcolor: frappe.ui.color.get('orange'), // Color the shape will turn when intersects\n\t\t\t\t\t\tmessage: 'Oh snap! you can\\'t draw that!' // Message that will show when intersect\n\t\t\t\t\t},\n\t\t\t\t\tshapeOptions: {\n\t\t\t\t\t\tcolor: frappe.ui.color.get('blue')\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\tcircle: true,\n\t\t\t\trectangle: {\n\t\t\t\t\tshapeOptions: {\n\t\t\t\t\t\tclickable: false\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\tedit: {\n\t\t\t\tfeatureGroup: this.editableLayers, //REQUIRED!!\n\t\t\t\tremove: true\n\t\t\t}\n\t\t};\n\n\t\t// create control and add to map\n\t\tvar drawControl = new L.Control.Draw(options);\n\n\t\tthis.map.addControl(drawControl);\n\n\t\tthis.map.on('draw:created', (e) => {\n\t\t\tvar type = e.layerType,\n\t\t\t\tlayer = e.layer;\n\t\t\tif (type === 'marker') {\n\t\t\t\tlayer.bindPopup('Marker');\n\t\t\t}\n\t\t\tthis.editableLayers.addLayer(layer);\n\t\t\tthis.set_value(JSON.stringify(this.editableLayers.toGeoJSON()));\n\t\t});\n\n\t\tthis.map.on('draw:deleted draw:edited', (e) => {\n\t\t\tvar layer = e.layer;\n\t\t\tthis.editableLayers.removeLayer(layer);\n\t\t\tthis.set_value(JSON.stringify(this.editableLayers.toGeoJSON()));\n\t\t});\n\t},\n\n\tbind_leaflet_refresh_button() {\n\t\tL.easyButton({\n\t\t\tid: 'refresh-map-'+this.df.fieldname,\n\t\t\tposition: 'topright',\n\t\t\ttype: 'replace',\n\t\t\tleafletClasses: true,\n\t\t\tstates:[{\n\t\t\t\tstateName: 'refresh-map',\n\t\t\t\tonClick: function(button, map){\n\t\t\t\t\tmap._onResize();\n\t\t\t\t},\n\t\t\t\ttitle: 'Refresh map',\n\t\t\t\ticon: 'fa fa-refresh'\n\t\t\t}]\n\t\t}).addTo(this.map);\n\t},\n\n\tadd_non_group_layers(source_layer, target_group) {\n\t\t// https://gis.stackexchange.com/a/203773\n\t\t// Would benefit from https://github.com/Leaflet/Leaflet/issues/4461\n\t\tif (source_layer instanceof L.LayerGroup) {\n\t\t\tsource_layer.eachLayer((layer)=>{\n\t\t\t\tthis.add_non_group_layers(layer, target_group);\n\t\t\t});\n\t\t} else {\n\t\t\ttarget_group.addLayer(source_layer);\n\t\t}\n\t},\n\n\tclear_editable_layers() {\n\t\tthis.editableLayers.eachLayer((l)=>{\n\t\t\tthis.editableLayers.removeLayer(l);\n\t\t});\n\t}\n});\n","import Awesomplete from 'awesomplete';\n\nfrappe.ui.form.ControlMultiSelect = frappe.ui.form.ControlAutocomplete.extend({\n\tget_awesomplete_settings() {\n\t\tconst settings = this._super();\n\n\t\treturn Object.assign(settings, {\n\t\t\tfilter: function(text, input) {\n\t\t\t\tlet d = this.get_item(text.value);\n\t\t\t\tif(!d) {\n\t\t\t\t\treturn Awesomplete.FILTER_CONTAINS(text, input.match(/[^,]*$/)[0]);\n\t\t\t\t}\n\n\t\t\t\tlet getMatch = value => Awesomplete.FILTER_CONTAINS(value, input.match(/[^,]*$/)[0]);\n\n\t\t\t\t// match typed input with label or value or description\n\t\t\t\tlet v = getMatch(d.label);\n\t\t\t\tif(!v && d.value) {\n\t\t\t\t\tv = getMatch(d.value);\n\t\t\t\t}\n\t\t\t\tif(!v && d.description) {\n\t\t\t\t\tv = getMatch(d.description);\n\t\t\t\t}\n\n\t\t\t\treturn v;\n\t\t\t},\n\n\t\t\treplace: function(text) {\n\t\t\t\tconst before = this.input.value.match(/^.+,\\s*|/)[0];\n\t\t\t\tthis.input.value = before + text + \", \";\n\t\t\t}\n\t\t});\n\t},\n\n\tget_value() {\n\t\tlet data = this._super();\n\t\t// find value of label from option list and return actual value string\n\t\tif (this.df.options && this.df.options.length && this.df.options[0].label) {\n\t\t\tdata = data.split(',').map(op => op.trim());\n\t\t\tdata = data.map(val => {\n\t\t\t\tlet option = this.df.options.find(op => op.label === val);\n\t\t\t\treturn option ? option.value : null;\n\t\t\t}).filter(n => n != null).join(', ');\n\t\t}\n\t\treturn data;\n\t},\n\n\tset_formatted_input(value) {\n\t\tif (!value) return;\n\t\t// find label of value from option list and set from it as input\n\t\tif (this.df.options && this.df.options.length && this.df.options[0].label) {\n\t\t\tvalue = value.split(',').map(d => d.trim()).map(val => {\n\t\t\t\tlet option = this.df.options.find(op => op.value === val);\n\t\t\t\treturn option ? option.label : val;\n\t\t\t}).filter(n => n != null).join(', ');\n\t\t}\n\t\tthis._super(value);\n\t},\n\n\tget_values() {\n\t\tconst value = this.get_value() || '';\n\t\tconst values = value.split(/\\s*,\\s*/).filter(d => d);\n\n\t\treturn values;\n\t},\n\n\tget_data() {\n\t\tlet data;\n\t\tif(this.df.get_data) {\n\t\t\tdata = this.df.get_data();\n\t\t\tthis.set_data(data);\n\t\t} else {\n\t\t\tdata = this._super();\n\t\t}\n\t\tconst values = this.get_values() || [];\n\n\t\t// return values which are not already selected\n\t\tif(data) data.filter(d => !values.includes(d));\n\t\treturn data;\n\t}\n});\n","frappe.ui.form.ControlMultiCheck = frappe.ui.form.Control.extend({\n\t// UI: multiple checkboxes\n\t// Value: Array of values\n\t// Options: Array of label/value/checked option objects\n\n\tmake() {\n\t\tthis._super();\n\t\tthis.$label = $(``).appendTo(this.wrapper);\n\t\tthis.$load_state = $('
    ' + __(\"Loading\") + '...
    ');\n\t\tthis.$select_buttons = this.get_select_buttons().appendTo(this.wrapper);\n\t\tthis.$load_state.appendTo(this.wrapper);\n\n\t\tconst row = this.get_column_size() === 12 ? '' : 'row';\n\t\tthis.$checkbox_area = $(`
    `).appendTo(this.wrapper);\n\t\tthis.refresh();\n\t},\n\n\trefresh() {\n\t\tthis.set_options();\n\t\tthis.bind_checkboxes();\n\t\tthis.refresh_input();\n\t\tthis._super();\n\t},\n\n\trefresh_input() {\n\t\tthis.select_options(this.selected_options);\n\t},\n\n\n\tset_options() {\n\t\tthis.$load_state.show();\n\t\tthis.$select_buttons.hide();\n\t\tthis.parse_df_options();\n\n\t\tif(this.df.get_data) {\n\t\t\tif(typeof this.df.get_data().then == 'function') {\n\t\t\t\tthis.df.get_data().then(results => {\n\t\t\t\t\tthis.options = results;\n\t\t\t\t\tthis.make_checkboxes();\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis.options = this.df.get_data();\n\t\t\t\tthis.make_checkboxes();\n\t\t\t}\n\t\t} else {\n\t\t\tthis.make_checkboxes();\n\t\t}\n\t},\n\n\tparse_df_options() {\n\t\tif(Array.isArray(this.df.options)) {\n\t\t\tthis.options = this.df.options;\n\t\t} else if(this.df.options && this.df.options.length>0 && frappe.utils.is_json(this.df.options)) {\n\t\t\tlet args = JSON.parse(this.df.options);\n\t\t\tif(Array.isArray(args)) {\n\t\t\t\tthis.options = args;\n\t\t\t} else if(Array.isArray(args.options)) {\n\t\t\t\tthis.options = args.options;\n\t\t\t}\n\t\t} else {\n\t\t\tthis.options = [];\n\t\t}\n\t},\n\n\tmake_checkboxes() {\n\t\tthis.$load_state.hide();\n\t\tthis.$checkbox_area.empty();\n\t\tthis.options.forEach(option => {\n\t\t\tlet checkbox = this.get_checkbox_element(option).appendTo(this.$checkbox_area);\n\t\t\tif (option.danger) {\n\t\t\t\tcheckbox.find('.label-area').addClass('text-danger');\n\t\t\t}\n\t\t\toption.$checkbox = checkbox;\n\t\t});\n\t\tif(this.df.select_all) {\n\t\t\tthis.setup_select_all();\n\t\t}\n\t\tthis.set_checked_options();\n\t},\n\n\tbind_checkboxes() {\n\t\t$(this.wrapper).on('change', ':checkbox', e => {\n\t\t\tconst $checkbox = $(e.target);\n\t\t\tconst option_name = $checkbox.attr(\"data-unit\");\n\t\t\tif($checkbox.is(':checked')) {\n\t\t\t\tif(this.selected_options.includes(option_name)) return;\n\t\t\t\tthis.selected_options.push(option_name);\n\t\t\t} else {\n\t\t\t\tlet index = this.selected_options.indexOf(option_name);\n\t\t\t\tif(index > -1) {\n\t\t\t\t\tthis.selected_options.splice(index, 1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis.df.on_change && this.df.on_change();\n\t\t});\n\t},\n\n\tset_checked_options() {\n\t\tthis.selected_options = this.options\n\t\t\t.filter(o => o.checked)\n\t\t\t.map(o => o.value);\n\t\tthis.select_options(this.selected_options);\n\t},\n\n\tsetup_select_all() {\n\t\tthis.$select_buttons.show();\n\t\tlet select_all = (deselect=false) => {\n\t\t\t$(this.wrapper).find(`:checkbox`).prop(\"checked\", deselect).trigger('click');\n\t\t};\n\t\tthis.$select_buttons.find('.select-all').on('click', () => {\n\t\t\tselect_all();\n\t\t});\n\t\tthis.$select_buttons.find('.deselect-all').on('click', () => {\n\t\t\tselect_all(true);\n\t\t});\n\t},\n\n\tselect_options(selected_options) {\n\t\tthis.options.map(option => option.value).forEach(value => {\n\t\t\tlet $checkbox = $(this.wrapper).find(`:checkbox[data-unit=\"${value}\"]`)[0];\n\t\t\tif($checkbox) $checkbox.checked = selected_options.includes(value);\n\t\t});\n\t},\n\n\tget_value() {\n\t\treturn this.selected_options;\n\t},\n\n\tget_checked_options() {\n\t\treturn this.get_value();\n\t},\n\n\tget_unchecked_options() {\n\t\treturn this.options.map(o => o.value)\n\t\t\t.filter(value => !this.selected_options.includes(value));\n\t},\n\n\tget_checkbox_element(option) {\n\t\tconst column_size = this.get_column_size();\n\t\treturn $(`\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    `);\n\t},\n\n\tget_select_buttons() {\n\t\treturn $(`\n\t\t
    \n\t\t\t\n\t\t\t\n\t\t
    \n\t\t`);\n\t},\n\n\tget_column_size() {\n\t\treturn 12 / (+this.df.columns || 1);\n\t}\n});\n","frappe.ui.form.ControlTableMultiSelect = frappe.ui.form.ControlLink.extend({\n\tmake_input() {\n\t\tthis._super();\n\n\t\tthis.$input_area.addClass('form-control table-multiselect');\n\t\tthis.$input.removeClass('form-control');\n\n\t\tthis.$input.on(\"awesomplete-selectcomplete\", () => {\n\t\t\tthis.$input.val('').focus();\n\t\t});\n\n\t\t// used as an internal model to store values\n\t\tthis.rows = [];\n\n\t\tthis.$input_area.on('click', (e) => {\n\t\t\tif (e.target === this.$input_area.get(0)) {\n\t\t\t\tthis.$input.focus();\n\t\t\t}\n\t\t});\n\n\t\tthis.$input_area.on('click', '.btn-remove', (e) => {\n\t\t\tconst $target = $(e.currentTarget);\n\t\t\tconst $value = $target.closest('.tb-selected-value');\n\n\t\t\tconst value = decodeURIComponent($value.data().value);\n\t\t\tconst link_field = this.get_link_field();\n\t\t\tthis.rows = this.rows.filter(row => row[link_field.fieldname] !== value);\n\n\t\t\tthis.parse_validate_and_set_in_model('');\n\t\t});\n\t\tthis.$input_area.on('click', '.btn-link-to-form', (e) => {\n\t\t\tconst $target = $(e.currentTarget);\n\t\t\tconst $value = $target.closest('.tb-selected-value');\n\n\t\t\tconst value = decodeURIComponent($value.data().value);\n\t\t\tconst link_field = this.get_link_field();\n\t\t\tfrappe.set_route('Form', link_field.options, value);\n\t\t});\n\t\tthis.$input.on('keydown', e => {\n\t\t\t// if backspace key pressed on empty input, delete last value\n\t\t\tif (e.keyCode == frappe.ui.keyCode.BACKSPACE && e.target.value === '') {\n\t\t\t\tthis.rows = this.rows.slice(0, this.rows.length - 1);\n\t\t\t\tthis.parse_validate_and_set_in_model('');\n\t\t\t}\n\t\t});\n\t},\n\tsetup_buttons() {\n\t\tthis.$input_area.find('.link-btn').remove();\n\t},\n\tparse(value) {\n\t\tconst link_field = this.get_link_field();\n\n\t\tif (value) {\n\t\t\tif (this.frm) {\n\t\t\t\tconst new_row = frappe.model.add_child(this.frm.doc, this.df.options, this.df.fieldname);\n\t\t\t\tnew_row[link_field.fieldname] = value;\n\t\t\t\tthis.rows = this.frm.doc[this.df.fieldname];\n\t\t\t} else {\n\t\t\t\tthis.rows.push({\n\t\t\t\t\t[link_field.fieldname]: value\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn this.rows;\n\t},\n\tget_model_value() {\n\t\tlet value = this._super();\n\t\treturn value ? value.filter(d => !d.__islocal) : value;\n\t},\n\tvalidate(value) {\n\t\tconst rows = (value || []).slice();\n\n\t\t// validate the value just entered\n\t\tif (this.df.ignore_link_validation) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tconst link_field = this.get_link_field();\n\t\tif (rows.length === 0) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tconst all_rows_except_last = rows.slice(0, rows.length - 1);\n\t\tconst last_row = rows[rows.length - 1];\n\n\t\t// validate the last value entered\n\t\tconst link_value = last_row[link_field.fieldname];\n\n\t\t// falsy value\n\t\tif (!link_value) {\n\t\t\treturn all_rows_except_last;\n\t\t}\n\n\t\t// duplicate value\n\t\tif (all_rows_except_last.map(row => row[link_field.fieldname]).includes(link_value)) {\n\t\t\treturn all_rows_except_last;\n\t\t}\n\n\t\tconst validate_promise = this.validate_link_and_fetch(this.df, this.get_options(),\n\t\t\tthis.docname, link_value);\n\n\t\treturn validate_promise.then(validated_value => {\n\t\t\tif (validated_value === link_value) {\n\t\t\t\treturn rows;\n\t\t\t} else {\n\t\t\t\trows.pop();\n\t\t\t\treturn rows;\n\t\t\t}\n\t\t});\n\t},\n\tset_formatted_input(value) {\n\t\tthis.rows = value || [];\n\t\tconst link_field = this.get_link_field();\n\t\tconst values = this.rows.map(row => row[link_field.fieldname]);\n\t\tthis.set_pill_html(values);\n\t},\n\tset_pill_html(values) {\n\t\tconst html = values\n\t\t\t.map(value => this.get_pill_html(value))\n\t\t\t.join('');\n\n\t\tthis.$input_area.find('.tb-selected-value').remove();\n\t\tthis.$input_area.prepend(html);\n\t},\n\tget_pill_html(value) {\n\t\tconst encoded_value = encodeURIComponent(value);\n\t\treturn `
    \n\t\t\t\n\t\t\t\n\t\t
    `;\n\t},\n\tget_options() {\n\t\treturn (this.get_link_field() || {}).options;\n\t},\n\tget_link_field() {\n\t\tif (!this._link_field) {\n\t\t\tconst meta = frappe.get_meta(this.df.options);\n\t\t\tthis._link_field = meta.fields.find(df => df.fieldtype === 'Link');\n\t\t\tif (!this._link_field) {\n\t\t\t\tthrow new Error('Table MultiSelect requires a Table with atleast one Link field');\n\t\t\t}\n\t\t}\n\t\treturn this._link_field;\n\t},\n});\n","import Awesomplete from 'awesomplete';\n\nfrappe.ui.form.ControlMultiSelectPills = frappe.ui.form.ControlAutocomplete.extend({\n\tmake_input() {\n\t\tthis._super();\n\t\tthis.$input_area = $(this.input_area);\n\t\tthis.$multiselect_wrapper = $('
    ')\n\t\t\t.addClass('form-control table-multiselect')\n\t\t\t.appendTo(this.$input_area);\n\n\t\tthis.$input.removeClass('form-control');\n\t\tthis.$input_area.find('.awesomplete').appendTo(this.$multiselect_wrapper);\n\n\t\tthis.$input.on(\"awesomplete-selectcomplete\", () => {\n\t\t\tthis.$input.val('').focus();\n\t\t});\n\n\t\t// used as an internal model to store values\n\t\tthis.rows = [];\n\n\t\tthis.$input_area.on('click', '.btn-remove', (e) => {\n\t\t\tconst $target = $(e.currentTarget);\n\t\t\tconst $value = $target.closest('.tb-selected-value');\n\n\t\t\tconst value = decodeURIComponent($value.data().value);\n\t\t\tthis.rows = this.rows.filter(val => val !== value);\n\n\t\t\tthis.parse_validate_and_set_in_model('');\n\t\t});\n\n\t\tthis.$input.on('keydown', e => {\n\t\t\t// if backspace key pressed on empty input, delete last value\n\t\t\tif (e.keyCode == frappe.ui.keyCode.BACKSPACE && e.target.value === '') {\n\t\t\t\tthis.rows = this.rows.slice(0, this.rows.length - 1);\n\t\t\t\tthis.parse_validate_and_set_in_model('');\n\t\t\t}\n\t\t});\n\t},\n\n\tparse(value) {\n\t\tif (value) {\n\t\t\tthis.rows.push(value);\n\t\t}\n\n\t\treturn this.rows;\n\t},\n\n\tvalidate(value) {\n\t\tconst rows = (value || []).slice();\n\n\t\tif (rows.length === 0) {\n\t\t\treturn rows;\n\t\t}\n\n\t\tconst all_rows_except_last = rows.slice(0, rows.length - 1);\n\t\tconst last_value = rows[rows.length - 1];\n\n\t\t// falsy value\n\t\tif (!last_value) {\n\t\t\treturn all_rows_except_last;\n\t\t}\n\n\t\t// duplicate value\n\t\tif (all_rows_except_last.includes(last_value)) {\n\t\t\treturn all_rows_except_last;\n\t\t}\n\n\t\treturn rows;\n\t},\n\n\tset_formatted_input(value) {\n\t\tthis.rows = value || [];\n\t\tthis.set_pill_html(this.rows);\n\t},\n\n\tset_pill_html(values) {\n\t\tconst html = values\n\t\t\t.map(value => this.get_pill_html(value))\n\t\t\t.join('');\n\n\t\tthis.$multiselect_wrapper.find('.tb-selected-value').remove();\n\t\tthis.$multiselect_wrapper.prepend(html);\n\t},\n\n\tget_pill_html(value) {\n\t\tconst encoded_value = encodeURIComponent(value);\n\t\treturn `
    \n\t\t\t\n\t\t\t\n\t\t
    `;\n\t},\n\n\tget_awesomplete_settings() {\n\t\tconst settings = this._super();\n\n\t\treturn Object.assign(settings, {\n\t\t\tfilter: function(text, input) {\n\t\t\t\tlet d = this.get_item(text.value);\n\t\t\t\tif(!d) {\n\t\t\t\t\treturn Awesomplete.FILTER_CONTAINS(text, input.match(/[^,]*$/)[0]);\n\t\t\t\t}\n\n\t\t\t\tlet getMatch = value => Awesomplete.FILTER_CONTAINS(value, input.match(/[^,]*$/)[0]);\n\n\t\t\t\t// match typed input with label or value or description\n\t\t\t\tlet v = getMatch(d.label);\n\t\t\t\tif(!v && d.value) {\n\t\t\t\t\tv = getMatch(d.value);\n\t\t\t\t}\n\t\t\t\tif(!v && d.description) {\n\t\t\t\t\tv = getMatch(d.description);\n\t\t\t\t}\n\n\t\t\t\treturn v;\n\t\t\t}\n\t\t});\n\t},\n\n\tget_value() {\n\t\treturn this.rows;\n\t},\n\n\tget_values() {\n\t\treturn this.rows;\n\t},\n\n\tget_data() {\n\t\tlet data;\n\t\tif(this.df.get_data) {\n\t\t\tdata = this.df.get_data();\n\t\t\tif (data && data.then) {\n\t\t\t\tdata.then((r) => {\n\t\t\t\t\tthis.set_data(r);\n\t\t\t\t});\n\t\t\t\tdata = this.get_value();\n\t\t\t} else {\n\t\t\t\tthis.set_data(data);\n\t\t\t}\n\t\t} else {\n\t\t\tdata = this._super();\n\t\t}\n\t\tconst values = this.get_values() || [];\n\n\t\t// return values which are not already selected\n\t\tif (data) data.filter(d => !values.includes(d));\n\t\treturn data;\n\t}\n});\n","frappe.ui.form.ControlMultiSelectList = frappe.ui.form.ControlData.extend({\n\ttrigger_change_on_input_event: false,\n\tmake_input() {\n\t\tlet template = `\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t
      \n\t\t\t\t\t
    • \n\t\t\t\t\t\t\n\t\t\t\t\t
    • \n\t\t\t\t\t
      \n\t\t\t\t\t
      \n\t\t\t\t
    \n\t\t\t
    \n\t\t`;\n\n\t\tthis.$list_wrapper = $(template);\n\t\tthis.$input = $('');\n\t\tthis.input = this.$input.get(0);\n\t\tthis.has_input = true;\n\t\tthis.$list_wrapper.prependTo(this.input_area);\n\t\tthis.$filter_input = this.$list_wrapper.find('input');\n\t\tthis.$list_wrapper.on('click', '.dropdown-menu', e => {\n\t\t\te.stopPropagation();\n\t\t});\n\t\tthis.$list_wrapper.on('click', '.selectable-item', e => {\n\t\t\tlet $target = $(e.currentTarget);\n\t\t\tthis.toggle_select_item($target);\n\t\t});\n\t\tthis.$list_wrapper.on('input', 'input', frappe.utils.debounce((e) => {\n\t\t\tthis.set_options()\n\t\t\t\t.then(() => {\n\t\t\t\t\tlet txt = e.target.value;\n\t\t\t\t\tlet filtered_options = this._options.filter(opt => {\n\t\t\t\t\t\tlet match = false;\n\t\t\t\t\t\tif (this.values.includes(opt.value)) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = Awesomplete.FILTER_CONTAINS(opt.label, txt)\n\t\t\t\t\t\t\t|| Awesomplete.FILTER_CONTAINS(opt.value, txt)\n\t\t\t\t\t\t\t|| Awesomplete.FILTER_CONTAINS(opt.description, txt);\n\n\t\t\t\t\t\treturn match;\n\t\t\t\t\t});\n\t\t\t\t\tlet options = this._selected_values\n\t\t\t\t\t\t.concat(filtered_options)\n\t\t\t\t\t\t.uniqBy(opt => opt.value);\n\t\t\t\t\tthis.set_selectable_items(options);\n\t\t\t\t});\n\t\t}, 300));\n\t\tthis.$list_wrapper.on('keydown', 'input', e => {\n\t\t\tif (e.key === 'ArrowDown') {\n\t\t\t\tthis.highlight_item(1);\n\t\t\t} else if (e.key === 'ArrowUp') {\n\t\t\t\tthis.highlight_item(-1);\n\t\t\t} else if (e.key === 'Enter') {\n\t\t\t\tif (this._$last_highlighted) {\n\t\t\t\t\tthis.toggle_select_item(this._$last_highlighted);\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.$list_wrapper.on('keydown', e => {\n\t\t\tif ($(e.target).is('input')) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (e.key === 'Backspace') {\n\t\t\t\tthis.set_value([]);\n\t\t\t}\n\t\t});\n\n\t\tthis.$list_wrapper.on('show.bs.dropdown', () => {\n\t\t\tthis.set_options()\n\t\t\t\t.then(() => {\n\t\t\t\t\tthis.set_selectable_items(this._options);\n\t\t\t\t});\n\t\t});\n\n\t\tthis.set_input_attributes();\n\t\tthis.values = [];\n\t\tthis._options = [];\n\t\tthis._selected_values = [];\n\t\tthis.highlighted = -1;\n\t},\n\n\tset_input_attributes() {\n\t\tthis.$list_wrapper\n\t\t\t.attr(\"data-fieldtype\", this.df.fieldtype)\n\t\t\t.attr(\"data-fieldname\", this.df.fieldname);\n\n\t\tthis.set_status(this.get_placeholder_text());\n\n\t\tif (this.doctype) {\n\t\t\tthis.$list_wrapper.attr(\"data-doctype\", this.doctype);\n\t\t}\n\t\tif(this.df.input_css) {\n\t\t\tthis.$list_wrapper.css(this.df.input_css);\n\t\t}\n\t\tif(this.df.input_class) {\n\t\t\tthis.$list_wrapper.addClass(this.df.input_class);\n\t\t}\n\t},\n\n\ttoggle_select_item($selectable_item) {\n\t\t$selectable_item.toggleClass('selected');\n\t\tlet value = decodeURIComponent($selectable_item.data().value);\n\n\t\tif ($selectable_item.hasClass('selected')) {\n\t\t\tthis.values.push(value);\n\t\t} else {\n\t\t\tthis.values = this.values.filter(val => val !== value);\n\t\t}\n\t\tthis.update_selected_values(value);\n\t\tthis.parse_validate_and_set_in_model('');\n\t\tthis.update_status();\n\t},\n\n\tset_value(value) {\n\t\tif (!value) return Promise.resolve();\n\t\tif (typeof value === 'string') {\n\t\t\tvalue = [value];\n\t\t}\n\t\tthis.values = value;\n\t\tthis.values.forEach(value => {\n\t\t\tthis.update_selected_values(value);\n\t\t});\n\t\tthis.parse_validate_and_set_in_model('');\n\t\tthis.update_status();\n\t\treturn Promise.resolve();\n\t},\n\n\tupdate_selected_values(value) {\n\t\tthis._selected_values = this._selected_values || [];\n\t\tlet option = this._options.find(opt => opt.value === value);\n\t\tif (option) {\n\t\t\tif (this.values.includes(value)) {\n\t\t\t\tthis._selected_values.push(option);\n\t\t\t} else {\n\t\t\t\tthis._selected_values = this._selected_values.filter(opt => opt.value !== value);\n\t\t\t}\n\t\t}\n\t},\n\n\tupdate_status() {\n\t\tlet text;\n\t\tif (this.values.length === 0) {\n\t\t\ttext = this.get_placeholder_text();\n\t\t} else if (this.values.length === 1) {\n\t\t\tlet val = this.values[0];\n\t\t\tlet option = this._options.find(opt => opt.value === val);\n\t\t\ttext = option ? option.label : val;\n\t\t} else {\n\t\t\ttext = __('{0} values selected', [this.values.length]);\n\t\t}\n\t\tthis.set_status(text);\n\t},\n\n\tget_placeholder_text() {\n\t\treturn `${this.df.placeholder || ''}`;\n\t},\n\n\tset_status(text) {\n\t\tthis.$list_wrapper.find('.status-text').html(text);\n\t},\n\n\tset_options() {\n\t\tlet promise = Promise.resolve();\n\n\t\tfunction process_options(options) {\n\t\t\treturn options.map(option => {\n\t\t\t\tif (typeof option === 'string') {\n\t\t\t\t\treturn {\n\t\t\t\t\t\tlabel: option,\n\t\t\t\t\t\tvalue: option\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tif (!option.label) {\n\t\t\t\t\toption.label = option.value;\n\t\t\t\t}\n\t\t\t\treturn option;\n\t\t\t});\n\t\t}\n\n\t\tif (this.df.get_data) {\n\t\t\tlet txt = this.$filter_input.val();\n\t\t\tlet value = this.df.get_data(txt);\n\t\t\tif (!value) {\n\t\t\t\tthis._options = [];\n\t\t\t} else if (value.then) {\n\t\t\t\tpromise = value.then(options => {\n\t\t\t\t\tthis._options = process_options(options);\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tthis._options = process_options(value);\n\t\t\t}\n\t\t} else {\n\t\t\tthis._options = process_options(this.df.options);\n\t\t}\n\t\treturn promise;\n\t},\n\n\tset_selectable_items(options) {\n\t\tlet html = options.map(option => {\n\t\t\tlet encoded_value = encodeURIComponent(option.value);\n\t\t\tlet selected = this.values.includes(option.value) ? 'selected' : '';\n\t\t\treturn `
  • \n\t\t\t\t
    \n\t\t\t\t\t${option.label}\n\t\t\t\t\t
    ${option.description}
    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
  • `;\n\t\t}).join('');\n\t\tif (!html) {\n\t\t\thtml = `
  • ${__('No values to show')}
  • `;\n\t\t}\n\t\tthis.$list_wrapper\n\t\t\t.find('.selectable-items')\n\t\t\t.html(html);\n\n\t\tthis.highlighted = -1;\n\t},\n\n\tget_value() {\n\t\treturn this.values;\n\t},\n\n\thighlight_item(value) {\n\t\tthis.highlighted += value;\n\n\t\tif (this.highlighted < 0) {\n\t\t\tthis.highlighted = 0;\n\t\t}\n\t\tlet $items = this.$list_wrapper.find('.selectable-item');\n\t\tif (this.highlighted > $items.length - 1) {\n\t\t\tthis.highlighted = $items.length - 1;\n\t\t}\n\n\t\tlet $item = $items[this.highlighted];\n\n\t\tif (this._$last_highlighted) {\n\t\t\tthis._$last_highlighted.removeClass('highlighted');\n\t\t}\n\t\tthis._$last_highlighted = $($item).addClass('highlighted');\n\t\tthis.scroll_dropdown_if_needed($item);\n\t},\n\n\tscroll_dropdown_if_needed($item) {\n\t\tif ($item.scrollIntoView) {\n\t\t\t$item.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'start' });\n\t\t} else {\n\t\t\t$item.parentNode.scrollTop = $item.offsetTop - $item.parentNode.offsetTop;\n\t\t}\n\t}\n});\n","frappe.ui.form.ControlRating = frappe.ui.form.ControlInt.extend({\n\tmake_input() {\n\t\tthis._super();\n\t\tconst star_template = `\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t`;\n\n\t\t$(this.input_area).html(star_template);\n\n\t\t$(this.input_area).find('i').hover((ev) => {\n\t\t\tconst el = $(ev.currentTarget);\n\t\t\tlet star_value = el.data('rating');\n\t\t\tel.parent().children('i.fa').each( function(e){\n\t\t\t\tif (e < star_value) {\n\t\t\t\t\t$(this).addClass('star-hover');\n\t\t\t\t} else {\n\t\t\t\t\t$(this).removeClass('star-hover');\n\t\t\t\t}\n\t\t\t});\n\t\t}, (ev) => {\n\t\t\tconst el = $(ev.currentTarget);\n\t\t\tel.parent().children('i.fa').each( function() {\n\t\t\t\t$(this).removeClass('star-hover');\n\t\t\t});\n\t\t});\n\n\t\t$(this.input_area).find('i').click((ev) => {\n\t\t\tconst el = $(ev.currentTarget);\n\t\t\tlet star_value = el.data('rating');\n\t\t\tel.parent().children('i.fa').each( function(e) {\n\t\t\t\tif (e < star_value){\n\t\t\t\t\t$(this).addClass('star-click');\n\t\t\t\t} else {\n\t\t\t\t\t$(this).removeClass('star-click');\n\t\t\t\t}\n\t\t\t});\n\t\t\tthis.validate_and_set_in_model(star_value, ev);\n\t\t\tif (this.doctype && this.docname) {\n\t\t\t\tthis.set_input(star_value);\n\t\t\t}\n\t\t});\n\t},\n\tget_value() {\n\t\treturn cint(this.value);\n\t},\n\tset_formatted_input(value) {\n\t\tlet el = $(this.input_area).find('i');\n\t\tel.children('i.fa').prevObject.each( function(e) {\n\t\t\tif (e < value) {\n\t\t\t\t$(this).addClass('star-click');\n\t\t\t} else {\n\t\t\t\t$(this).removeClass('star-click');\n\t\t\t}\n\t\t});\n\t}\n});","import './base_control';\nimport './base_input';\nimport './data';\nimport './int';\nimport './float';\nimport './currency';\nimport './date';\nimport './time';\nimport './datetime';\nimport './date_range';\nimport './select';\nimport './link';\nimport './dynamic_link';\nimport './text';\nimport './code';\nimport './text_editor';\nimport './comment';\nimport './check';\nimport './image';\nimport './attach';\nimport './attach_image';\nimport './table';\nimport './color';\nimport './signature';\nimport './password';\nimport './read_only';\nimport './button';\nimport './html';\nimport './markdown_editor';\nimport './html_editor';\nimport './heading';\nimport './autocomplete';\nimport './barcode';\nimport './geolocation';\nimport './multiselect';\nimport './multicheck';\nimport './table_multiselect';\nimport './multiselect_pills';\nimport './multiselect_list';\nimport './rating';\n\nfrappe.ui.form.make_control = function (opts) {\n\tvar control_class_name = \"Control\" + opts.df.fieldtype.replace(/ /g, \"\");\n\tif(frappe.ui.form[control_class_name]) {\n\t\treturn new frappe.ui.form[control_class_name](opts);\n\t} else {\n\t\t// eslint-disable-next-line\n\t\tconsole.log(\"Invalid Control Name: \" + opts.df.fieldtype);\n\t}\n};\n\n"],"names":["frappe","_","get_data_uri","element","const","$element","$","width","height","$canvas","getContext","drawImage","toDataURL","ui","Capture","[object Object]","options","this","OPTIONS","set_options","Object","navigator","mediaDevices","getUserMedia","video","then","stream","dialog","Dialog","title","animate","action","secondary","label","$e","TEMPLATE","find","srcObject","play","body","html","hide","click","data_url","attr","show","callback","render","catch","err","error","alert","show_alert","fn","__","ERR_MESSAGE","form","Control","Class","extend","init","opts","make","boot","user","developer_mode","$wrapper","df","fieldname","render_input","refresh","make_wrapper","fieldtype","wrapper","get","fieldobj","appendTo","parent","toggle","hidden","get_status","explain","doctype","docname","parenttype","cint","console","log","hidden_due_to_dependency","read_only","status","perm","get_field_display_status","model","get_doc","frm","only_input","is_null","get_value","in_list","disp_status","toggleClass","refresh_input","value","show_translatable_button","doc","translatable","can_write","views","TranslationManager","length","translation_btn","on","__islocal","source_name","target_language","language","locals","get_model_value","set_value","validate_and_set_in_model","parse_validate_and_set_in_model","e","parse","me","force_value_set","__run_link_triggers","is_value_same","inside_change_event","Promise","resolve","set","run_serially","set_model_value","set_mandatory","change","onchange","let","apply","set_invalid","validate","get_input_value","undefined","last_value","set_input","set_focus","$input","focus","ControlInput","horizontal","_super","set_input_areas","set_max_width","toggle_label","toggle_description","input_area","label_area","label_span","$input_wrapper","disp_area","addClass","make_input","has_input","on_make","update_input","prop","set_disp_area","set_description","set_label","set_bold","utils","escape_html","display_value","format","no_icon","inline","_label","innerHTML","description","_description","set_empty_description","set_new_description","reqd","invalid","grid","parents","grid_row","columns","is_invalid","bold","ControlData","html_element","input_type","trigger_change_on_input_event","prependTo","set_input_attributes","input","bind_change_event","setup_autoname_check","change_handler","debounce","meta","get_meta","autoname","substr","timeout","setTimeout","last_check","clearTimeout","db","val","name","placeholder","input_css","css","input_class","set_formatted_input","format_for_input","v","is_filter","validate_phone","email_list","split_emails","email_invalid","forEach","email","validate_email","ControlInt","document","activeElement","select","eval_expression","match","eval","ControlFloat","isNaN","parseFloat","flt","get_precision","number_format","trim","get_number_format","formatted_value","format_number","Number","currency","get_field_currency","precision","sysdefaults","float_precision","ControlPercent","ControlCurrency","currency_precision","get_number_format_info","ControlDate","set_date_options","set_datepicker","set_t_for_today","datepicker","should_refresh","selectedDates","moment","date_format","selectDate","datetime","str_to_obj","clear","lang","now_date","Date","today_text","defaultDateFormat","datepicker_options","autoClose","todayButton","dateFormat","startDate","keyboardNav","onSelect","trigger","onShow","$datepicker","text","update_datepicker_position","position","window","scrollTop","offset","top","update","data","get_now_date","which","nowdate","now_datetime","now_time","user_to_str","str_to_user","sys_defaults","msgprint","ControlTime","timepicker","onlyTimepicker","timeFormat","date_obj","moment_to_date_obj","is_timezone_same","includes","time_zone","ControlDatetime","defaultDatetimeFormat","ControlDateRange","range","toggleSelected","value2","formatted","to","replace","vals","split","user_to_obj","value1","ControlSelect","append","input_value","JSON","stringify","last_options","selected","empty","add_options","get_file_attachment_list","fl","docinfo","attachments","each","i","f","push","file_url","options_list","j","is_value_null","is_label_null","is_disabled","Boolean","disabled","cstr","selectedIndex","set_working","done_working","jQuery","o","count","isOpened","setAttribute","instance","properties","initial","attrValue","getAttribute","toLowerCase","parseInt","Function","configure","minChars","maxItems","autoFirst","DATA","filter","FILTER_CONTAINS","sort","SORT_BYLENGTH","container","CONTAINER","item","ITEM","REPLACE","tabSelect","index","ul","create","role","id","inside","className","aria-live","aria-atomic","textContent","_events","evaluate","bind","blur","close","reason","keydown","evt","c","keyCode","opened","preventDefault","submit","mousedown","li","target","test","nodeName","parentNode","button","hasAttribute","list","removeAttribute","all","Suggestion","Array","isArray","prototype","_list","indexOf","children","items","slice","el","fire","open","goto","destroy","unbind","insertBefore","removeChild","indexOfAwesomplete","splice","next","previous","pos","lis","offsetTop","clientHeight","suggestions","origin","siblingIndex","suggestion","map","appendChild","RegExp","regExpEscape","FILTER_STARTSWITH","a","b","around","item_id","aria-selected","defineProperty","String","toString","valueOf","expr","con","querySelector","$$","call","querySelectorAll","tag","createElement","ref","event","addEventListener","removeEventListener","type","createEvent","initEvent","dispatchEvent","s","previousElementSibling","self","Awesomplete","Document","readyState","module","exports","ControlLink","$input_area","$link","$link_open","get_options","get_form_link","translate_values","setup_buttons","setup_awesomeplete","get_reference_doctype","get_route","with_link_btn","remove","open_advanced_search","LinkSelector","txt","new_doc","get_route_options_for_new_doc","route_options","name_field","_from_link","_from_link_scrollY","make_quick_entry","cache","awesomplete","d","get_item","term","args","ignore_user_permissions","reference_doctype","set_custom_query","method","no_spinner","r","is","results","merge_duplicates","filters","filter_string","get_filter_description","only_select","can_create","z-index","autocomplete_open","originalEvent","remember_last_selected_value","last_selected_values","reduce","newArr","currElem","element_with_same_value","filter_array","with_doctype","docfield","get_docfield","unscrub","join","set_nulls","obj","key","get_query","isPlainObject","query","q","ignore_link_validation","validate_link_and_fetch","fetch","fetch_dict","message","fetch_values","set_fetch_values","valid_value","fields","ControlDynamicLink","cur_dialog","cur_frm","selector","cur_list","filter_area","standard_filters_wrapper","cur_page","page","is_single","throw","ControlText","ControlLongText","ControlSmallText","ControlCode","editor","load_lib","make_ace_editor","ace_editor_target","ace","edit","setTheme","set_language","session","language_map","Javascript","JS","HTML","CSS","Markdown","SCSS","valid_languages","keys","warn","ace_language_mode","setMode","setValue","getValue","library_loaded","root_lib_path","require","config","factory","modules","installedModules","__webpack_require__","moduleId","l","m","getter","enumerable","Symbol","toStringTag","t","mode","__esModule","ns","n","object","property","hasOwnProperty","p","./assets/icons/align-center.svg","./assets/icons/align-justify.svg","./assets/icons/align-left.svg","./assets/icons/align-right.svg","./assets/icons/background.svg","./assets/icons/blockquote.svg","./assets/icons/bold.svg","./assets/icons/clean.svg","./assets/icons/code.svg","./assets/icons/color.svg","./assets/icons/direction-ltr.svg","./assets/icons/direction-rtl.svg","./assets/icons/dropdown.svg","./assets/icons/formula.svg","./assets/icons/header-2.svg","./assets/icons/header.svg","./assets/icons/image.svg","./assets/icons/indent.svg","./assets/icons/italic.svg","./assets/icons/link.svg","./assets/icons/list-bullet.svg","./assets/icons/list-check.svg","./assets/icons/list-ordered.svg","./assets/icons/outdent.svg","./assets/icons/strike.svg","./assets/icons/subscript.svg","./assets/icons/superscript.svg","./assets/icons/table.svg","./assets/icons/underline.svg","./assets/icons/video.svg","./blots/block.js","./blots/break.js","./blots/container.js","./blots/cursor.js","./blots/embed.js","./blots/inline.js","./blots/scroll.js","./blots/text.js","./core.js","./core/editor.js","./core/emitter.js","./core/instances.js","./core/logger.js","./core/module.js","./core/quill.js","./core/selection.js","./core/theme.js","./formats/align.js","./formats/background.js","./formats/blockquote.js","./formats/bold.js","./formats/code.js","./formats/color.js","./formats/direction.js","./formats/font.js","./formats/formula.js","./formats/header.js","./formats/image.js","./formats/indent.js","./formats/italic.js","./formats/link.js","./formats/list.js","./formats/script.js","./formats/size.js","./formats/strike.js","./formats/table.js","./formats/underline.js","./formats/video.js","./modules/clipboard.js","./modules/history.js","./modules/keyboard.js","./modules/syntax.js","./modules/table.js","./modules/toolbar.js","./modules/uploader.js","./node_modules/clone/clone.js","./node_modules/deep-equal/index.js","./node_modules/deep-equal/lib/is_arguments.js","./node_modules/deep-equal/lib/keys.js","./node_modules/eventemitter3/index.js","./node_modules/extend/index.js","./node_modules/fast-diff/diff.js","./node_modules/parchment/src/attributor/attributor.ts","__webpack_exports__","./node_modules/parchment/src/attributor/class.ts","./node_modules/parchment/src/attributor/store.ts","./node_modules/parchment/src/attributor/style.ts","./node_modules/parchment/src/blot/abstract/container.ts","./node_modules/parchment/src/blot/abstract/leaf.ts","./node_modules/parchment/src/blot/abstract/parent.ts","./node_modules/parchment/src/blot/abstract/shadow.ts","./node_modules/parchment/src/blot/block.ts","./node_modules/parchment/src/blot/embed.ts","./node_modules/parchment/src/blot/inline.ts","./node_modules/parchment/src/blot/scroll.ts","./node_modules/parchment/src/blot/text.ts","./node_modules/parchment/src/collection/linked-list.ts","./node_modules/parchment/src/error.ts","./node_modules/parchment/src/parchment.ts","./node_modules/parchment/src/registry.ts","./node_modules/parchment/src/scope.ts","./node_modules/quill-delta/lib/delta.js","./node_modules/quill-delta/lib/op.js","./quill.js","./themes/base.js","./themes/bubble.js","./themes/snow.js","./ui/color-picker.js","./ui/icon-picker.js","./ui/icons.js","./ui/picker.js","./ui/tooltip.js","0","fonts","get_font_name","font","font_names","font_styles","font_name","node","Block","Quill","import","tagName","register","CodeBlockContainer","Table","superCreate","classList","add","Link","MyLink","super","sanitize","startsWith","location","host","Uploader","DEFAULTS","mimetypes","BackgroundStyle","ColorStyle","FontStyle","AlignStyle","DirectionStyle","Font","whitelist","ControlTextEditor","make_quill_editor","quill","quill_container","get_quill_options","bind_events","delta","oldDelta","source","is_quill_dirty","root","get_key","stopPropagation","currentTarget","table","getModule","insertTable","insertRowAbove","insertRowBelow","insertColumnLeft","insertColumnRight","deleteRow","deleteColumn","deleteTable","balanceTables","toolbar","get_toolbar_options","theme","header","color","background","direction","align","indent","dom","remove_script_and_style","clipboard","convert","setContents","setText","$value","$parent","$children","$ul","replaceWith","convertLists","richtext","tempEl","startTag","endTag","from","outerListEl","listChildren","lastLiLevel","currentLiLevel","difference","currentLi","getListLevel","before","repeat","after","newContent","Keys","TAB","ENTER","ESCAPE","UP","DOWN","Embed","MentionBlot","denotationChar","dataset","link","domNode","blotName","Mention","isOpen","itemIndex","mentionCharPos","cursorPos","values","suspendMouseEnter","renderItem","searchTerm","mentionDenotationChars","allowedChars","maxChars","offsetLeft","isolateCharacter","fixMentionsToQuill","defaultMenuOrientation","assign","mentionContainer","style","cssText","onmousemove","onContainerMouseMove","mentionList","onTextChange","onSelectionChange","keyboard","addBinding","selectHandler","bindings","unshift","pop","escapeHandler","upHandler","downHandler","selectItem","hideMentionList","prevItem","nextItem","visibility","display","setMentionContainerPosition","scrollItemInView","childNodes","itemHeight","offsetHeight","itemPos","containerTop","containerBottom","itemLink","getItemData","deleteText","sources","API","insertEmbed","insertText","setSelection","highlightItem","stopImmediatePropagation","mentionChar","onmouseenter","onItemMouseEnter","onclick","onItemClick","showMentionList","topPos","containerPos","pageYOffset","innerHeight","leftPos","offsetWidth","left","pageXOffset","documentElement","clientWidth","getBoundingClientRect","getBounds","containerHeight","right","rightPos","containerRightIsNotVisible","containerWidth","overMentionCharPos","bottom","containerBottomIsNotVisible","getSelection","startPos","Math","max","beforeCursorPos","getText","mentionCharIndex","prev","cur","previousIndex","mentionIndex","lastIndexOf","textAfter","substring","hasValidChars","renderList","onSomethingChange","ControlComment","comment_wrapper","no_wrapper","update_state","on_submit","strip_html","removeClass","mention","get_mention_options","mentions","at_values","matches","is_rtl","ControlCheck","is_web_form","checked","ControlImage","margin","$body","margin-bottom","$img","$buffer","ControlAttach","on_attach_click","bind_actions_with_object","toggle_reload_button","clear_attachment","remove_attachment_by_filename","docstatus","save","dataurl","fileobj","reload_attachment","file_uploader","uploader","upload_files","set_upload_options","FileUploader","upload_options","allow_multiple","on_success","file","on_upload_complete","parts","filename","attachment","update_attachment","files","ControlAttachImage","popover","placement","content","restrictions","allowed_file_types","GridRowForm","row","make_form","form_area","layout","Layout","docfields","no_submit_on_enter","fields_dict","fieldinfo","fi","toggle_add_delete_button_display","open_grid_row","template","set_row_index","set_form_events","insert","move","toggle_view","add_new_row","idx","is_editable","field","refresh_dependency","first","GridRow","on_grid_fields_dict","on_grid_fields","columns_list","row_check_html","hasClass","allow_on_grid_editing","editable_grid","render_template","render_row","set_data","__checked","refresh_remove_rows_button","get_open_form","hide_form","script_manager","clear_doc","dirty","trace","get_data","findIndex","below","duplicate","copy_doc","prompt","default","_sortable","move_to","grid_form","row_display","row_index","get_format_helper","setup_columns","add_open_form_button","refresh_check","in_place_edit","open_form_button","is_too_small","margin-right","ci","focus_set","setup_visible_columns","visible_columns","colsize","column","refresh_field","make_column","add_class","$col","editable_row","out","toggle_editable_row","col","field_area","static_area","column_index","make_control","get_field","field_on_change_function","grid_rows","set_arrow_keys","UP_ARROW","DOWN_ARROW","move_up_down","base","altKey","shiftKey","last_column","set_focus_on_row","get_open_grid_form","open_row","show_form","cannot_add_rows","freeze","cur_grid","is_element_in_viewport","scroll_to","parentfield","unfreeze","blacklist","in_list_view","get_perm","permlevel","layout_fields","set_property","refresh_sections","set_field_property","editable","close_grid_form","open_form","Grid","fields_map","multiple_set","__form_grid_templates","is_grid","is_xs","form_grid","custom_buttons","grid_buttons","remove_rows_button","setup_allow_bulk_edit","setup_check","on_setup","$check","grid_rows_by_docname","tasks","get_selected_children","header_row","parent_df","force","$rows","setup_fields","display_status","make_head","truncate_rows","ri","setup_toolbar","toggle_checkboxes","is_sortable","sortable_setup_done","make_sortable","last_display_status","last_docname","get_docfields","Sortable","group","handle","draggable","animation","onMove","dragged","closest","onUpdate","renumber_based_on_dom","get_modal_data","deleted_docs","fname","set_editable_grid_column_disp","enable","get_row","add_child","duplicate_row","__unedited","$item","total_colsize","editable_fields","_df","formatter","docfield_map","passes","std_fields_list","static_rows","sortable_status","qty","link_field","btn","qty_fieldname","allow_bulk_edit","setup_download","flags","no_socketio","as_dataurl","csv_to_array","get_decoded_string","fieldnames","clear_table","blank_row","indicator","is_value_type","tools","downloadify","ControlTable","grids","pastedData","cur_table_field","cur_field","cur_grid_rows","cur_doctype","cur_row_docname","row_idx","clipboardData","getData","name_or_label","shift","get_visible_columns","cur_row","row_name","show_progress","hide_progress","check_all_rows","ControlColor","colors","make_color_input","$color_pallete","color_html","get_color_box","hex","contrast","get_contrast_color","background-color","mousedown_happened","color_val","ControlSignature","saving","loading","make_pad","img_wrapper","img","$pad","jSignature","lineWidth","on_save_sign","load_pad","$reset_button_wrapper","on_reset_sign","set_editable","set_image","set_my_value","base64_img","ControlPassword","check_password_timeout","get_password_strength","new_password","entropy","score","feedback","crack_time_display","set_strength_indicator","ControlReadOnly","ControlButton","has_handlers","run_server_script","docs","exc","refresh_fields","icon","ControlHTML","get_content","ControlMarkdownEditor","editor_class","wrap","markdown_container","showing_preview","preview_toggle_btn","update_preview","$btn","markdown_preview","prepend","markdown","ControlHTMLEditor","ControlHeading","ControlAutocomplete","setup_awesomplete","_data","parse_options","get_awesomplete_settings","max_items","hay","ignore_validation","valid_values","Barcode","Constructor","TypeError","_classCallCheck","_createClass","defineProperties","props","descriptor","configurable","writable","protoProps","staticProps","_Barcode3","_Barcode2","CODE39","_Barcode","characterValue","toUpperCase","mod43","checksum","mod43checksum","characters","ReferenceError","_possibleConstructorReturn","__proto__","getPrototypeOf","subClass","superClass","constructor","setPrototypeOf","_inherits","result","getEncoding","search","encodings","character","getBinary","_SET_BY_CODE","_defineProperty","SET_A","SET_B","SET_C","START_A","START_B","START_C","101","100","99","fromCharCode","CODE128","_this","bytes","char","charCodeAt","startIndex","startSet","_constants","SET_BY_CODE","RangeError","shouldEncodeAsEan128","FNC1","encodingResult","getBar","MODULO","STOP","isEAN128","ean128","BARS","charCode","nextCode","nextSet","SWAP","SHIFT","correctIndex","weight","matchSetALength","string","A_CHARS","matchSetBLength","B_CHARS","matchSetC","C_CHARS","autoSelectFromAB","isA","ranges","untilC","autoSelectFromC","chars","cMatch","newString","C_START_CHAR","A_START_CHAR","B_START_CHAR","_CODE3","_interopRequireDefault","_CODE2","_auto2","_auto","CODE128AUTO","_CODE","CODE128A","CODE128B","CODE128C","_CODE128_AUTO2","_CODE128_AUTO","_CODE128A2","_CODE128A","_CODE128B2","_CODE128B","_CODE128C2","_CODE128C","L","G","R","O","E","structure","separator","encoded","BINARIES","last","_encoder2","_encoder","EAN","fontSize","flat","guardHeight","textMargin","encodeFlat","encodeGuarded","textOptions","guardOptions","SIDE_BIN","leftEncode","leftText","MIDDLE_BIN","rightEncode","rightText","_get","receiver","desc","getOwnPropertyDescriptor","_EAN3","_EAN2","number","sum","EAN13","_EAN","lastChar","EAN13_STRUCTURE","displayValue","textAlign","EAN8","EAN5","EAN5_STRUCTURE","EAN2","EAN2_STRUCTURE","UPC","flatEncoding","guardedEncoding","EXPANSIONS","PARITIES","UPCE","isValid","middleDigits","upcA","expandToUPCA","encodeMiddleDigits","numberSystem","checkDigit","parity","lastUpcE","expansion","digitIndex","_UPC","_EAN4","_EAN6","_EAN5","_EAN8","_EAN7","_UPC2","_UPCE2","_UPCE","ITF","arguments","_this2","pair","encodePair","START_BIN","END_BIN","second","_ITF3","_ITF2","res","num","ceil","ITF14","_ITF","_ITF4","MSI","ret","bin","addZeroes","floor","weights","_MSI3","_MSI2","MSI10","_MSI","_checksums","mod10","MSI11","mod11","MSI1010","MSI1110","_MSI4","_MSI6","_MSI5","_MSI8","_MSI7","_MSI10","_MSI9","pharmacode","z","codabar","getEncodings","charAt","1","2","3","4","5","6","7","8","9","-",":","/",".","+","A","B","C","D","GenericBarcode","_EAN_UPC","_pharmacode","_codabar","_GenericBarcode","_extends","old","replaceObj","linearEncodings","nextLevel","marginTop","marginBottom","marginRight","marginLeft","intOptions","intOption","defaults","fontOptions","textPosition","lineColor","valid","_optionsFromStrings2","_optionsFromStrings","_defaults2","_defaults","_merge2","_merge","getEncodingHeight","encoding","getBarcodePadding","textWidth","barcodeWidth","messureText","context","ctx","measureText","maxHeight","barcodeOptions","barcodePadding","totalWidth","CanvasRenderer","canvas","Error","prepareCanvas","encodingOptions","drawCanvasBarcode","drawCanvasText","moveCanvasDrawing","restoreCanvas","_shared","calculateEncodingAttributes","getTotalWidthOfEncodings","getMaximumHeightOfEncodings","clearRect","fillStyle","fillRect","translate","yFrom","binary","x","y","fillText","restore","svgns","SVGRenderer","svg","xmlDocument","currentX","prepareSVG","createGroup","setGroupOptions","drawSvgBarcode","drawSVGText","firstChild","setSvgAttributes","drawRect","barWidth","textElem","createElementNS","createTextNode","rect","ObjectRenderer","_canvas2","_canvas","_svg2","_svg","_object2","_object","InvalidInputException","_Error","symbology","InvalidElementException","_Error2","NoElementException","_Error3","_this3","_typeof","iterator","_getOptionsFromElement2","_getOptionsFromElement","_renderers2","_renderers","getRenderProperties","returnArray","querySelectedRenderProperties","HTMLCanvasElement","HTMLImageElement","imgElement","renderer","afterRender","SVGElement","_exceptions","ErrorHandler","api","_options","func","handleCatch","_barcodes2","_barcodes","_linearizeEncodings2","_linearizeEncodings","_fixOptions2","_fixOptions","_getRenderProperties2","_getRenderProperties","_ErrorHandler2","_ErrorHandler","JsBarcode","_renderProperties","_encodings","_errorHandler","autoSelectBarcode","registerBarcode","barcodes","wrapBarcodeCall","newOptions","Encoder","encode","encoder","renderProperties","Renderer","blank","size","zeroes","renderProperty","elementArray","ControlBarcode","default_svg","barcode_area","get_barcode_html","barcode_value","is_json","valueField","ControlGeolocation","map_id","get_unique_id","map_area","make_map","bind_leaflet_map","bind_leaflet_draw_control","bind_leaflet_locate_control","bind_leaflet_refresh_button","clear_editable_layers","data_layers","FeatureGroup","addLayer","geoJson","pointToLayer","geoJsonPoint","latlng","point_type","circle","radius","circleMarker","marker","add_non_group_layers","editableLayers","flyToBounds","padding","addTo","_onResize","toGeoJSON","locate_control","start","circleToGeoJSON","Circle","include","feature","getRadius","CircleMarker","Icon","Default","imagePath","setView","tileLayer","attribution","control","locate","draw","polyline","shapeOptions","polygon","allowIntersection","drawError","rectangle","clickable","featureGroup","drawControl","Draw","addControl","layerType","layer","bindPopup","removeLayer","easyButton","leafletClasses","states","stateName","onClick","source_layer","target_group","LayerGroup","eachLayer","ControlMultiSelect","settings","getMatch","op","option","get_values","ControlMultiCheck","$label","$load_state","$select_buttons","get_select_buttons","get_column_size","$checkbox_area","bind_checkboxes","select_options","selected_options","parse_df_options","make_checkboxes","checkbox","get_checkbox_element","danger","$checkbox","select_all","setup_select_all","set_checked_options","option_name","on_change","deselect","get_checked_options","get_unchecked_options","column_size","ControlTableMultiSelect","rows","decodeURIComponent","get_link_field","set_route","BACKSPACE","all_rows_except_last","link_value","validated_value","set_pill_html","get_pill_html","encodeURIComponent","_link_field","ControlMultiSelectPills","$multiselect_wrapper","ControlMultiSelectList","$list_wrapper","$filter_input","$target","toggle_select_item","filtered_options","opt","_selected_values","concat","uniqBy","set_selectable_items","highlight_item","_$last_highlighted","highlighted","set_status","get_placeholder_text","$selectable_item","update_selected_values","update_status","promise","process_options","encoded_value","$items","scroll_dropdown_if_needed","scrollIntoView","behavior","block","ControlRating","hover","ev","star_value","prevObject","control_class_name"],"mappings":"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"}